Both USDT and USDC are supported for IDR offramp.
1
Create User
user_id β every subsequent call needs it as the X-User-Id header.2
KYC
IDR supports two KYC methods:Headers: Response:Saber may request supporting KYC documents at any time β these must be shared within 72 hours of the request.
- KYC Sharing
- KYC Widget
X-User-Id: <user_id>3
Bank Account Linkage
First, fetch the list of supported banks and their codes. This lookup only works for Headers: Mandatory: Save
IDN β it returns an error for any other country:data is a flat map of bank name to bank_code β pass the code as-is into bank_code below.X-User-Id: <user_id>account_holder_name, account_number, bank_code, country. bank_bic is optional but recommended for maximum delivery rates and compatibility across multiple downstream partners.Response:This is the shared bank account response shape across corridors β fields not applicable to bank-code routing (e.g.
bic) are returned as null.bank_id for the sell step.4
Transaction
Two variants, both requiring a quote first β a Live Quote (informational, executes at market rate regardless) or a Locked Quote (rate held ~30-60s, supplied as Payment rail:
quote_id in the sell request):- Pool Sell (recommended)
- External Sell
Get an informational quote:Then create the sell:
payment_method: bank_transfer resolves automatically to the available local rail based on the transaction amount and the beneficiary bank.Checking status
Poll until the status reaches a terminal state, or configure a webhook URL to receive completion pushes instead β see Order Lifecycle and Webhooks.