A rail is the scheme on which a payout is settled. Each corridor is served by one or more local rails, together with swift for international transfers. A rail may be specified when creating a payout, or taken from a quote where one is bound. Where no rail is specified, swift is used.
| Rail | Name | Currency | Minimum | Maximum | Identifier |
|---|---|---|---|---|---|
upi | UPI | INR | ₹1 | ₹1,00,000 | UPI ID (VPA) |
imps | IMPS | INR | ₹1 | ₹5,00,000 | Account number and IFSC |
rtgs | RTGS | INR | ₹2,00,000 | ₹50,00,000 | Account number and IFSC |
neft | NEFT | INR | ₹1 | ₹1,00,00,000 | Account number and IFSC |
ipp | IPP | AED | AED 1 | AED 50,000 | IBAN |
fts | FTS | AED | AED 50,000 | No limit | IBAN |
sepa | SEPA | EUR | €1 | No limit | IBAN |
fps | Faster Payments | GBP | £1 | £1,000,000 | Account number and sort code |
swift | SWIFT | Any | No limit | No limit | Account number and SWIFT/BIC |
A rail is available only where the destination currency corresponds to that rail and the beneficiary holds the identifier on which the rail routes. A request for sepa on a GBP payout, or for fps against a beneficiary without a sort code, is rejected.
Where no rail is specified, swift is used. A local rail is not selected automatically; to settle on one, specify it explicitly or bind a quote.
A rail is not an input to a quote. A quote request returns one option for each rail that serves the corridor and admits the amount, each carrying its rail in payment_method.rail.
Currency refers to the destination currency, and the limits apply to the destination amount expressed in it.
A rail settles only while the system it routes on is open: the INR rails on Indian bank working days, swift on FX and SWIFT business days. The settlement holiday calendar lists the Indian and United States dates in 2026 on which those timelines may be affected.
| Corridor | Required fields |
|---|---|
| INR | account_number and the IFSC in local_routing_number; or a UPI ID for upi |
| AED | The IBAN in account_number; neither swift_code nor local_routing_number |
| EUR | The IBAN in account_number, issued in a SEPA scheme country; neither swift_code nor local_routing_number |
| GBP | The domestic account_number and the 6-digit sort code in local_routing_number |
| International | account_number and the swift_code |
Note: SEPA is IBAN-only. A EUR beneficiary is identified by its IBAN alone. A EUR account held outside the IBAN zone, such as a EUR account maintained at a US bank, remains supported: supply the
swift_codeand the account is treated as a SWIFT beneficiary.
Note: Faster Payments requires the domestic account number rather than a GB IBAN. The scheme routes on the sort code together with the account number, and a
GBIBAN supplied inaccount_numberdoes not qualify forfpseven where a valid sort code is present.
| Message | Description |
|---|---|
payment_rail is not available for <CURRENCY> payouts | The rail does not serve the specified destination currency |
Destination amount is outside the <Rail> limits | The amount falls above or below the limits for the rail |
No rails available for this beneficiary | The beneficiary does not hold the identifier on which the rail routes |
No available options for this amount | Every eligible rail was excluded by its limits |
local_transfer is not supported for <CURRENCY> destination | The corridor has no local rail |
account_number must be a SEPA IBAN | The IBAN is valid but was issued outside the SEPA scheme area |
account_number must be a valid IBAN | The account number is blank, contains spaces, or fails its checksum |