Skip to main content
Zapyd moves money across borders with a stablecoin sandwich. Fiat in one country becomes USDC, and that USDC becomes fiat in another. USD to MXN, for example, is two orders:

Leg 1: onramp

USD to USDC with a payin. Skip this leg if you already hold stablecoins.

Leg 2: offramp

USDC to MXN with a payout or a prefunded payout to the beneficiary’s bank account.
There is no separate cross-border API. You run the two legs with the payin and payout APIs, and each leg has its own quotation, status and webhook. The Flow Builder shows every call for any pair of currencies.

Leg 1: onramp

Payins run in the United States (USD) and India (INR). Follow the payins guide, then use the USDC you receive to fund leg 2, per order or by topping up your prefunded balance.

Leg 2: offramp

The destination decides which API pays out. Each supports the prefunded model (top up once, each payout debits the balance) and the per-order model (send each quotation’s sending_amount to its wallet_address, then initiate with the transaction_hash).

Purpose of the transfer

On payout-only bank accounts, the bank account carries the reason for the payment: The full list of purposes is in payout-only onboarding.

Standard payouts

The offramp leg is a standard payout. Onboard the beneficiary, add their bank account, then run the payout flow or the prefunded payout flow.

Onboard the beneficiary

Create the customer with POST /customer/payout/create and their country’s alpha_3_country_code. Then call POST /kyc/payout/add-kyc-data and POST /kyc/payout/add-sender-kyc-data with the address fields and identifiers that country needs.

Add the bank account with a purpose

Call POST /bank/payout/create. Set transfer_purpose to the reason for the transfer, and is_self_transfer to false because the sender and the beneficiary are different people. This example is a beneficiary in the Philippines:
Common purposes for remittances are FAMILY_MAINTENANCE, EDUCATION and MEDICAL_TREATMENT. Without these fields, the account defaults to TRANSFER_TO_OWN_ACCOUNT and is_self_transfer: true.

Quote and pay out

Create a payout quotation with customer_id and bank_id, fund it, and initiate. Tracking and webhooks are the same as any payout.
Each country has its own methods and required fields. See the country table before you build the onboarding screens.