Skip to main content

Beneficiaries

The Beneficiaries API allows you to manage the recipient accounts for your transfers. You can create, list, update, and delete beneficiary records, as well as validate account details before sending funds.


The Beneficiary Object

A Beneficiary object, also referred to as a DepositAccount, stores information about a recipient, including their bank account details, name, and contact information.

Attributes

AttributeTypeDescription
idintegerUnique numeric identifier for the beneficiary account (e.g., 12345).
accountNumberstringThe beneficiary's bank account number.
firstNamestringThe first name of the beneficiary.
lastNamestringThe last name of the beneficiary.
aliasstringA custom alias for the beneficiary account.
countryDestinationobjectAn object containing the destination country's details.
typeintegerThe type of account.
statestringThe state of the beneficiary record (e.g., active).
createdAtstringThe timestamp when the beneficiary was created (ISO 8601).

Create a Beneficiary

POST/depositaccounts/

Creates a new beneficiary record (deposit account) to be used for future transfers.

Body Parameters

ParameterTypeDescription
accountNumberstringRequired. The beneficiary's bank account number.
firstNamestringRequired. The first name of the beneficiary.
lastNamestringRequired. The last name of the beneficiary.
countryDestinationIdintegerRequired. The ID of the destination country.
typeintegerRequired. The type of account (e.g., 0 for a standard bank account).
aliasstringOptional. A custom alias for easy identification.
emailstringOptional. The beneficiary's email address.
phonestringOptional. The beneficiary's phone number.
addressstringOptional. The beneficiary's physical address.
swiftstringOptional. The SWIFT/BIC code for international transfers.

cURL Example

curl -X POST https://sandbox.tropipay.me/api/v3/depositaccounts/ \ 
-H "Authorization: Bearer {your-access-token}" \
-H "Content-Type: application/json" \
-d '{
"accountNumber": "ES9121000418450200051332",
"firstName": "Jane",
"lastName": "Doe",
"countryDestinationId": 1,
"type": 0,
"alias": "Jane Doe Savings",
"email": "jane.doe@example.com",
"phone": "+15551234567",
"address": "123 Main St, Anytown, USA",
"swift": "CASHUS33XXX"
}'

Response Example (200 OK)

{
"id": 12345,
"accountNumber": "ES9121000418450200051332",
"firstName": "Jane",
"lastName": "Doe",
"alias": "Jane Doe Savings",
"state": "active",
"createdAt": "2024-07-29T10:30:00Z"
}

List Beneficiaries

GET/depositaccounts/

Retrieves a list of all beneficiaries associated with your account.

Query Parameters

ParameterTypeDescription
limitintegerOptional. The maximum number of beneficiaries to return. Defaults to 10.
offsetintegerOptional. The number of beneficiaries to skip for pagination.
searchstringOptional. A search term to filter beneficiaries by name, last name, or email.

cURL Example

curl -X GET "https://sandbox.tropipay.me/api/v3/depositaccounts/?limit=10&search=Jane" \ 
-H "Authorization: Bearer {your-access-token}"

Response Example (200 OK)

The following is an example of the response. For brevity, some fields within the countryDestination object and other less common attributes have been omitted.

{
"items": [
{
"id": 12345,
"accountNumber": "ES0012345678901234567890",
"alias": "John Doe's Savings",
"swift": "CASHESMMXXX",
"type": 7,
"personType": 1,
"firstName": "John",
"lastName": "Doe",
"state": 0,
"countryDestinationId": 1,
"documentNumber": "X1234567Z",
"address": "123 Fictional Street, Madrid",
"phone": "600123456",
"email": "john.doe@example.com",
"createdAt": "2023-01-15T10:00:00.000Z",
"updatedAt": "2023-01-15T10:00:00.000Z",
"countryDestination": {
"id": 1,
"name": "España",
"sepaZone": true,
"slug": "ES",
"callingCode": 34
},
"allowed": true
}
]
}

Get a Specific Beneficiary

GET/depositaccounts/{beneficiaryId}

Retrieves the details of a single beneficiary by their unique ID.

Path Parameters

ParameterTypeDescription
beneficiaryIdintegerRequired. The numeric ID of the beneficiary to retrieve (e.g., 12345).

cURL Example

curl -X GET https://sandbox.tropipay.me/api/v3/depositaccounts/12345 \ 
-H "Authorization: Bearer {your-access-token}"

Response Example (200 OK)

{
"id": 12345,
"accountNumber": "ES0012345678901234567890",
"alias": "John Doe's Savings",
"swift": "CASHESMMXXX",
"type": 7,
"personType": 1,
"firstName": "John",
"lastName": "Doe",
"state": 0,
"countryDestinationId": 1,
"documentNumber": "X1234567Z",
"address": "123 Fictional Street, Madrid",
"phone": "600123456",
"email": "john.doe@example.com",
"createdAt": "2023-01-15T10:00:00.000Z",
"updatedAt": "2023-01-15T10:00:00.000Z",
"countryDestination": {
"id": 1,
"name": "España",
"sepaZone": true,
"slug": "ES",
"callingCode": 34
},
"paymentMethods": [
"EXT",
"CRYPTO",
"APPLE_PAY",
"GOOGLE_PAY",
"TPP"
],
"allowedAccounts": [
{
"id": 628,
"alias": "Main Account",
"currency": "EUR",
"type": 1
}
],
"allowed": true
}

Update a Beneficiary

PUT/depositaccounts/

Updates the alias of an existing beneficiary. Note that only the alias field can be modified through this endpoint.

Body Parameters

ParameterTypeDescription
idintegerRequired. The numeric ID of the beneficiary to update.
aliasstringOptional. The new alias for the beneficiary account.

cURL Example

curl -X PUT https://sandbox.tropipay.me/api/v3/depositaccounts/ \ 
-H "Authorization: Bearer {your-access-token}" \
-H "Content-Type: application/json" \
-d '{
"id": 12345,
"alias": "Jane Doe Primary Account"
}'

Delete a Beneficiary

DELETE/depositaccounts/{beneficiaryId}

Deletes a beneficiary record by their unique ID.

Path Parameters

ParameterTypeDescription
beneficiaryIdintegerRequired. The numeric ID of the beneficiary to delete (e.g., 12345).

Body Parameters

ParameterTypeDescription
securityCodestringRequired. The security code for authentication (e.g., 123456).

cURL Example

curl -X DELETE https://sandbox.tropipay.me/api/v3/depositaccounts/12345 \
-H "Authorization: Bearer {your-access-token}" \
-H "Content-Type: application/json" \
-d '{
"securityCode": "123456"
}'

Validate an Account Number

POST/depositaccounts/validate_account_number

Validates an account number (bank account number or crypto wallet address) before creating a beneficiary.

Authentication: UserPrivate (requires Authorization: Bearer <token>)

Body Parameters

FieldTypeRequiredNotes
accountNumberstringYesWallet address
paymentTypenumberYesMust be 100 for crypto
currencystringNoToken ticker, e.g. usdc, usdt
networkstringNoBlockchain network (see table below). Defaults to SOLANA if omitted
countryDestinationIdnumberNoUse 0 for crypto

cURL Example

curl -X POST https://sandbox.tropipay.me/api/v3/depositaccounts/validate_account_number \
-H "Authorization: Bearer {your-access-token}" \
-H "Content-Type: application/json" \
-d '{
"accountNumber": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"paymentType": 100,
"currency": "usdc",
"countryDestinationId": 0
}'

Success response 200

{ "valid": true, "type": null, "errorCode": null }

Failure response 200

{ "valid": false, "type": null, "errorCode": "INVALID_CRYPTO_ACOUNT" }

Note: the endpoint always returns HTTP 200. Validity is communicated via the valid field.


Create a Crypto Beneficiary Wallet

POST/depositaccounts/

Creates a beneficiary for crypto payouts (a wallet address).

Body Parameters

FieldTypeRequiredNotes
accountNumberstringYesWallet address
paymentTypenumberYesMust be 100 for crypto
currencystringNoToken ticker, e.g. usdc, usdt
networkstringNoBlockchain network (see table below). Defaults to SOLANA if omitted
countryDestinationIdnumberNoUse 0 for crypto
firstNamestringYesBeneficiary first name
lastNamestringYesBeneficiary last name
aliasstringNoFriendly label

Supported Networks & Address Formats

The network field (case-insensitive) determines which validator runs.

network value(s)Address formatSupported currencies
SOLANABase58, 32–44 charsUSDC, USDT, EURC, SOL, WSOL, BONK, RAY, SRM
ETHEREUM, POLYGON, BSC, BINANCE_SMART_CHAIN, BEP20, ARBITRUM, OPTIMISM, AVALANCHE, BASE0x + 40 hex charsUSDC, USDT
TRONT + 33 alphanumeric (34 chars total)Any
BINANCE_CHAIN, BEP2bnb + 39 lowercase alphanumeric (42 chars total)Any
BITCOIN, BTCLegacy 1…/3… (26–35 chars) or Bech32 bc1… (42–62 chars)Any
(unsupported)Basic length check20–100 chars

Default: if network is omitted or empty, SOLANA is used.

Example Requests

EVM address (must include network)

{
"accountNumber": "0xA1b2C3d4E5f67890aBcDEF1234567890aBCdEf12",
"paymentType": 100,
"currency": "usdc",
"network": "ETHEREUM",
"countryDestinationId": 0
}

Solana address (network optional, defaults to SOLANA)

{
"accountNumber": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"paymentType": 100,
"currency": "usdc",
"countryDestinationId": 0
}

EVM address without network field — fails

{
"accountNumber": "0xA1b2C3d4E5f67890aBcDEF1234567890aBCdEf12",
"paymentType": 100,
"currency": "usdc",
"countryDestinationId": 0
}