Cashout Creation Endpoint
Learn how to generate cashouts request by using our Cashout API v3 directly from your website
Cashout Request
POST
https://api-stg.onekeypayments.com/v3/cashout
This endpoint allows you to generate cashout requests
Headers
Name | Type | Description |
---|---|---|
Content-Type* | string |
|
Payload-Signature* | string | Control signature |
Request Body
Name | Type | Description |
---|---|---|
login* | string | Your D24 CASHOUTS API login key |
pass* | string | Your D24 CASHOUTS API pass key |
external_id* | string | Unique cashout ID on the merchant end |
country* | string | Country of the cashout |
amount* | number | Amount of the cashout |
currency | string | Currency in which the amount was specified |
document_id* | string | Document ID of the beneficiary |
document_type | string | Document type of the ID specified |
beneficiary_name* | string | Beneficiary's name |
beneficiary_lastname | string | Beneficiary's last name |
string | Beneficiary's email address | |
phone | string | Beneficiary's phone number |
bank_code | number | Beneficiary's bank code or ISPB |
bank_account | string | Beneficiary's bank account |
bank_branch | string | Beneficiary's branch of their bank account |
account_type | string | Beneficiary's account type |
registered_bank_accounts | object | Allows to send details of the registred accounts of the client, example here |
registered_bank_accounts.account_number | string | Beneficiary's registred account |
registered_bank_accounts.ispb_code | number | Beneficiary's bank ISPB code |
registered_bank_accounts.bank_code | number | Beneficiary's bank code |
registered_bank_accounts.bank_branch | number | Beneficiary's bank branch |
address | string | Beneficiary's address |
city | string | Beneficiary's city |
postal_code | string | Beneficiary's postal code |
beneficiary_birthdate | string | Beneficiary's birthdate |
notification_url* | string | URL where the notifications will be sent |
comments | string | Commentaries about the cashout |
on_hold | boolean | Used to mark a cashout as on hold and not process it until manually changed to pending by you |
Request Fields Description
Field | Format | Description | Validations |
---|---|---|---|
login | string (max length: 32) | Your OKP CASHOUTS API Key, found on the Merchant Panel by going to: Settings -> API Access. Notice there are specific Cashout credentials | |
pass | string (max length: 32) | Your OKP CASHOUTS API Passphrase, found on the Merchant Panel by going to: Settings -> API Access. Notice there are specific Cashout credentials | |
external_id | string (max length: 100) | Unique cashout ID on the merchant end | |
country | string (length: 2) | Country code for the cashout in ISO 3166-1 alpha-2 code format | |
amount | Big Decimal (up to 2 decimals) | Cashout amount on the currency specified | Valid number |
currency | string (length: 3) | Currency code of the amount in ISO 4217 format | |
document_id | string (max length: 40) | Beneficiary’s personal identification number | |
document_type | string (maxLength: 15) | Beneficiary’s personal identification number type | |
beneficiary_name | string (max length: 100) | Beneficiary's name | String of up to 100 characters |
beneficiary_lastname | string (max length: 100) | Beneficiary's last name | String of up to 100 characters |
string (maxLength: 100) | Beneficiary's valid email address | ||
phone | string (maxLength: 20) | Beneficiary's phone number | |
bank_code | Integer (max length: 8) | Beneficiary's bank code or ISPB – Identificador do Sistema de Pagamentos Brasileiro | |
bank_account | string (max length: 30) | Beneficiary's bank account number | |
bank_branch | string (max length: 15) | Beneficiary's bank branch number | |
account_type | string (max length: 1) | Type of account | |
registered_bank_accounts | object | Optional field to send registred accounts | |
registered_bank_accounts.account_number | string (max length: 30) | Beneficiary's registred account number | |
registered_bank_accounts.ispb_code | Integer (max length: 8) | Beneficiary's ISPB code from the registred account | Integer up to 8 numbers |
registered_bank_accounts.bank_code | string (max length: 15) | Beneficiary's bank code from the registred account | |
registered_bank_accounts.bank_branch | Integer (max length: 8) | Beneficiary's bank branch from the registred account | |
address | string (max length: 255) | Beneficiary's address | String of up to 200 characters |
city | string (max length: 100) | Beneficiary's city | String of up to 100 characters |
postal_code | string (max length: 20) | Beneficiary's postal code | |
beneficiary_birthdate | string (pattern: 'YYYYMMDD') | Beneficiary's birthdate | |
notification_url | string (max length: 300) | To be provided if the notification URL is different from the notification URL defined on the Merchant Panel | Valid URL over HTTPS |
comments | string (max length: 200) | A commentary for this cashout | String of up to 200 characters |
on_hold | boolean | If the merchant wants to hold the cashout and set it to process later through the merchants panel. Default: false |
|
Fields required
Each country has different requirements and therefore we ask for different fields you need to send on the requests.
Go to the Countries Validations page to check each country requirements and validations.
Cashouts to debit cards
In Mexico, we accept cashouts sent directly to debit cards.
When that happens, you need to send the request through a different endpoint, otherwise your request will be declined with Invalid bank account, it shouldn't be a credit card
.
PROD endpoint for Debit Cards: Email integration@onekeypayments.com with your cashout API Key
STG endpoint for Debit Cards: https://cc-api-stg.onekeypayments.com/v3/cashout
The bank accounts in Mexico are in CLABE format (numeric) and have 18 digits (without dashes). Therefore one way to detect that a bank account specified by the customer is a debit card is by checking with the luhn algorithm if it is a valid card number and/or with a regex for each brand, like the example below.
If true, send the request through the cc-api
endpoint, if false send it through the normal endpoint. The integration and requirements remains exactly the same, only changing the error message returned in case of invalid bank account and that we validate the bank_account
sent to be a valid credit card number using the Luhn Algorithm.
Sending a debit card number through the non-cc endpoint will make the request to fail with the following error:
Invalid bank_account error on the cc-api endpoint:
Last updated