Transfers

Transfers

The remittance. Creates funding instructions, ends with a UTR.

Create a transfer#

POST/v1/transfers
sender_idstringRequired

A sender_… ID.

beneficiary_idstringRequired

An active beneficiary with payouts_enabled: true.

amountstringRequired

Decimal string in currency.

currencystringRequired

USD.

payout_currencystringRequired

INR.

fundingobjectRequired

rail: stablecoin or bank. For stablecoin, add asset and chain — see rails.

quote_lock_idstring

Fixes the rate. Omit to take the rate at conversion.

metadataobject

Your own key-value references.

JSON
{
  "sender_id": "sender_01K5X8QR7M3PZ2VDNW4TBGCFH1",
  "beneficiary_id": "beneficiary_01K5X8QP2A9WKXR6MJ4EYT7NDV",
  "amount": "1000.00",
  "currency": "USD",
  "payout_currency": "INR",
  "quote_lock_id": "quote_lock_01K5X8QS5H2NBVCXZ8MJQ3WRFT",
  "funding": { "rail": "stablecoin", "asset": "USDT", "chain": "tron" },
  "metadata": { "internal_ref": "REM-9912" }
}

Fund it#

RailReturns
stablecoindeposit_address — send exactly amount of asset on chain
bankAccount and routing numbers

The payout object#

Filled in once INR settles:

JSON
"payout": {
  "status": "settled",
  "amount": "82833.30",
  "currency": "INR",
  "unique_transaction_reference": "HDFCN52026091212345678",
  "payment_advice_url": "https://...",
  "settled_at": 1789048800
}

unique_transaction_reference is the bank UTR — share it with the beneficiary.

Statuses#

Forward only. Never backwards.

createdquotedfundingfundeddeposit_confirmedcompliance_reviewconvertingpayout_initiatedpayout_settledcompleted

Happy path#

StatusMeaningYour move
createdAccepted
quotedRate attached
fundingWaiting for your fundsSend funds
fundedFunds sent, unconfirmed
deposit_confirmedFunds received
compliance_reviewRegulatory checks
convertingUSD → INR
payout_initiatedSent to the beneficiary's bank
payout_settledCredited. UTR availableShare the UTR
completedPayment advice availableStore the advice

Exceptions#

StatusMeaning
funding_failedFunds didn't arrive as instructed
deposit_reversedReceived funds were reversed
compliance_input_requiredMore information needed — contact us
compliance_holdHeld for review
payout_holdPayout paused
payout_failedBeneficiary bank rejected the credit
payout_returnedCredit returned by the bank
cancelledCancelled before funding

Preview

Retry behaviour after payout_failed and payout_returned isn't final.

Rules#

  • A status never moves backwards. Late or duplicate webhooks never regress it.
  • payout_settled means the bank accepted the credit. The balance may show a little later, depending on the rail.
  • Subscribe to transfer.status.* webhooks instead of polling.

Retrieve#

GET/v1/transfers/:id

List#

GET/v1/transfers

Filter by status, beneficiary_id, created. Paginated.

Cancel#

POST/v1/transfers/:id/cancel

Before funds arrive only.

Preview a transfer#

POST/v1/transfers/:id/preview

Returns the expected settlement date and a timeline accounting for weekends and Indian bank holidays.