Skip to main content
POST
Link tokenized rail identifier
Send the provider’s opaque providerIdentifierToken with its rail, identifierType, country, currency and the display fields displayLabel and maskedIdentifier. Raw rail aliases, raw bank identifiers and raw QR payloads are rejected by design. The identifier stays a pending destination until provider verification and payout execution are available. Idempotency-Key is required and must contain 1–256 characters after trimming surrounding whitespace. Retry the identical request with the same key; changed input returns a conflict.

Authorizations

Authorization
string
header
required

HTTP Basic auth. Username is the Stableyard app ID. Password is the app secret. The optional Stableyard-Version request header must match the environment pin.

Headers

Idempotency-Key
string
required

Required retry key for linking a bank account or rail identifier: 1-256 characters after trimming surrounding whitespace. Retry the identical request with the same key; changed input returns a conflict.

Required string length: 1 - 256
Example:

"bank-beneficiary-supplier-123"

Stableyard-Version
enum<string>

Optional contract-version assertion. Omit it to use the app environment's pinned version. A different supported version is accepted only after that environment is explicitly migrated.

Available options:
2026-09-09

Path Parameters

accountId
string
required

Canonical account id returned by the Accounts API.

Example:

"acct_123"

Body

application/json
provider
string
required
Pattern: ^[a-z0-9][a-z0-9_-]{1,63}$
Example:

"provider_code"

providerIdentifierToken
string
required
write-only

Opaque provider token. Raw rail aliases and raw QR payloads are rejected by design.

Required string length: 8 - 512
Example:

"rail_provider_token_opaque_123"

rail
string
required
Required string length: 1 - 64
Example:

"upi"

identifierType
string
required
Required string length: 1 - 64
Example:

"vpa"

displayLabel
string
required
Required string length: 1 - 160
Example:

"Business account"

maskedIdentifier
string
required
Required string length: 1 - 160
Example:

"mi***@bank"

country
string
required
Pattern: ^[A-Za-z]{2}$
Example:

"IN"

currency
string
required
Pattern: ^[A-Za-z]{3}$
Example:

"INR"

Response

Linked rail identifier

paymentRailIdentifier
object
required
settlementDestination
object
required