Save Beneficiary

POST
/api/v1/beneficiaries

Save a recipient and their bank account for a currency and network so later transfers can reference it by id. The details are validated exactly as a transfer on that network would be. Saving an account you already have returns the existing beneficiary with its details refreshed.

Authorization

headerX-Api-Key<token>

API key in format: sti_env_prefix_secret

Request Body

Save a recipient and their bank account for a currency and network. The details are validated exactly as a transfer on that network would be. Saving an account you already have returns the existing beneficiary with its details refreshed rather than a duplicate.

application/json
  1. body

Save a recipient and their bank account for a currency and network. The details are validated exactly as a transfer on that network would be. Saving an account you already have returns the existing beneficiary with its details refreshed rather than a duplicate.

network*string

Network the beneficiary is paid by: bank = local transfer, swift = international wire

Value in"bank""swift"
label?string

Display name for the beneficiary. Defaults to the account holder name.

Length1 <= length <= 120
destination*

Response Body

Default Response

application/json
  1. response
id*string

Beneficiary id

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
label*|

Organisation-chosen display name

status*string

active: available as a transfer destination. archived: kept for history only.

Value in"active""archived"
network*string

API network identifier for FIAT payment rails: swift = international wire transfer, bank = domestic transfer, payid = Australian NPP PayID alias payout

Value in"swift""bank""payid"
destination*
validation*
last_used_at*|

When a transfer was last created to this beneficiary; null if never paid

created_at*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Formatdate-time
updated_at*string
Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Formatdate-time
archived_at*|null
Example Request
curl -X POST 'https://api.sandbox.stables.money/api/v1/beneficiaries' \  -H 'Content-Type: application/json' \  -d '{  "network": "bank",  "destination": {    "type": "bank",    "account_holder_name": "string",    "bank_name": "string",    "bank_country": "st",    "currency": "str"  }}'
Example Response
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "label": "string",  "status": "active",  "network": "swift",  "destination": {    "type": "bank",    "recipient_type": "individual",    "date_of_birth": "string",    "phone": "string",    "account_holder_name": "string",    "account_number": "string",    "iban": "string",    "bank_name": "string",    "bank_country": "st",    "currency": "str",    "account_type": "savings",    "branch_name": "string",    "address": {      "street": "string",      "city": "string",      "state": "string",      "postal_code": "string",      "country": "string"    },    "swift_code": "string",    "bic_code": "string",    "ifsc_code": "string",    "aba_code": "string",    "sort_code": "string",    "branch_code": "string",    "bsb_code": "string",    "bank_code": "string",    "cnaps": "string",    "name_in_local_language": "string",    "national_identification_number": "string"  },  "validation": {    "valid": true,    "errors": [      {        "field": "string",        "message": "string",        "code": "UNSUPPORTED_CURRENCY"      }    ]  },  "last_used_at": "2019-08-24T14:15:22Z",  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "archived_at": "2019-08-24T14:15:22Z"}

Saves a recipient and their bank account for a currency and network, so later transfers can pay it by beneficiary_id. You don't need to call this before paying someone: every bank transfer saves its destination automatically.

The details are validated exactly as a transfer on that network would validate them. See Beneficiary Requirements.

Saving an account your organisation already has returns the existing beneficiary, with its contact details refreshed and its label updated if you send one. An archived beneficiary is restored.

PayID aliases can't be saved as beneficiaries.

Related: Beneficiaries in the Developer Platform guide.