Payees (Beneficiaries)

Overview

The Payees module is an integral part of the customer API that allows users to manage their list of payees—people or organizations they need to send money to. It provides a suite of API endpoints that facilitate various operations required to maintain an up-to-date payee list for customers within the platform.

  1. Create Payee - Allows users to add a new payee with details such as name, banking information, and address. This is essential for setting up new beneficiaries for transactions.

  2. Edit Payee - Users can update the details of an existing payee. This endpoint is useful for making corrections or changes to the payee information, such as their bank account details or address.

  3. Get Payee by ID - Enables a user to retrieve information about a payee by submitting the ID of the payee.

  4. List Payees - Retrieve a list of payees associated with a customer

  5. Delete Payee - Allows a user to delete a Payee, removing it from being an option for further transfer destinations

  6. Initiate ACH Pull: Allows a manager to initiate an ACH pull request from a customer's payee.


Create Payee

This endpoint creates a new payee for a specific customer. A payee is essentially a destination that where one would send a payment to outside of the banking system, such as a bank account. A customer can use this feature to add a new person or company they need to send money to. The customer inputs necessary banking details and address information to set up the payee in their account

  • Endpoint: /api/v2/customer/payees/create

  • Method: POST

Request Body: application/json

  • CustomersId (Integer, Required): The identifier for the customer.

  • CustomerAssetAccountsId (Integer, Required): Customer's account from which funds will be sent.

  • PayeeType (String, Required): The type of payee, values can be Personal or Company.

  • RoutingNumber (String, Optional, For domestic payees): The routing number of the payee's bank for domestic transactions.

  • AccountNumber (String, Required): The bank account number of the payee.

  • BankName (String, Optional): The bank's name. This will be looked up based on other information if not included.

  • Bic (String, Optional, For international payees): The SWIFT/BIC code for international banking purposes.

  • Iban (String, Optional, For international payees): The International Bank Account Number for international transactions.

  • PayeesReference (String, Optional): A customer-defined reference for the payee.

  • Name (String, Required): The full name of the payee.

  • AddressLine1 (String, Required): The primary address line for the payee.

  • AddressLine2 (String, Optional): The secondary address line for the payee (if any).

  • TownCity (String, Required): The town or city where the payee is located.

  • State (String, Required): The state or region where the payee is located.

  • Country (String, Required): The country where the payee is located.

  • Postcode (String, Required): The postal code associated with the payee's address.

Request Body Example:

{
    	"CustomersId":1545,
        "CustomerAssetAccountsId":3684,
        "PayeeType":"Personal",
        "AccountNumber":"12345678922",
        "RoutingNumber":null,
        "bic":"NAIAGB23",
        "iban":"Foo",
        "PayeesReference":"MYPAYEE123",
	"Name":"My Payee",
	"AddressLine1":"Line1",
	"AddressLine2":"Line2",
	"TownCity":"MyCity",
	"State":"Essex",
	"Postcode":"MK1 9AJ",
        "Country":"GBR"
}

Response Body (Success): application/json

  • id (Integer): A generated ID that references the newly created payee.

  • details (Object): An object containing details about the newly created payee:

    • id (Integer): Same as the outer id field for ease of access.

    • customersId (Integer): The customer's ID for whom the payee was created.

    • customerAssetAccountsId (Integer): Customer's account from which funds will be sent. to payee.

    • payeeType (String): The type of payee, Personal or Company.

    • payeeReference (String): Customer defined payee reference.

    • routingNumber (String): The routing number of the payee's bank.

    • accountNumber (String): The bank account number of the payee.

    • bic (String): The SWIFT/BIC code of the payee.

    • iban (String): The International Bank Account Number of the payee.

    • name (String): The full name of the payee.

    • addressLine1 (String): The primary address line for the payee.

    • addressLine2 (String): The secondary address line for the payee.

    • townCity (String): The town or city where the payee is located.

    • state (String): The state or region where the payee is located.

    • postcode (String): The postal code for the payee's address.

    • country (String): The country where the payee is located.

    • bankName (String): The name of the payee's bank.

  • status (Integer): The status code, typically "1" for success.

  • errors (Array): An array containing any error messages related to the request.

Response Body Example:

{
    "id": 1732,
    "details": {
        "id": 1732,
        "customersId": 1545,
        "customerAssetAccountsId": 3684,
        "payeeType": "Personal",
        "payeesReference": "MYPAYEE123",
        "routingNumber": null,
        "accountNumber": "12345678922",
        "bic": "NAIAGB23",
        "iban": "Foo",
        "name": "My Payee",
        "addressLine1": "Line1",
        "addressLine2": "Line2",
        "townCity": "MyCity",
        "state": "Essex",
        "postcode": "MK1 9AJ",
        "country": "GBR",
        "bankName": ""
    },
    "status": "1",
    "errors": []
}

Possible Error Response:

  • Required (Error Code): Indicates that a required field is missing or has a zero value.

  • Invalid (Error Code): Suggests that a field contains an invalid value.

  • Documents_Not_Verified (Error Code): This action cannot be performed for the customer due to KYC (Know Your Customer) requirements not being met.


Edit Payee

Users can update the details of someone they've set up to send payments to (a payee). They'll need to provide specific information like the account details they wish to change. Once submitted, the system updates the payee's details, confirming the updates with the user or reporting why it wasn't able to if there's an issue. Only non-null fields will be updated

  • Endpoint: /api/v2/customer/payees/edit

  • Method: PATCH

Request Body Parameters: application/json

Only non-null fields will be updated!

  • Id (Integer, Required): The ID of the payee to be edited.

  • PayeeType (String, Optional): The type of payee, values can be Personal or Company.

  • RoutingNumber (String, Optional): The routing number of the payee's bank for domestic transactions.

  • AccountNumber (String, Optional): The bank account number of the payee.

  • BankName (String, Optional): The bank's name, which will be looked up based on other information if not included.

  • Bic (String, Optional): The SWIFT/BIC code for international banking purposes.

  • Iban (String, Optional): The International Bank Account Number for international transactions.

  • PayeesReference (String, Optional): A customer-defined reference for the payee.

  • Name (String, Optional): The full name of the payee.

  • AddressLine1 (String, Optional): The primary address line for the payee.

  • AddressLine2 (String, Optional): The secondary address line for the payee (if any).

  • TownCity (String, Optional): The town or city where the payee is located.

  • State (String, Optional): The state or region where the payee is located.

  • Country (String, Optional): The country where the payee is located.

  • Postcode (String, Optional): The postal code associated with the payee's address.

Request Body Example:

{
    "id": 1001,
    "PayeeType": "Personal",
    "RoutingNumber": "",
    "AccountNumber": "521101580",
    "BankName": "My Bank",
    "Bic": "CZNBVN2XXXX",
    "Iban": "12345Test",
    "PayeesReference": "RefExample",
    "Name": "Name Surname",
    "AddressLine1": "Address Line 1",
    "TownCity": "Austin",
    "State": "TX",
    "Country": "VNM",
    "Postcode": "123ABC"
}

Response Body Parameters: application/json

  • id (Integer): A reference ID for the payee; not used in the example.

  • details (Object): An object containing updated details about the payee, including:

    • id (Integer): The ID of the payee that was edited.

    • customersId (Integer): The customer's ID associated with the edited payee.

    • customerAssetAccountsId (Integer): Customer's account from which funds will be sent. to payee.

    • payeeType (String): The updated type of payee, Personal or Company.

    • payeesReference (String): The updated customer defined payee reference.

    • routingNumber (String): The updated routing number of the payee's bank.

    • accountNumber (String): The updated bank account number of the payee.

    • bic (String): The updated SWIFT/BIC code of the payee.

    • iban (String): The updated International Bank Account Number of the payee.

    • name (String): The updated name of the payee.

    • addressLine1 (String): The updated address line for the payee.

    • addressLine2 (String, Nullable): The updated address line 2 for the payee.

    • townCity (String): The updated town or city where the payee is located.

    • state (String): The updated state or region where the payee is located.

    • postcode (String): The updated postal code for the payee's address.

    • country (String): The updated country where the payee is located.

    • bankName (String): The updated bank name of the payee.

Success Response Example:

{
  "id": 1004,
  "details": {
    "id": 1004,
    "customersId": 1004,
    "customerAssetAccountsId": 3684,
    "payeeType": "Personal",
    "payeesReference": "MyPayee123",
    "routingNumber": "011000536",
    "accountNumber": "1234566798",
    "bankName": "Example Bank",
    "bic": "EXAMPL33XXX",
    "iban": "GB29NWBK60161331926819",
    "name": "Jane Doe",
    "addressLine1": "789 Maple St",
    "addressLine2": null,
    "townCity": "Dallas",
    "state": "TX",
    "postcode": "987ZYX",
    "country": "USA"
  },
  "status": "1",
  "errors": []
}

Error Codes:

  • Required (Error Code): Indicates that a required field is missing or has a zero value.

  • Invalid (Error Code): Suggests that a field contains an invalid value.

  • Documents_Not_Verified (Error Code): The action cannot be performed for the customer due to KYC (Know Your Customer) requirements not being met.

Error Response Example:

{
  "id": 0,
  "details": null,
  "status": "0",
  "errors": [
    {
      "errorType": "BadRequest",
      "fieldName": "PayeeType",
      "messageCode": "Invalid"
    }
  ]
}

Get Payee by ID

Users can retrieve the details of someone they've set up to send payments to (a payee). They'll need to provide the specific ID of the payee to retrieve information.

  • Endpoint: /api/v2/customer/payees/get

  • Method: GET


List Payees

Retrieve a list of payees associated with a customer

  • Endpoint: /api/v2/customer/payees/list

  • Method: GET


Delete Payee

Allows a user to delete a Payee, removing it from being an option for further transfer destinations

  • Endpoint: /api/v1/customer/payees/delete

  • Method: DELETE


Initiate ACH Pull

Allows a manager to initiate an ACH pull request from a customer's payee.

  • Endpoint: /api/v1/customer/payees/pullfunds

  • Method: POST

Request Body Parameters: application/json

Request Body ParamererFormatDescriptionRequired

PayeesId

Integer

PayeesId where the bank can pull funds from

Yes

Amount

Decimal

Amount to be pulled from payee

Yes

CustomerAssetAccountsId

Integer

The destination customer account id

Yes

Reference

String

For pooled account this should be the reference of the pooled account.

Maximum 15 characters allowed

Yes

Request Body Example

{
        "PayeesId":1204,
        "Amount":100,
        "CustomerAssetAccountsId":2141,
        "Reference":"REF2141"
}

Response Body

Response Body ParameterFormatDescription

id

Integer

Transfer Id

details.

details.id

Integer

Transaction Id

details.accountsId

Integer

Transaction account Id

details.fromTransactionsId

Integer

Nullable linked from transaction Id

details.fromAccountsId

Integer

Nullable linked from account Id

details.toTransactionsId

Integer

Nullable linked to transaction Id

details.toAccountsId

Integer

Nullable linked to account Id

details.amount

Decimal

Transaction amount

details.description

String

Transaction description

details.dateTime

ISO 8601

Transaction date

details.bPending

Bool

Is transaction pending

details.bApproved

Bool

Is screening approved

Request Body Example

{
    "id": 22117,
    "details": {
        "id": 31605,
        "accountsId": 2141,
        "fromTransactionsId": null,
        "fromAccountsId": null,
        "toTransactionsId": null,
        "toAccountsId": null,
        "amount": 100.000000000000000000,
        "description": "Funding Ibanera USD Account",
        "dateTime": "2024-04-15T11:21:08.8533333+00:00",
        "bPending": true,
        "bApproved": true
    },
    "status": "1",
    "errors": []
}

Potential Error Codes

Error message code exampleDescription

Required

Required field not provided

Invalid

Provided destination account is invalid or provided payee id is invalid

Funding_Already_Pending

If there is already some pull funds are pending on the destination customer account, not allowed to do another pull to the account.

Invalid_Source_Account

Provided source account is invalid

Invalid_Asset

Asset associated with the account is not fiat currency or both account have different assets.

Ach_limit_exceed_5000

The requested amount is greater than the allowed ach limit

Invalid_Reference_For_FBO_Account

For pooled destination account, given reference should match with the destination account reference

Internal_Error

Any unknown error

Last updated