> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.sqril.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.sqril.io/_mcp/server.

# Manual Payment

## Flow

1. `POST /lookupPaymentCode` with the typed destination. This validates the destination and creates a PENDING transaction (same shape as `decodeQr`).
2. `POST /getQuotation` with the returned `tx_id` and the amount.
3. `POST /executePayout` with a fresh `X-Idempotency-Key` header.

The destination itself never carries an amount; the amount is set at quotation time.

## Request fields

| Field                      | Required       | Notes                                                     |
| -------------------------- | -------------- | --------------------------------------------------------- |
| `country_code`             | yes            | See the table below                                       |
| `payment_destination`      | yes            | The typed destination: key, phone, or account number      |
| `payment_method`           | yes            | Fixed per country, see below                              |
| `payment_destination_code` | some countries | See notes per country                                     |
| `customer_id`              | yes            | Registered customer; sender identity always comes from it |

## Destinations by country

| Country        | `payment_method` | `payment_destination`                                       | Notes                                                                            |
| -------------- | ---------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Argentina (AR) | `payment_key`    | CBU, CVU, or alias                                          | Phone numbers are not payment keys in Argentina                                  |
| Brazil (BR)    | `payment_key`    | PIX key: phone (+55 format), email, CPF/CNPJ, or random key |                                                                                  |
| Peru (PE)      | `ewallet`        | Phone number                                                | `payment_destination_code`: `YAPE` or `PLIN`                                     |
| Bolivia (BO)   | `bank_transfer`  | Bank account number                                         | Requires `account_type` (`SAVINGS` or `CHECKING`), bank code, and recipient name |
| Colombia (CO)  | `payment_key`    | Bre-B key                                                   |                                                                                  |
| Nigeria (NG)   | `bank_transfer`  | Account or mobile wallet number                             | Institution code from `listBanks`                                                |
| Ghana (GH)     | `bank_transfer`  | Account or mobile wallet number                             | Institution code from `listBanks`                                                |
| Zambia (ZM)    | `bank_transfer`  | Bank account number                                         | Bank code from `listBanks`; banks only                                           |
| Kenya (KE)     | `payment_key`    | Till or paybill number                                      | Optional `payment_destination_code`: `TILL` or `PAYBILL`                         |
| Tanzania (TZ)  | `payment_key`    | Till or paybill number                                      | Optional `payment_destination_code`: `TILL` or `PAYBILL`                         |
| Uganda (UG)    | `payment_key`    | Till or paybill number                                      | Optional `payment_destination_code`: `TILL` or `PAYBILL`                         |

Destinations are validated at `lookupPaymentCode` time; an invalid or unknown destination fails there, before any quotation or payout.