Before you start
- Add the payout destination in the dashboard and copy its
recipient_id. - Complete Tier 2 business verification and receive approval for USD banking before quoting a USD bank payout.
- Choose one funding method: your Yara balance, an NGN bank transfer, or a supported stablecoin and network.
- Keep a unique
X-Idempotency-Keyfor each request. Reuse the same key when retrying that request.
Step 1 — Quote the transfer
The destination amount and funding source are separate. This example pays 100 USD and collects the funds by NGN bank transfer.Quote response
Step 2 — Create the transfer
RESERVED. Bank- and crypto-funded
transfers return AWAITING_MERCHANT_FUNDING with transfer-specific instructions.
Bank funding instructions
funding has no bank account or crypto address yet, Yara is retrying instruction provisioning.
Poll the funding endpoint:
Fund safely
- Use only the account, address, reference, asset, and network returned for this transfer.
- Never reuse instructions from another transfer.
- Send funds before
expires_at. - Do not infer a match from the amount and payment time. Yara uses the unique bank order or crypto address to map the receipt to one transfer.
required_amount exactly. Any underpayment or overpayment
is recorded as REQUIRES_REVIEW; Yara sends transfer.funding.flagged and does not automatically
credit, reserve, or refund the payment. This prevents a payer who sends less than instructed from
consuming your existing merchant balance.
An exact payment credits the quoted net USD value and drives reservation of the transfer’s fixed
debit.
Only one exact payment can credit a funding intent. A later exact provider transaction is retained
for audit, flagged, and cannot credit your balance again. If an exact payment arrives after
expires_at, Yara credits it to your general merchant balance but does not revive or reserve the
expired transfer.
Each accepted or flagged provider payment appears in funding_receipts on the transfer:
Track the transfer
Listen for webhooks, or fetch the transfer by itsid:
Listen for
transfer.submitted, transfer.succeeded, transfer.failed, and
transfer.requires_review. A timeout does not mean the payout failed. Yara reconciles its original
provider request and does not blindly create another payout.