Skip to main content

Payment instruments

A payment instrument is a destination that can receive funds — a bank account, a digital wallet, an on-chain crypto wallet, a real-time-payment alias, or a card. Instruments appear in the Merchant API in two places:

  • On the way in — when you create a transfer, you describe the destination in payment_method.details.
  • On the way out — a TransferView returns the resolved destination as its payment_instrument object.

A payout has no instrument fields of its own: it reuses the instrument of the original payment you reference, so you never re-supply account details for a payout.

Instrument types

The type field selects the instrument kind and determines which fields are populated. Values are lowercase on the wire.

typeDestination
bank_accountA bank account (IBAN or account number + routing details).
walletA digital wallet such as Skrill, PayPal, or GCash. Addressed by holder_email / holder_phone.
crypto_walletAn on-chain wallet address.
real_time_paymentA real-time-payment alias (e.g. a Pix key, phone, PayID, or VPA).
cardA tokenized destination card.

Common fields

Every instrument, whatever its type, may carry these:

FieldTypeDescription
idstringThe stored instrument identifier (pi_...), on returned instruments.
typestringOne of the values above.
country_codestringISO 3166-1 alpha-2 country code.
holder_namestringFull name of the account/instrument holder.
holder_emailstringHolder email.
holder_phonestringHolder phone (also the recipient address for digital wallets).
document_idstringHolder tax/identity document number, where the rail requires it.

Fields by type

Beyond the common fields, each type adds its own. When creating a transfer these go inside payment_method.details; on a returned payment_instrument they appear at the top level. Which fields are required depends on the payment method, country, and provider.

bank_account

FieldTypeDescription
ibanstringAccount IBAN.
account_numberstringAccount number, where IBAN is not used.
bic_swiftstringBIC / SWIFT code.
bank_codestringNational bank/sort code.
branch_codestringBranch code, where applicable.
bank_namestringName of the bank.
account_typestringe.g. checking or savings.

wallet

No exclusive fields — the recipient is identified by the common holder_email / holder_phone. Which wallet it is comes from the transfer's payment_method.code.

crypto_wallet

FieldTypeDescription
wallet_addressstringThe on-chain destination address.

real_time_payment

FieldTypeDescription
account_referencestringThe RTP alias — a Pix key, phone number, PayID, or VPA.

card

FieldTypeDescription
card_tokenstringTokenized destination card reference. Required for a card destination.
card_brandstringCard brand, e.g. visa.
card_exp_monthintegerExpiry month.
card_exp_yearintegerExpiry year.
last4_digitsstringLast four digits of the card number.

Request-side details

When you create a transfer, payment_method.details accepts the union of the fields above plus a few holder attributes some rails require — first_name, middle_name, last_name, date_of_birth, bank_address, and holder_address. Supply only what the destination needs; unused fields are ignored. See the PaymentMethodDetails schema for the full list.

Next steps

  • Transfers — create a transfer to one of these instruments.
  • The full API Reference for the PaymentInstrument model.