API Docs
Payouts
API ReferencePayoutsCreate Payout

Create Payout

Create a new payout to send funds.

POST /payouts/create

Body Parameters

Only amount and currency are mandatory. Everything else is optional, and several fields are deprecated in favor of newer equivalents (noted below).

ParameterTypeRequiredDescription
amountintegerYesThe payout amount, in the lowest denomination of the currency (e.g. cents for USD, paisa for GBP).
currencystringYesThe three-letter ISO 4217 currency code (e.g. USD, EUR, GBP).
merchant_order_reference_idstringNoYour own unique identifier for this payout, used for reconciliation. Max 255 chars.
payout_typestringNoOne of card, bank, wallet, bank_redirect. Mandatory before the payout can be confirmed — can be set here or in a later Update call.
payout_method_dataobjectNoMethod-specific payout details. One of card, bank_transfer, wallet, bank_redirect or passthrough (see below).
source_bank_dataobjectNoSource bank transfer details (same shape as bank_transfer payout method data).
payout_tokenstringNoReference to a previously stored payout method, used instead of supplying payout_method_data directly.
payout_method_idstringNoIdentifier for a saved payout method.
customerobjectNoCustomer details (id, name, email, phone, phone_country_code, tax_registration_id, document_details). Creates a new customer or attaches an existing one. Preferred over the deprecated top-level customer fields below.
customer_idstringNo, deprecatedUse customer.id instead. Auto-generated if omitted.
emailstringNo, deprecatedUse customer.email instead.
namestringNo, deprecatedUse customer.name instead.
phonestringNo, deprecatedUse customer.phone instead.
phone_country_codestringNo, deprecatedUse customer.phone_country_code instead.
billingobjectNoBilling address and contact info (address, phone, email).
confirmbooleanNo (default false)Confirms the payout immediately. Typical flow is Create → Update → Confirm.
auto_fulfillbooleanNo (default false)If true, confirms the payout without manual review — no further action required.
recurringbooleanNo (default false)Whether this payout request is recurring.
entity_typestringNoType of entity receiving the payout: Individual, Company, NonProfit, PublicSector, NaturalPerson, Personal, or lowercase.
prioritystringNoSend priority: instant, fast, regular, wire, cross_border, or internal.
business_countrystringNoTwo-letter ISO country code for the merchant's business.
profile_idstringNoThe business profile to use, if your merchant account has more than one. Defaults to the account's default profile.
descriptionstringNoFree-text description of the payout.
return_urlstringNoURL to redirect to after the operation completes.
metadataobjectNoUp to 50 key-value pairs (keys ≤ 40 chars, values ≤ 500 chars) for storing additional structured info.
session_expiryintegerNoSeconds until the client secret expires (e.g. 900 for 15 minutes).
payout_linkbooleanNo (default false)If true, generates a payout link. Must be set at creation — cannot be changed on Update.
payout_link_configobjectNoCustomization for the payout link (logo, merchant name, theme, enabled payment methods, form layout, test mode).
browser_infoobjectyesBrowser details used for 3DS 2.0 (screen size, language, time zone, user agent, IP address, etc.).

payout_method_data

payout_method_data is a discriminated object — supply exactly one top-level key: card, bank_transfer, wallet, bank_redirect, or passthrough. source_bank_data accepts the same shape as bank_transfer on its own.

card

FieldTypeRequiredDescription
card_numberstringYesThe card number.
expiry_monthstringYesCard expiry month.
expiry_yearstringYesCard expiry year.
card_holder_namestringYesName on the card.
card_networkstringNoOne of Visa, Mastercard, AmericanExpress, JCB, DinersClub, Discover, CartesBancaires, UnionPay, Interac, RuPay, Maestro, Star, Pulse, Accel, Nyce.

bank_transfer

One of the following, supplied directly (no payout_method_type discriminator):

VariantRequired fieldsOptional fields
ACHbank_account_number, bank_routing_numberbank_name, bank_country_code, bank_city, account_holder_name
BACSbank_account_number, bank_sort_codebank_name, bank_country_code, bank_city, account_holder_name
SEPAiban, bicbank_name, bank_country_code, bank_city, account_holder_name
Trustlyiban, country_code, account_number, bank_number
Pixbank_account_number, pix_key, emvbank_name, bank_branch, tax_id, ispb
Open Bankingaccount_holder_name, iban

wallet

Supply exactly one of:

Sub-fieldRequired fieldsNotes
apple_pay_decryptdpan, expiry_month, expiry_year, card_holder_namecard_network optional.
google_pay_decryptapplication_primary_account_number, expiry_month, expiry_year, card_holder_namecard_network optional.
paypalemail, telephone_number, paypal_idAll three required.
venmotelephone_number

bank_redirect

Supply exactly one of:

Sub-fieldRequired fields
interacemail
open_banking_ukaccount_holder_name, iban

bank_transfer (and source_bank_data, same shape)

Discriminated by payout_method_type. Each variant requires that field plus its own fields:

payout_method_typeRequired fieldsOptional fields
achbank_account_number, bank_routing_numberbank_name, bank_country_code, bank_city, account_holder_name
bacsbank_account_number, bank_sort_codebank_name, bank_country_code, bank_city, account_holder_name
sepaiban, bicbank_name, bank_country_code, bank_city, account_holder_name
pixbank_account_numberbank_name, bank_branch, tax_id, ispb
pix_keypix_key
pix_emvemv (QR code string)
trustlyiban, bank_country_code, bank_account_number, bank_number
open_bankingaccount_holder_name, iban

passthrough

FieldTypeRequiredDescription
psp_tokenstringYesPSP token generated for the payout method.
psp_customer_idstringYesPSP customer ID.
token_typestringYesA PaymentMethodType value (e.g. ach, sepa, paypal, apple_pay, google_pay, etc. — large enum covering all supported method sub-types).

Request Example

curl -X POST 'https://api.rpayz.com/payouts/create' \  -H "Content-Type: application/json" \  -H "api-key: snd_YOUR_API_KEY" \  -d '{  "amount": 5000,  "currency": "USD",  "customer": {    "name": "John Doe",    "email": "johntest@test.com",    "phone": "9123456789",    "phone_country_code": "+1"  },  "payout_type": "bank",  "payout_method_data": {    "bank_transfer": {      "payout_method_type": "ach",      "bank_account_number": "000123456",      "bank_routing_number": "110000000",      "account_holder_name": "John Doe"    }  },  "description": "Vendor payment",  "auto_fulfill": true}'

Response

{
  "payout_id": "187282ab-40ef-47a9-9206-5099ba31e432",
  "merchant_id": "1668273825",
  "merchant_order_reference_id": "merchant_order_ref_123",
  "amount": 5000,
  "currency": "USD",
  "payout_type": "bank",
  "payout_method_data": {
    "bank": {
      "bank_account_number": "0001****3456",
      "bank_routing_number": "110***000",
      "account_holder_name": "John Doe"
    }
  },
  "billing": null,
  "auto_fulfill": true,
  "customer_id": "cus_y3oqhf46pyzuxjbcn2giaqnb44",
  "customer": {
    "id": "cus_y3oqhf46pyzuxjbcn2giaqnb44",
    "name": "John Doe",
    "email": "johntest@test.com",
    "phone": "9123456789",
    "phone_country_code": "+1"
  },
  "client_secret": "pay_U42c409qyHwOkWo3vK60_secret_el9ksDkiB8hi6j9N78yo",
  "return_url": "https://example.com",
  "business_country": "US",
  "description": "Vendor payment",
  "entity_type": "Individual",
  "recurring": false,
  "metadata": null,
  "status": "requires_fulfillment",
  "error_message": null,
  "error_code": null,
  "profile_id": "pro_abc123",
  "created": "2024-01-22T10:00:00Z",
  "connector_transaction_id": null,
  "priority": null,
  "attempts": null,
  "payout_link": null,
  "unified_code": null,
  "unified_message": null,
  "payout_method_id": null
}

status values

success, failed, cancelled, initiated, expired, reversed, pending, ineligible, requires_creation, requires_confirmation, requires_payout_method_data, requires_fulfillment, requires_vendor_account_creation

Error response

400 — Missing mandatory fields (only amount and currency are strictly required to create a payout).