Skip to main content
INR remittance lets you pay out Indian Rupees to a beneficiary’s bank account in India. One request carries the sender, the beneficiary and the bank account, and the payout is processed asynchronously. Every remittance follows the same three steps: Create Payout → Track Status → Reconcile.
Sender, beneficiary and bank account details are sent inline. There are no separate Create User, KYC or Bank Account Linkage calls. Each stage runs inside the transaction and is reported as a status.
1

Create Payout

Authenticate with your API key, timestamp and HMAC signature. See API Authentication. Do not send X-User-Id on this endpoint.
Response (201 Created):
Save id. It identifies the remittance in every later call and webhook.
idempotency_key is single use, and client_reference_id must be unique per client. A repeated value is rejected rather than returning the original transaction.
Instead of resending party or bank details on later payouts, reuse the sender_id, beneficiary_id and beneficiary_instrument_id returned on the transaction as sender.id, beneficiary.id and beneficiary_instrument.id.
2

Track Status

The remittance moves through sender KYC, beneficiary KYC and bank account verification before the payout. Saber sends a webhook for each status change to the callback URL configured for your account. See Webhook Configuration.Webhook body:
data is the full transaction object, the same shape as the status endpoint returns.
The webhook body is not signed. Treat it as a notification and read the authoritative state with the status endpoint. Webhooks are delivered at least once and not in order. Deduplicate on data.id + data.status, and ignore any webhook whose updated_at is older than the state you hold.
3

Reconcile

Fetch a single remittance, or list remittances, to confirm state or recover a missed webhook. See Checking status below.
Use client_reference_id to find the original transaction after a timeout or a duplicate-key rejection.

Checking status

To list remittances:
Newest first. Filter by status (repeat the parameter for several values), client_reference_id, created_after and created_before. Returns transactions and a total count.
A 404 (403026, transaction not found) straight after the 201 for the same id is transient. Retry the request.
Poll until the status reaches a terminal state, or rely on webhooks to receive status changes instead.

Mandatory fields

Fields not listed here are optional. For the sender, the beneficiary and the bank account, send either a saved id from an earlier transaction or the full details, not both.

Request

Sender and beneficiary details

Mandatory inside travel_rule_data:
last_name is mandatory for both parties. A payout without it is rejected.
A beneficiary without a proof_of_identification_number is accepted only for clients enabled for it. Contact your Saber representative to have it enabled.

Bank account

Mandatory inside beneficiary_instrument:

Optional fields

  • Request: client_reference_id, purpose_code
  • Party details: proof_of_identification_type, proof_of_identification_name, proof_of_identification_validity, date_of_birth, email, phone, address.line2, address.city, address.state, address.postal_code
  • Bank account: account_type, routing_type, bank_name, is_nre
email and phone may be mandatory for your client account. Confirm with your Saber representative.

Payout rails and settlement

  • The remittance amount (from_amount) is debited from your pool account, so keep it funded. See Pool Account Overview.
  • Saber pays out in INR to an Indian bank account (SAVINGS , NRE/NROor CURRENT) identified by IFSC. The payment method is bank_transfer.
  • Amounts are decimal strings, timestamps are Unix epoch milliseconds, and absent values are null.
  • to_amount and exchange_rate are null until the remittance is COMPLETED.
  • A failed remittance is terminal. To retry, send a new payout with a new idempotency_key and a new client_reference_id.

API Authentication

Webhook Configuration

Pool Account Overview

INR Offramp