# Look up recipient (/en/docs/conta-digital/endpoints/pix/post_pix_destination)

## POST /transactions/pix/destination

`POST https://api.hub.payzu.com.br/api/v1/transactions/pix/destination`

Scope: `PIX_DICT_READ`. Shows the holder and institution of a Pix key or Pix copy-and-paste code, to check before paying. Request limit: 30 lookups per minute per account.

### Body params

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `pixKey` | string | no | Pix key to look up. Send `pixKey` or `brCode`, never both. — minLength: 1; maxLength: 140 |
| `pixKeyType` | string | no | Key type. Only with `pixKey`. — `EVP`, `CNPJ`, `CPF`, `EMAIL`, `PHONE` |
| `brCode` | string | no | Pix copy-and-paste code to look up. — minLength: 8; maxLength: 1024 |

### Responses

**200** Recipient.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `source` | string | yes | What was looked up: `PIX_KEY` or `BR_CODE`. — `PIX_KEY`, `BR_CODE` |
| `pixKey` | string | yes | Destination key. CPF, email and phone keys are masked; CNPJ and random keys are shown in full. |
| `pixKeyType` | string | null | yes | Key type, inferred from the format. `null` when the format is not recognized. — `EVP`, `CNPJ`, `CPF`, `EMAIL`, `PHONE` |
| `holder` | object | null | yes | Key holder. `null` when there is no name or document. |
| `holder.name` | string | null | yes | Holder full name. |
| `holder.document` | string | null | yes | Masked CPF or formatted CNPJ. |
| `bank` | object | null | yes | Destination institution. `null` when the lookup did not happen. |
| `bank.name` | string | null | yes | Institution name. |
| `bank.ispb` | string | null | yes | Institution ISPB. |
| `bank.branch` | string | null | yes | Branch. |
| `bank.accountNumber` | string | null | yes | Masked account, with the last four digits visible. |
| `amount` | integer | null | yes | Amount fixed in the Pix copy-and-paste code. Always `null` for a key. In cents. |
| `isAmountFixed` | boolean | yes | `true` when `amount` is not `null`. |
| `isVerified` | boolean | yes | `true` when the name came from DICT; `false` when it came from the Pix copy-and-paste code itself. |

**400** Invalid request.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Description in Portuguese, ready to display. It may change at any time. |
| `code` | string | yes | Stable error code. Your system decides what to do based on it. |
| `details` | object | no | Structured error context, when available. |

**401** Missing, invalid or expired credential.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Description in Portuguese, ready to display. It may change at any time. |
| `code` | string | yes | Stable error code. Your system decides what to do based on it. |
| `details` | object | no | Structured error context, when available. |

**403** Not allowed: scope, IP or disabled operation.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Description in Portuguese, ready to display. It may change at any time. |
| `code` | string | yes | Stable error code. Your system decides what to do based on it. |
| `details` | object | no | Structured error context, when available. |

**404** Not found, or from another account.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Description in Portuguese, ready to display. It may change at any time. |
| `code` | string | yes | Stable error code. Your system decides what to do based on it. |
| `details` | object | no | Structured error context, when available. |

**412** A step is missing before this operation.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Description in Portuguese, ready to display. It may change at any time. |
| `code` | string | yes | Stable error code. Your system decides what to do based on it. |
| `details` | object | no | Structured error context, when available. |

**422** Business rule refusal.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Description in Portuguese, ready to display. It may change at any time. |
| `code` | string | yes | Stable error code. Your system decides what to do based on it. |
| `details` | object | no | Structured error context, when available. |

**429** Request limit exceeded.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Description in Portuguese, ready to display. It may change at any time. |
| `code` | string | yes | Stable error code. Your system decides what to do based on it. |
| `details` | object | no | Structured error context, when available. |

**502** The bank did not respond or refused.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Description in Portuguese, ready to display. It may change at any time. |
| `code` | string | yes | Stable error code. Your system decides what to do based on it. |
| `details` | object | no | Structured error context, when available. |

**503** Lookup service or rate limiter unavailable; nothing was done.

| Field | Type | Required | Details |
| --- | --- | --- | --- |
| `message` | string | yes | Description in Portuguese, ready to display. It may change at any time. |
| `code` | string | yes | Stable error code. Your system decides what to do based on it. |
| `details` | object | no | Structured error context, when available. |