Learn how to generate cashouts request by using our Cashout API v3 directly from your website
POST
https://api-stg.zimo-pagos.com/v3/cashout
This endpoint allows you to generate cashout requests
Content-Type*
string
application/json
Payload-Signature*
string
Control signature
login*
string
Your Zimo-pagos CASHOUTS API login key
pass*
string
Your Zimo-pagos 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_id
string
beneficiary id (for anonymous)
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
bank_account
string
Beneficiary's bank account
bank_branch
string
Beneficiary's branch of their bank account
account_type
string
Beneficiary's account type
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
login
string (max length: 32)
Your Zimo-pagos 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 Zimo-pagos 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_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
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
[true, false]
code
Number
message
String
Description of the error
reason
String
reason_code
Number
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.
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@zimo-pagos.com with your cashout API Key
STG endpoint for Debit Cards: https://cc-api-stg.zimo-pagos.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:
Learn about how the notifications of the Cashout API v3 work
A notification will be sent every time the status of a cashout changes.
For security reasons we don't send the status of the cashout on the notification itself. Once you have received the notification, you will need to use the Cashout Status Endpoint to retrieve its new status.
The notifications will be sent to the notification_url
specified in the request or to the default Withdrawals URL you have configured on the Merchant Panel by POST protocol in x-www-form-urlencoded format and will have the following fields:
Field
Format
Description
date
Date. Format: YYYY-MM-DD HH:MM:SS (GMT)
Date the cashout changed its status
bank_reference_id
String (max. 50 chars)
Reference ID of the bank if any
comments
String (max. 200 chars)
Comments of the cashout if any
external_id
String (max. 100 chars)
ID of the cashout you sent while creating the request
control
String
Control signature of the notification
cashout_id
Number
ID of the cashout on our end
status_reason
String
Reason of the status if any
In the STG environment you can force a notification to be sent to your notification_url
from the STG Merchant Panel by going to the Transactions -> Withdrawals
page, opening the cashout transaction and clicking on one of the options that will appear when clicking in the three dots button on the top right of the screen. Those options will change the status of the cashout therefore sending the respective notification after a few minutes.
The control string for the notifications is made up of some random characters at the beginning and the end of the request and the external_id
received in the middle.
Check the examples below on how to calculate the control string for the notifications:
Every time a cashout changes its status, we will send you a notification so you can check its status back.
In case that for some reason your server was unable to receive the notification and you returned an HTTP code different than 2XX, we will retry the notification up to 5 more times or until you respond with HTTP 2XX, whatever comes first.
In case of errors while handling the notification, make sure you will answer with an HTTP code distinct than 2XX, that way we will retry the notification.
The time between the 5 notifications attempts will be of 5 minutes each.
When the notification failed to be sent, it will be shown like this in our Merchant Panel:
If you see the errors from the screenshot above, it means the cashout was successfully completed but suddenly we couldn't notify you. Keep reading to know how to resend the notifications.
In case your system was unable to receive the notification in any of the 5 attempts, you can always check its status with the Cashout Status Endpoint.
If you need to trigger the check status by receiving our notification, once the issue preventing you from receiving our notifications was fixed, you can go to the Merchant Panel, locate the cashout (Transactions -> Withdrawals) and click on the three dots button under the "Status History" section and then "Resend notification" to force a new notification to be sent.
It can take up to 2 minute for the notification to be resent.