Navbar
cURL PHP Java C#

Getting started

Click the corresponding tab above to see sample code in the language of your choice.

# The cURL code samples included in this API documentation 
# demonstrate how to execute operations using the command 
# line data transfer tool cURL.
<?php
   // PHP code samples demonstrating how to execute Directa24 API
   // operations
?>
   // Java code samples demonstrating how to execute Directa24 API
   // operations
   // C# code samples demonstrating how to execute Directa24 API
   // operations

Welcome to the Directa24 developers area, here you will find a guide to integrate our API platform with the following options:

The Directa24 API is a RESTful JSON implementation. It is designed to work over authenticated HTTPS secured channels and API responses are configurable using JSON or XML as you prefer.

Don't get stuck! Contact us at integration@directa24.com for additional information about these or other services.

Introduction

Follow this steps to start processing payments with Directa24 API:

1 - Register: Create your merchant account in our site: https://merchants.directa24.com

Once you register, our commercial team will be reviewing your details and contacting you, upon that, you will receive an invitation mail to activate your merchant account. During integration process, you will use our Staging merchants area: https://merchants-stg.directa24.com

2 - Get Credentials: After your account has been activated, you will have access to your Back-Office configuration and data.

Also, by going to Settings -> API Access, you will find your api credentials for:

3 - Integrate API: Follow the instructions of this reference to integrate the products you prefer.

4 - Process payments: Start processing your payments with Directa24!

Technical and Security Details

Environments

Your account is associated with two different environments:

Staging https://merchants-stg.directa24.com and Production https://merchants.directa24.com.

A Staging environment available for integration development and testing which simulates the requests and transactions available in the platform. On test environment no transactions will actually be processed.

You can create deposits in Staging using the same payment methods than in Production, the most important payment methods are available for the simulation. During integration, on the Staging system you can approve or cancel the deposits yourself, and recieve the notifications.

Deposits

We work as a bridge between you and your customer's local payment methods such as banks or credit cards with either our Streamline, our Hybrid or our Full API integration.

Streamline Integration

The Streamline API allows you to create payments via Online Bank Payment, Cash Payment or Credit Card Methods. The customer doesn't need to visit a Directa24 page to enter any details, so the payment process is “Streamlined”. However, in order for Streamline to work, Directa24 needs you to collect some key data about the customer (email address and personal identity number – eg CPF number in Brazil).

Streamline Deposit Flow

Find below the description of a deposit flow using the Directa24 Streamline integration:    

alt steps alt steps

1 - The client goes to the Merchant's Deposit page.

2 - 3 - The merchant calls the Directa24 get_banks_by_country API, to retrieve the available payment methods for the customer's country.

4 - The merchant displays the local payment options, such as Caixa in Brazil or Bancomer or Visa in Mexico. (*)

5 - The customer fills the required information on the Deposit page, such as the amount to deposit, and submits his deposit request.

6 - The merchant calls the Directa24 New Invoice API with all the deposit related information (Merchant Credentials + Control-Signature + Mandatory/Optional fields including customer details).

We will verify the customer data (personal id and data consistency, according to our KYC policies), to establish whether the customer can proceed with the transaction, or not.

7 - 8 - The API responds with a link to redirect the customer to the local payment method checkout/deposit information:

9 - The customer makes the Cash Deposit, the Electronic Bank Transfer or the Credit/Debit Card payment.

10 - After the payment has been made, the customer is returned to your site (to whichever “Return URL” you specified or have configured in the Merchant Panel). See Return URL.

11 - Once the payment is confirmed by the Bank/Credit Card company, Directa24 will send the transaction result to your confirmation URL. See Confirmation URL.

API: Deposit Creation

Example request: new invoice

curl -X POST \
    https://api-stg.directa24.com/api_curl/streamline/NewInvoice \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -d 'x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_invoice=74170514&x_amount=10&x_iduser=userId123&x_bank=CA&x_cpf=63017363201&x_email=myemail%directa24.com&type=json&x_country=BR&x_name=Jonh%2BSmith&x_version=1.0&control=X_CONTROL'
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api-stg.directa24.com/api_curl/streamline/NewInvoice",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_invoice=74170514&x_amount=10&x_iduser=userId123&x_bank=CA&x_cpf=63017363201&x_email=myemail%40directa24.com&type=json&x_country=BR&x_name=Jonh%2BSmith&x_version=1.0&control=X_CONTROL",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/x-www-form-urlencoded"
  ),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
   OkHttpClient client = new OkHttpClient();
   MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
   RequestBody body = RequestBody.create(mediaType, "x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_invoice=74170514&x_amount=10&x_iduser=userId123&x_bank=CA&x_cpf=63017363201&x_email=myemail%40directa24.com&type=json&x_country=BR&x_name=Jonh%2BSmith&x_version=1.0&control=X_CONTROL");
   Request request = new Request.Builder()
     .url("https://api-stg.directa24.com/api_curl/streamline/NewInvoice")
     .post(body)
     .addHeader("Content-Type", "application/x-www-form-urlencoded")
     .build();
   Response response = client.newCall(request).execute();
   var client = new RestClient("https://api-stg.directa24.com/api_curl/streamline/NewInvoice");
   var request = new RestRequest(Method.POST);
   request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
   request.AddParameter("application/x-www-form-urlencoded", "x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_invoice=74170514&x_amount=10&x_iduser=userId123&x_bank=CA&x_cpf=63017363201&x_email=myemail%40directa24.com&type=json&x_country=BR&x_name=Jonh%2BSmith&x_version=1.0&control=X_CONTROL", ParameterType.RequestBody);
   IRestResponse response = client.Execute(request);

Example: success response

{
  "status": "0",
  "link": "[Link to redirect the customer]"
}

Example: failed response

{
  "status": "1",
  "desc": "[Error's description]"
}

Example: success response for API v1.1

{
  "status": "0",
  "link": "[Link to redirect the user]",
  "local_amount": "[local amount]",
  "usd_amount": "[Amount in usd]",
  "local_currency": "[Local currency]",
  "x_document": "[Reference of the transaction on Directa24's side]",
  "amount_to_deposit": "[Amount to deposit]"
}

Example: failed response for API v1.1

{
  "status": "1",
  "desc": "[Error's description]",
  "error_code": "[Error's code]"
}

The New Invoice API creates a new Deposit transaction and returns an URL to redirect the customer to his preferred payment method's page, where the payment can be confirmed.

Production POST https://api.directa24.com/api_curl/streamline/NewInvoice

Staging POST https://api-stg.directa24.com/api_curl/streamline/NewInvoice

Mandatory fields - Deposits
Field Format Description
x_login string (max length: 32) Your Directa24 DEPOSITS API login, found on the merchants area: Settings -> API Access -> Deposit Credentials
x_trans_key string (max length: 32) Your Directa24 DEPOSITS API trans_key, found on the merchants area: Settings -> API Access -> Deposit Credentials
x_invoice string (max length: 125) Unique identification for the transaction in your end
x_amount decimal (max decimal numbers: 2) Transaction's amount in the currency specified in the “x_currency” field (if none is sent USD will be assumed)
x_country string (max length: 2) User’s country. Click here to see country codes.
x_bank string (max length: 3) Payment method code (see Payment Methods). To check the available Payment Methods for your account, you can use the API get_banks_by_country
x_iduser number (max digits: 11) Unique user ID in your side
x_cpf String (max digits: 30) User’s personal identification number. Click here to see the type of documents and its validations.
x_name string (max length: 100) User’s full name (name and lastname)
x_email string (max length: 100) User’s email address. Click here to see email validations.
x_return string (max length: 200) URL specified to redirect the customers once they finish the deposits. It has to be a valid URL over HTTPS (https:\\www.directa24.com). See Return URL
control string (max length: 32) Control string encoded using HMAC-SHA-256 (RFC 2104) to ensure integrity
x_mobile string (max length: 20) User’s mobile number. Mandatory for Colombia and the African countries
Optional fields - Deposits
Field Format Description
x_currency string (max length: 3) Transaction currency in ISO 4217. If not sent, USD will be assumed. Click here to see available currencies per country.
x_version number API's version. If none is specified 1.0 will be assumed. Version 1.1 includes additional information in the response (see examples tab)
x_description string (max length: 200) Transaction's description
x_bdate string User’s birth date using the format: YYYYMMDD
x_address string (max length: 255) User’s address. Mandatory for BR (Brazil) and CO (Colombia)
x_zip string (max length: 10) User’s zip/postal code. Mandatory for BR (Brazil). Click here to see zip code validations.
x_city string (max length: 100) User’s city
x_state string (max length: 20) User’s state. Mandatory for BR (Brazil)
x_confirmation string (max length: 200) Should be provided if the confirmation URL needs to be different from the one registered in your panel settings. See Confirmation URL
type string (max length: 20) The format of the response: JSON, XML or STRING. If none is specified XML will be assumed.
iframe_view boolean Used to determine if should be returned an iframe view.

Control String for Deposits

Example: Control signature for New Invoice API

    #Check php, Java and C# examples
<?php
   $secretKey = 'your_deposits_secret_key';
   $message = $x_invoice .'V' . $x_amount .'I' . $x_iduser .'2' . $x_bank .'1' . $x_cpf .'H' . $x_bdate .'G' . $x_email .'Y' . $x_zip .'A' . $x_address .'P' . $x_city .'S' . $x_state . 'P';
   $control = strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $secretKey)));
?>
   String secretKey = "your_deposits_secret_key";
   String message = x_invoice + "V" + x_amount + "I" + x_iduser + "2" + x_bank + "1" + x_cpf + "H" + x_bdate + "G" + x_email + "Y" + x_zip + "A" + x_address + "P" + x_city + "S" + x_state + "P";
   Mac hasher = Mac.getInstance("HmacSHA256");
   hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));

   String control = Base64.encodeBase64String(hasher.doFinal(message.getBytes())).toUpperCase();
   string secretKey = "your_deposits_secret_key";
   string message = x_invoice + "V" + x_amount + "I" + x_iduser + "2" + x_bank + "1" + x_cpf + "H" + x_bdate + "G" + x_email + "Y" + x_zip + "A" + x_address + "P" + x_city + "S" + x_state + "P";
   byte[] keyByte = new ASCIIEncoding().GetBytes(secretKey);
   byte[] messageBytes = new ASCIIEncoding().GetBytes(message);
   byte[] hashmessage = new HMACSHA256(keyByte).ComputeHash(messageBytes);

   string control = BitConverter.ToString(hashmessage).Replace("-", "").ToUpper();

The Control field is a mandatory field used to ensure request integrity. It should be created using HMAC-SHA-256 (RFC 2104) encoding and must include ONLY the following fields:

The Control String for deposits must be in Upper Case and must include all the above mentioned fields even if any of those are empty. Each field has to be converted to UTF-8 before actually hashing it to prevent Invalid Control Hash error when sending characters with different encodings. Please check the Examples in the different languages on how to properly calculate the Control String.

Return URL

Example: return redirection - control signature

    #Check php, Java and C# examples
<?php
   $message = $x_login . $result . $x_amount . $x_invoice ;
   $control = strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $secretKey)));
?>
   String message = x_login + result +  x_amount + x_invoice;
   Mac hasher = Mac.getInstance("HmacSHA256");
   hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));

   String control = Base64.encodeBase64String(hasher.doFinal(message.getBytes())).toUpperCase();
   string message = x_login + result +  x_amount + x_invoice;
   byte[] keyByte = new ASCIIEncoding().GetBytes(secretKey);
   byte[] messageBytes = new ASCIIEncoding().GetBytes(message);
   byte[] hashmessage = new HMACSHA256(keyByte).ComputeHash(messageBytes);

   string control = BitConverter.ToString(hashmessage).Replace("-", "").ToUpper();

Once the customer finishes his deposit, he will be redirected to your return URL: The x_return parameter specified as part of the new invoice request OR the one registered in your panel settings (Settings -> API Access). We only accept HTTPS URLs. The redirect is made using POST protocol with the following parameters:

Field Description
result Transaction result. See: Api Codes
x_invoice Unique identification for the transaction in your end
x_iduser Unique user ID in your side
x_description Transaction's description
x_document Unique transaction's ID at Directa24
x_bank Payment method code. See payment methods
x_amount Payment's amount
x_control Control signature

Control String for Return URL

The return URL control signature includes the following fields:

Confirmation URL

Example: confirmation url - control signature

    #Check php, Java and C# examples
<?php
   $message = $x_login . $result . $x_amount . $x_invoice ;
   $control = strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $secretKey)));
?>
   String message = x_login + result +  x_amount + x_invoice;
   Mac hasher = Mac.getInstance("HmacSHA256");
   hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));

   String control = Base64.encodeBase64String(hasher.doFinal(message.getBytes())).toUpperCase();
   string message = x_login + result +  x_amount + x_invoice;
   byte[] keyByte = new ASCIIEncoding().GetBytes(secretKey);
   byte[] messageBytes = new ASCIIEncoding().GetBytes(message);
   byte[] hashmessage = new HMACSHA256(keyByte).ComputeHash(messageBytes);

   string control = BitConverter.ToString(hashmessage).Replace("-", "").ToUpper();

A notification will be sent with every change in the deposit's status to your confirmation URL using the x_confirmation parameter specified as part of the new invoice request or the one registered in your panel settings (Settings -> API Access). It is made using POST protocol with the following parameters:

alt steps

Field Description
result Transaction result. See possible results
x_invoice Unique identification for the transaction in your end
x_iduser Unique user ID in your side
x_description Transaction's description
x_document Unique transaction's ID at Directa24
x_bank Payment method code. See Payment methods
x_payment_type Payment type. See payment types
x_bank_name The bank's name
x_amount Payment's amount
x_currency Payment's currency in ISO 4217
x_control Control signature

Control String for Confirmation URL

The confirmation URL control signature includes the following fields:

Iframe

Example: Iframe

<iframe src="[link to redirect the user]&iframe_view=1"> </iframe>

It is possible to display an iframe on your website instead of redirecting your customer.

In order to do this, you need to insert an iframe tag on your website. In the src attribute you must set the link: [link to redirect the user] parameter from success response and append the following GET parameter "iframe_view=1" to the link.

API: Deposit Status

This function allows you to request the status of a deposit.

Production POST https://api.directa24.com/apd/webpaystatus

Staging POST https://api-stg.directa24.com/apd/webpaystatus

Fields

Example request: check deposit status

    curl -X POST \
      https://api-stg.directa24.com/apd/webpaystatus \
      -H 'Content-Type: application/x-www-form-urlencoded' \
      -d 'x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_invoice=74170514&type=json'
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api-stg.directa24.com/apd/webpaystatus",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_invoice=74170514&type=json",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/x-www-form-urlencoded"
  ),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
   OkHttpClient client = new OkHttpClient();
   MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
   RequestBody body = RequestBody.create(mediaType, "x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_invoice=74170514&type=json");
   Request request = new Request.Builder()
     .url("https://api-stg.directa24.com/apd/webpaystatus")
     .post(body)
     .addHeader("Content-Type", "application/x-www-form-urlencoded")
     .build();
   Response response = client.newCall(request).execute();
   var client = new RestClient("https://api-stg.directa24.com/apd/webpaystatus");
   var request = new RestRequest(Method.POST);
   request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
   request.AddParameter("application/x-www-form-urlencoded", "x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_invoice=74170514&type=json", ParameterType.RequestBody);
   IRestResponse response = client.Execute(request);
Field Format Description
x_login string (max length: 32) Your Directa24 WEB STATUS API login, found on Settings -> API Access.
x_trans_key string (max length: 32) Your Directa24 WEB STATUS API trans_key, found on Settings -> API Access.
x_invoice string (max length: 125) The transaction's ID in your end to verify its status
type string (max length: 20) The format of the response: JSON, XML or STRING. If none is specified the response will be a pipe separeted string.
Response

A success response will have the following fields:

Example: deposit status success response

{
    "result": "9",
    "x_iduser": "598287267",
    "x_invoice": "MP_96ddb6ab85a347469e326887e6708182",
    "x_amount": "3.00",
    "PT": "0",
    "Sign": "7EA302A09DBE4B22DB47E7FDDA5E3EEF9F098C6792882392B6E4C5A732CA79BE",
    "x_document": "199702505",
    "x_bank": "VI",
    "x_payment_type": "03",
    "x_bank_name": "Visa",
    "x_currency": "USD",
    "x_approval_detail": "Merchant Test",
    "card_number": "410377******2126"
}

Example: deposit status not found response

{
    "result": "6",
    "x_iduser": "0",
    "x_invoice": "MP_96ddb6ab8ff5a347469e326887e6708182",
    "x_amount": "0",
    "PT": "0",
    "Sign": "38EB21EB314BA4CAEC51ACF30BBE129A03E5A6990BB3EF42F49FBA5AFDA10EC3",
    "x_document": "-1",
    "x_bank": " ",
    "x_payment_type": "0",
    "x_bank_name": " ",
    "x_currency": " "
}
Field Description
result Transaction status. See possible status.
x_iduser Unique user ID in your side
x_invoice Unique identification for the transaction in your end
x_amount Payment's amount
PT Indicates whether the transaction was created with Test purposes or not, with the values: 0 for Production, 1 for Test.
Sign Control signature
x_document Unique transaction's ID at Directa24
x_bank Bank code. See bank codes.
x_payment_type Payment type. See payment's types.
x_bank_name The bank's name.
x_currency Transaction's currency in ISO 4217
x_approval_detail Deposit's description
card_number Credit Card info

Control signature

Example: Webpaystatus control signature

    #Check php, Java and C# examples
<?php
   $message = $x_login . $result . $x_amount . $x_invoice ;
   $Sign = strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $secretKey)));
?>
   String message = x_login + result +  x_amount + x_invoice;
   Mac hasher = Mac.getInstance("HmacSHA256");
   hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));

   String Sign = Base64.encodeBase64String(hasher.doFinal(message.getBytes())).toUpperCase();
   string message = x_login + result +  x_amount + x_invoice;
   byte[] keyByte = new ASCIIEncoding().GetBytes(secretKey);
   byte[] messageBytes = new ASCIIEncoding().GetBytes(message);
   byte[] hashmessage = new HMACSHA256(keyByte).ComputeHash(messageBytes);

   string Sign = BitConverter.ToString(hashmessage).Replace("-", "").ToUpper();

The response control signature includes the following fields:

API: Deposit Refund

This function allows you to request a partial or complete refund over a completed transaction. The refund's amount can't be higher than the transaction's amount minus all existing refunds completed or pending over the same transaction.

Production POST https://api.directa24.com/api_curl/apd/refund

Staging POST https://api-stg.directa24.com/api_curl/apd/refund

Fields

Example request: refund

    curl -X POST \
      https://api-stg.directa24.com/api_curl/apd/refund \
      -H 'Content-Type: application/x-www-form-urlencoded' \
      -d 'x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_amount=10&x_invoice=74170514&x_document=4554231&x_bank_beneficiary=John%20Smith&x_bank=Banco%20do%20Brasil&x_bank_account=88365484&x_account_type=S&x_bank_branch=7197&x_comments=Refund%20for%20Jonh%20Smith&x_control=X_CONTROL&type=json'
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api-stg.directa24.com/api_curl/apd/refund",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_amount=10&x_invoice=74170514&x_document=4554231&x_bank_beneficiary=John%20Smith&x_bank=Banco%20do%20Brasil&x_bank_account=88365484&x_account_type=S&x_bank_branch=7197&x_comments=Refund%20for%20Jonh%20Smith&x_control=X_CONTROL&type=json",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/x-www-form-urlencoded"
  ),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
   OkHttpClient client = new OkHttpClient();
   MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
   RequestBody body = RequestBody.create(mediaType, "x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_amount=10&x_invoice=74170514&x_document=4554231&x_bank_beneficiary=John%20Smith&x_bank=Banco%20do%20Brasil&x_bank_account=88365484&x_account_type=S&x_bank_branch=7197&x_comments=Refund%20for%20Jonh%20Smith&x_control=X_CONTROL&type=json");
   Request request = new Request.Builder()
     .url("https://api-stg.directa24.com/api_curl/apd/refund")
     .post(body)
     .addHeader("Content-Type", "application/x-www-form-urlencoded")
     .build();
   Response response = client.newCall(request).execute();
   var client = new RestClient("https://api-stg.directa24.com/api_curl/apd/refund");
   var request = new RestRequest(Method.POST);
   request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
   request.AddParameter("application/x-www-form-urlencoded", "x_login=X_LOGIN&x_trans_key=X_TRANS_KEY&x_amount=10&x_invoice=74170514&x_document=4554231&x_bank_beneficiary=John%20Smith&x_bank=Banco%20do%20Brasil&x_bank_account=88365484&x_account_type=S&x_bank_branch=7197&x_comments=Refund%20for%20Jonh%20Smith&x_control=X_CONTROL&type=json", ParameterType.RequestBody);
   IRestResponse response = client.Execute(request);
Field Format Mandatory Description
x_login string (max length: 32) Your Directa24 DEPOSITS API login, found on the merchants area: Settings -> API Access
x_trans_key string (max length: 32) Your Directa24 DEPOSITS API trans_key, found on the merchants area: Settings -> API Access
x_invoice string (max length: 125) Transaction's ID in your end
x_document string (max length: 11) Unique transaction's ID at Directa24
x_amount decimal (max decimal numbers: 2) The amount you want to refund. If none is sent the total transaction amount in local currency will be assumed.
x_currency string (max length: 3) The currency used for the amount specified. If none is sent, the country local currency will be assumed.
x_bank_beneficiary string (max length: 100) User’s full name
x_bank string (max length: 45) User's bank name
x_bank_account string (max length: 45) User's bank account number
x_account_type string (max lenght: 1) User's account type:
  • C: current accounts
  • S: savings accounts
  • V: salary accounts
  • O: joint checking accounts
  • P: joint savings account
x_bank_branch string (max lenght: 15) User's bank branch name
x_comments string (max lenght: 200) A comment for the refund
x_control string (max length: 32) Control signature
type string (max length: 20) The format of the response: XML, JSON or STRING . If none is specified JSON will be assumed.

Control signature

Example: refund request - control signature

    #Check php, Java and C# examples
<?php
   $message = 'A'. $x_invoice . $x_document. $x_amount . $x_bank_beneficiary . $x_bank . $x_bank_account . $x_account_type . $x_bank_branch;
   $control = strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $secretKey)));
?>
   String message = "A" + x_invoice + x_document + x_amount + x_bank_beneficiary + x_bank + x_bank_account + x_account_type + x_bank_branch;
   Mac hasher = Mac.getInstance("HmacSHA256");
   hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));

   String control = Base64.encodeBase64String(hasher.doFinal(message.getBytes())).toUpperCase();
   string message = "A" + x_invoice + x_document + x_amount + x_bank_beneficiary + x_bank + x_bank_account + x_account_type + x_bank_branch;
   byte[] keyByte = new ASCIIEncoding().GetBytes(secretKey);
   byte[] messageBytes = new ASCIIEncoding().GetBytes(message);
   byte[] hashmessage = new HMACSHA256(keyByte).ComputeHash(messageBytes);

   string control = BitConverter.ToString(hashmessage).Replace("-", "").ToUpper();

The refund control signature must include the following fields (optional fields can be treated as empty strings):

Response

Example: refund success response

{
  "status": "OK",
  "desc": "Pending",
  "control": "28F11DB2C7F4E3D1A1563C642AF8712EABE7E25540D36C8285887D3477107EA8",
  "result": "0",
  "x_invoice": "74170514",
  "x_document": "4554231",
  "x_amount": "10",
  "x_currency": "BRL",
  "x_amount_refunded": "10",
  "x_refund": "14311386"
}

Example: refund failed response

{
  "status": "ERROR",
  "description": "Invalid control string",
  "error_code": "302"
}

Example: refund response - control signature

    #Check php, Java and C# examples
<?php
   $message = $result . $x_amount. $x_currency . $x_invoice . $x_document .$x_refund;
   $control = strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $secretKey)));
?>
   String message = result + x_amount + x_currency + x_invoice + x_document + x_refund;
   Mac hasher = Mac.getInstance("HmacSHA256");
   hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));

   String control = Base64.encodeBase64String(hasher.doFinal(message.getBytes())).toUpperCase();
   string message = result + x_amount + x_currency + x_invoice + x_document + x_refund;
   byte[] keyByte = new ASCIIEncoding().GetBytes(secretKey);
   byte[] messageBytes = new ASCIIEncoding().GetBytes(message);
   byte[] hashmessage = new HMACSHA256(keyByte).ComputeHash(messageBytes);

   string control = BitConverter.ToString(hashmessage).Replace("-", "").ToUpper();
Field Description
status Refund's status, could be OK or Error (see possible status).
desc Response description: "Pending" / "Completed" / "Rejected" / "Cancelled" / error_message (see possible errors).
control Control signature.
result Refund's result (see possible results).
x_invoice Unique identification for the transaction in your end.
x_document Unique transaction's ID at Directa24.
x_amount Refund's amount (same as the request).
x_currency Refund's currency (same as the request).
x_amount_refunded The refunded amount, in local currency.
x_refund Unique refund's reference at Directa24.
error_code Returned only when the status is Error.

Control signature

The response control signature includes the following fields:

API: Deposit Refund Status

This function allows you to verify a refund's status

Production POST https://api.directa24.com/api_curl/query/refundstatus

Staging POST https://api-stg.directa24.com/api_curl/query/refundstatus

Fields
Field Format Description
x_login string (max length: 32) Your Directa24 WEB STATUS API login, found on Settings -> API Access.
x_trans_key string (max length: 32) Your Directa24 WEB STATUS API trans_key, found on Settings -> API Access.
x_refund string (max length: 20) The refund's ID at Directa24
Response

A success response will have the following fields:

Field Description
result Transaction status. See possible status.
x_invoice Unique identification for the transaction in your end
x_document Unique transaction's ID at Directa24

API: Get Available Methods

Example: get_banks_by_country Request

<?php
curl -X POST \
  https://api.directa24.com/api_curl/apd/get_banks_by_country \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Postman-Token: 8ac343ce-b3f4-4750-a71f-52afc8b9d805' \
  -H 'cache-control: no-cache' \
  -d 'x_login=API_LOGIN&x_trans_key=API_TRANS_KEY&country_code=CL&type=json&undefined='
?>
    Check Shell example
    Check Shell example
    Check Shell example 

Example: get_banks_by_country Response

[
    {
        "code": "AV",
        "name": "BBVA Colombia",
        "logo": "https://resources.directa24.com/cashin/payment_method/square/AV.svg",
        "payment_type": "01"
    },
    {
        "code": "GC",
        "name": "Gana Cerca de Ti",
        "logo": "https://resources.directa24.com/cashin/payment_method/square/GC.svg",
        "payment_type": "02"
    }
]
    Check Shell example
    Check Shell example
    Check Shell example 

The get_banks_by_country API returns a list of the available Payment Methods for a specific country. Use this API to show the available methods to your customer on the Deposit Page.

The same information can be retrieved from the Merchants Panel by going to the Payment Methods section.

Production POST https://api.directa24.com/api_curl/apd/get_banks_by_country

Staging POST https://api-stg.directa24.com/api_curl/apd/get_banks_by_country

Fields
Field Format Description
x_login string (max length: 32) Your Directa24 DEPOSITS API login, found on the merchants area: Merchants Settings -> API Access -> Deposit Credentials
x_trans_key string (max length: 32) Your Directa24 DEPOSITS API trans_key, found on the merchants area: Merchants Settings -> API Access -> Deposit Credentials
country_code String (2 chars) The user’s country code. Click here to see country codes.
type String Response type. Example: json, xml


Click here for each payment_type code meaning shown in the get_banks_by_country API response.

API: Currency exchange

The webcurrencyexchange API responds with the conversion of your amount to the countries' local currency.

Production POST https://api.directa24.com/apd/webcurrencyexchange

Staging POST https://api-stg.directa24.com/apd/webcurrencyexchange

Fields
Field Format Description
x_login string (max length: 32) Your Directa24 DEPOSITS API login, found on the merchants area: Settings -> API Access -> Deposit Credentials
x_trans_key string (max length: 32) Your Directa24 DEPOSITS API trans_key, found on the merchants area: Settings -> API Access -> Deposit Credentials
x_country String (2 chars) The country code of the country whose currency exchange rate you want to know
x_amount Decimal(max 2 decimal numbers) The amount of USD you want to exchange. Optional. Default: 1

Hybrid Integration

The Hybrid Integration allows you to simply redirect your customers to a check-in page of us. Therefore, you avoid having to ask and validate all the customers´ details.

Hybrid Deposit Flow

After you generate a request through the Hybrid API, we will respond you back with a unique link you can store and use to redirect the customer to our check-in page where we will show them all the different Payment Methods you have for the country you specified at the time of doing the request. The customer then will select the payment method and fill the details needed. After that, we will redirect them to the payment method checkout page to complete the payment.

- Choose payment method

- Insert missing details

- Pay

1 - The customer requests to deposit in your site.

2 - You use our API to request a link. Here you specify the customer´s country, the amount to deposit, a customer´s ID and a unique ID that will identify the deposit on our Merchant Panel.

3 - We responde you back with a link you can store and use to redirect the customer at any time.

4 - The customer selects the Payment Method, completes the information required and click on "Confirm details".

5 - At this point, if all the details were correct we will create the deposit in Pending state and redirect the customer to:

You will be able to see the Deposit details and status in our Merchant Panel or through our Deposit Status API using the unique ID you specified early.

6 - The customer makes the Cash Deposit, the Electronic Bank Transfer or the Credit/Debit Card payment.

7 - After the payment has been made, the customer is returned to your site (to whichever “Return URL” you specified or have configured in the Merchant Panel). See Return URL.

8 - Once the payment is confirmed by the Bank/Credit Card company, Directa24 will send the transaction result to your confirmation URL. See Confirmation URL.

Hybrid API: Deposit Creation

Example request: Hybrid deposit creation

curl -X POST \
    https://api-stg.directa24.com/api_curl/apd/create \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -d 'x_login=DEPOSITS_X_LOGIN&x_trans_key=DEPOSITS_X_TRANS_KEY&x_invoice=ID12345&x_amount=100&x_iduser=123456&x_country=BR&control=18F7889C2D4D9E9A21ABF2EBB4038322D60028DE949FB2DA2A4BB91AFB67D5CF&type=json'
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api-stg.directa24.com/api_curl/apd/create",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "x_login=DEPOSITS_X_LOGIN&x_trans_key=DEPOSITS_X_TRANS_KEY&x_invoice=ID12345&x_amount=100&x_iduser=123456&x_country=BR&control=18F7889C2D4D9E9A21ABF2EBB4038322D60028DE949FB2DA2A4BB91AFB67D5CF&type=json",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/x-www-form-urlencoded"
  ),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
   OkHttpClient client = new OkHttpClient();
   MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
   RequestBody body = RequestBody.create(mediaType, "x_login=DEPOSITS_X_LOGIN&x_trans_key=DEPOSITS_X_TRANS_KEY&x_invoice=ID12345&x_amount=100&x_iduser=123456&x_country=BR&control=18F7889C2D4D9E9A21ABF2EBB4038322D60028DE949FB2DA2A4BB91AFB67D5CF&type=json");
   Request request = new Request.Builder()
     .url("https://api-stg.directa24.com/api_curl/apd/create")
     .post(body)
     .addHeader("Content-Type", "application/x-www-form-urlencoded")
     .build();
   Response response = client.newCall(request).execute();
   var client = new RestClient("https://api-stg.directa24.com/api_curl/apd/create");
   var request = new RestRequest(Method.POST);
   request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
   request.AddParameter("x_login=DEPOSITS_X_LOGIN&x_trans_key=DEPOSITS_X_TRANS_KEY&x_invoice=ID12345&x_amount=100&x_iduser=123456&x_country=BR&control=18F7889C2D4D9E9A21ABF2EBB4038322D60028DE949FB2DA2A4BB91AFB67D5CF&type=json", ParameterType.RequestBody);
   IRestResponse response = client.Execute(request);

Example: success response

{
    "status": "OK",
    "link": "https://payin-stg.directa24.com/validate/exampleEDQ7EUuBGdItCvQsYcphwBYFuPIV1lLM"
}

Example: failed response

{
    "status": "ERROR",
    "desc": "[Error description]"
}

{
    "status": "ERROR",
    "desc": "x_amount: wrong argument type"
}

The Hybrid API creates an URL to redirect the customers to our page and once everything is ready, we redirect the customer to the payment site.

Production POST https://api.directa24.com/api_curl/apd/create

Staging POST https://api-stg.directa24.com/api_curl/apd/create

The request has to be made through a POST request to the above URL with "content-type: application/x-www-form-urlencoded" in the header as well as the data has to be sent as Form Data. Please remember to whitelist the IP of your servers under the "IP address list" section of the "Deposit credentials" box on our Merchant Panel by going to Settings -> API Access.

Fields - Hybrid API Deposits

Field Mandatory Format Description
x_login string (max length: 32) Your Directa24 DEPOSITS API x_login, found on the Merchant Panel: Settings -> API Access -> Deposit Credentials
x_trans_key string (max length: 32) Your Directa24 DEPOSITS API x_trans_key, found on the Merchant Panel: Settings -> API Access -> Deposit Credentials
x_invoice string (max length: 125) Unique identification for the deposit transaction in your side. It can be also used to retrieve the status of the transaction
x_iduser number (max digits: 125) Unique customer ID in your side
x_amount decimal (up to 10 digits with up to 4 decimals) Transaction's amount in USD
x_country string (max length: 2) Customer’s country. Click here to see country codes.
control string (max length: 32) Control string encoded using HMAC-SHA-256 (RFC 2104) to ensure request´s integrity. Click here for further information
x_currency string (max length: 3) Currency in which the amount will be specified. Click here to see the available currencies per country.
x_bank string (max length: 3) Payment method code (see Payment Methods). To check the available Payment Methods for your account, you can use the get_banks_by_country API
cpf String (max digits: 30) Customer´s personal identification number. Click here to see the validations.
x_name string (max length: 50) Customer’s full name
x_email string (max length: 100) Customer’s valid email address. Click here to see email validations.
type string (max length: 20) The format of the response: XML or JSON. If none is specified XML will be assumed.
x_logo string (URL) (max length: 200) Your company´s logo to show in our check-in page
x_return string (URL) (max length: 200) URL where you would like to redirect the customers once they finish the deposits. It has to be a valid URL over HTTPS (I.e.: https:\\www.directa24.com). See Return URL
x_confirm string (URL) (max length: 200) URL specified where we will send the deposit notifications. It has to be a valid URL over HTTPS (I.e.: https:\\www.directa24.com\notify)
x_description string (max length: 200) Description of the transaction

Optional Fields - Hybrid API Deposits

When you use the Hybrid API, you can opt for sending only the mandatory fields. However, when the customers gets into the check-in page, we will ask them to input the missing information. If you send the x_cpf, x_name, and x_email fields, the information will be automatically filled onto the check-in page and therefore, the customers won´t have to manually insert it nor will be able to modify it. This is extremely useful when you already have that details on your database.

Control String for the Hybrid API requests

Example: Control signature for Hybrid API

    #Check php, Java and C# examples
<?php
   $secretKey = 'your_deposits_secret_key';
   $message = $x_invoice .'D' . $x_amount .'P' . $x_iduser .'A';

   $control = strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $secretKey)));
?>
   String secretKey = "your_deposits_secret_key";
   String message = x_invoice + "D" + x_amount + "P" + x_iduser + "A";
   Mac hasher = Mac.getInstance("HmacSHA256");
   hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));

   String control = Base64.encodeBase64String(hasher.doFinal(message.getBytes())).toUpperCase();
   string secretKey = "your_deposits_secret_key";
   string message = x_invoice + "D" + x_amount + "P" + x_iduser + "A";
   byte[] keyByte = new ASCIIEncoding().GetBytes(secretKey);
   byte[] messageBytes = new ASCIIEncoding().GetBytes(message);
   byte[] hashmessage = new HMACSHA256(keyByte).ComputeHash(messageBytes);

   string control = BitConverter.ToString(hashmessage).Replace("-", "").ToUpper();

The Control field is a mandatory field used to ensure request integrity. It should be created using HMAC-SHA-256 (RFC 2104) encoding and must include ONLY the following fields:

The Control String for the Hybrid API must be in Upper Case and must include all the above mentioned fields. Each field should be converted to UTF-8 before actually hashing it to prevent Invalid Control Hash error when sending characters with different encodings. Please check the Examples in the different languages on how to properly calculate the Control String.

Hybrid API: Check Status

Example: POST to the Return URL

{
    "x_document": "94581245",
    "x_invoice": "test8385",
    "x_iduser": "1342133413",
    "x_description": "",
    "x_amount": "100.00",
    "x_amount_usd": "100.00",
    "result": "7",
    "x_parent_invoice": "",
    "x_control": "225A6B7EC24E049E9A7D8EE622F7F08ED6B4551A1A6E99CE231759D8694FAC99"
}

Once you redirect your customers to our check-in page, they will complete all the details and click on Confirm details. If everything is OK, a transaction in our Merchant Panel will be created in Pending status until we detect the customer´s payment. Once detected, the transaction will be changed to Completed state or if the user never pays it will expire and be updated to Cancelled state.

As soon as the user comes back to your Return URL, a POST request will come along with it with the details of the request as shown in the code snippet "Example: POST to the Return URL".

Control String for the POST to the Return URL

Example: Control signature for the POST to the Return URL

    #Check php, Java and C# examples
<?php
    $x_login = 'your_deposits_x_login';
    $x_result = 'notification_x_result';
    $x_amount = 'notification_x_amount';
    $x_invoice = 'notification_x_invoice';
    $secretKey = 'your_deposits_secret_key';

    $message = $x_login . $x_result . $x_amount . $x_invoice;
    $control = strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $secretKey)));
?>
    String x_login = "your_deposits_x_login";
    String x_result = "notification_x_result";
    String x_amount = "notification_x_amount";
    String x_invoice = "notification_x_invoice";
    String secretKey = "your_deposits_secret_key";

    String message = x_login + x_result + x_amount + x_invoice;
    Mac hasher = Mac.getInstance("HmacSHA256");
    hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));

    String control = Base64.encodeBase64String(hasher.doFinal(message.getBytes())).toUpperCase();
    string x_login = "your_deposits_x_login";
    string x_result = "notification_x_result";
    string x_amount = "notification_x_amount";
    string x_invoice = "notification_x_invoice";
    string secretKey = "your_deposits_secret_key";

    string message = x_login + x_result + x_amount + x_invoice;
    byte[] keyByte = new ASCIIEncoding().GetBytes(secretKey);
    byte[] messageBytes = new ASCIIEncoding().GetBytes(message);
    byte[] hashmessage = new HMACSHA256(keyByte).ComputeHash(messageBytes);

    string control = BitConverter.ToString(hashmessage).Replace("-", "").ToUpper();

The x_control field we sent in the notification, is used to ensure request integrity. It should be created using HMAC-SHA-256 (RFC 2104) encoding and must include ONLY the following fields:

The Control String for the POST of the Return URL Hybrid API must be in Upper Case and must include all the above mentioned fields. Each field should be converted to UTF-8 before actually hashing it to prevent Invalid Control Hash error when sending characters with different encodings. Please check the Examples in the different languages on how to properly calculate the Control String.

Hybrid API: Webpaystatus API

Example: webpaystatus API´s response in Pending status

{
    "result": "7",
    "x_iduser": "123456",
    "x_invoice": "test9417",
    "x_amount": "100.00",
    "PT": "0",
    "Sign": "EB2619F51E2730F59E742E6DC2AE692FE98B7141A0578259A0B5C5E74159AFD3",
    "x_document": "192170814",
    "x_bank": "MC",
    "x_payment_type": "03",
    "x_bank_name": "Mastercard",
    "x_currency": "USD"
}

Example: webpaystatus API´s response transaction not found

{
    "result": "6",
    "x_iduser": "0",
    "x_invoice": "test9417z",
    "x_amount": "0",
    "PT": "0",
    "Sign": "691332E815899FF50610C30D58E930FF6E5D8001458CD0790A5F468B29F712A8",
    "x_document": "-1",
    "x_bank": " ",
    "x_payment_type": "0",
    "x_bank_name": " ",
    "x_currency": " "
}

If the user fails to be redirected to your return_url, you won´t be notified about the transaction in Pending state until it changes to either "Completed" or "Cancelled". Therefore, after some minutes (recommended 5 minutes) of the requests being created, you can opt to use the webpaystatus API to check whether the transaction was created and left Pending in our end. That would happen only if the customer finished the flow on the Hybrid Check-in page and was redirected to the Payment Method page to deposit.

If the transaction was created, when you check its status with the webpaystatus API, you will receive a response with "result": "7" along with other details about the transaction. Result 7 means "Transaction Pending, awaiting customer's deposit". If the transaction was never created, be it because the user inserted incorrect data or they have never completed the flow, when you use the webpaystatus API you will receive a response with "result": "6": "Transaction not found on the system". Feel free to check its status again after some more time in case the user is delayed.

Click here for all the results code meanings.

















Hybrid API: Notifications

Example notification: Transaction completed

{
    "result": "9",
    "x_currency": "USD",
    "x_amount": "100.00",
    "x_description": "",
    "x_iduser": "1342133413",
    "x_bank_name": "Banco%20do%20Brasil",
    "x_document": "94580928",
    "x_bank": "BB",
    "x_payment_type": "00",
    "x_amount_usd": "100.00",
    "x_control": "85D9DF316186318C327F0C10D3926138FF6327D25B8601AEFC5156484BB417BB",
    "x_invoice": "test9349"
}

Example notification: Transaction canceled (expired)

{
    "result": "8",
    "x_currency": "USD",
    "x_amount": "100.00",
    "x_description": "",
    "x_iduser": "1342133413",
    "x_bank_name": "Banco%20do%20Brasil",
    "x_document": "94580929",
    "x_bank": "BB",
    "x_payment_type": "00",
    "x_amount_usd": "100.00",
    "x_control": "C267884F0B0BF30224AF2BF1321E387034D1AA08F890A3BF576922EE2A70B3A2",
    "x_invoice": "test6337"
}

If the transaction was successfully created, you will receive a notification in the URL specified in the x_confirm field every time it changes its status. A result 9 in case the payment was completed. At that moment, you can release the funds to the customer in your website as the payment has been detected and the funds are now in your account. A result 8 in case the payment was never completed before it reached its expiration time.

Click here for all the result codes meanings.

Full API Integration

If you are PCI Compliant and want to develop your own Credit Card checkout page, integrate our Directa24 Full API integration.

Reach us out at integration@directa24.com and ask for information about this integration.

Payment methods

This is the full list of Payment Method codes, check with your commercial representative regarding other methods not in the list.

On the Merchant Panel you can check what methods your account has enabled by going to the "Payment Methods" section on the left menu. The Payment Method availability is real time updated on the panel.

America Payment Methods

Brazil Payment Methods
Code Description Available for Staging Available in iframe
B Bradesco
BB Banco do Brasil
BL Boleto
CA Caixa
I Itau
SB Santander
PP PicPay
BZ Banco Original
SF Banco Safra
UL Banrisul
LC Loterias Caixa
Chile Payment Methods
Code Description Available for Staging Available in iframe
BE Banco Estado
BX Banco de Chile
CE Banco BICE
CI Banco BCI
LE Credichile
LL Falabella
MJ MultiCaja
TY Security
IA Itau
SC Santander
WP WebPay
Colombia Payment Methods
Code Description Available for Staging Available in iframe
BU Baloto
EY Efecty
RV Redservi
PD Punto Red
AV BBVA
BN Bancolombia
PC PSE
EX Almacenes Exito
CR Carulla
SX Surtimax
RD Su Red
OS Acertemos
TA Cucuta 75
UA Apuestas Unidas
GG Gana Gana
GC Gana cerca de ti
JE JER
LP La perla
TP Paga Todo
CX Su Chance
LF La 14
XU Con Suerte
XS Colsubsidio
XI Superinter
XC Coopenessa
XT Copetran
DQ Edeq
DX Dimonex
FG FullCarga
MR Moviired
VI VISA
MC Master Card
DC Dinners
AE American Express
Ecuador Payment Methods
Code Description Available for Staging Available in iframe
FO Facilito
GB Banco Guayaquil
PX Banco Pichincha
VI VISA
MC Master Card
Mexico Payment Methods
Code Description Available for Staging Available in iframe
OX OXXO
BV BBVA Bancomer
BM Banamex
BQ Banorte
SM Santander
SE Spei
TC Todito Cash
AZ Banco Azteca
PN PayNet
BW Bodega Aurera
CU Circulo K
EN 7 Eleven
FA Farmacias del ahorro
FB Farmacias Benavides
SS Sams club
SU Superama
WA Walmart
VI VISA
VD VISA Debit
MC Master Card
MD Master Card Debit
AE American Express
Panama Payment Methods
Code Description Available for Staging Available in iframe
DI Credicorp
Paraguay Payment Methods
Code Description Available for Staging Available in iframe
PE Pago Express
Peru Payment Methods
Code Description Available for Staging Available in iframe
EF PagoEfectivo
IB Interbank
BC BCP
ST Scotia
WU Western Union
BP BBVA Peru
HC Caja Huancayo
US Caja Cusco
JA Caja Arequipa
JI Caja ICA
JP Caja Piura
JR Caja Trujillo
JT Caja Tacna
Uruguay Payment Methods
Code Description Available for Staging Available in iframe
RE Red Pagos

Africa Payment Methods

Cameroon Payment Methods
Code Description Available for Staging Available in iframe
UB UBA
VI VISA - Credit and Debit cards
MC MasterCard - Credit and Debit cards
Côte d'Ivoire Payment Methods
Code Description Available for Staging Available in iframe
VI VISA - Credit and Debit cards
MC MasterCard - Credit and Debit cards
Ghana Payment Methods
Code Description Available for Staging Available in iframe
AL Airtel Money
MT MTN
VI VISA - Credit and Debit cards
MC MasterCard - Credit and Debit cards
Kenya Payment Methods
Code Description Available for Staging Available in iframe
MP M-Pesa
PL PesaLink
VI VISA - Credit and Debit cards
MC MasterCard - Credit and Debit cards
Nigeria Payment Methods
Code Description Available for Staging Available in iframe
AA Paga
UB UBA
VI VISA - Credit and Debit cards
MC MasterCard - Credit and Debit cards
South Africa Payment Methods
Code Description Available for Staging Available in iframe
VI VISA - Credit and Debit cards
MC MasterCard - Credit and Debit cards
Tanzania Payment Methods
Code Description Available for Staging Available in iframe
AL Airtel Money
MP M-Pesa
TG Tigo
VI VISA - Credit and Debit cards
MC MasterCard - Credit and Debit cards
Uganda Payment Methods
Code Description Available for Staging Available in iframe
VI VISA - Credit and Debit cards
MC MasterCard - Credit and Debit cards

Asia Payment Methods

China Payment Methods
Code Description Available for Staging Available in iframe
AR Agricultural Bank of China
BH Bank of China
BJ Bank of Beijing
BS Bank of Communications
CC China Construction Bank
CG China Guangfa Bank
CH China Merchants Bank
CN China Citic Bank
HX Huaxia Bank
HZ Bank of Hangzhou
IC Industrial Bank
ID Industrial and Commercial
Bank of China
MN China Minsheng Bank
NN Bank of Ningbo
PI PingAn Bank
PO China Postal Savings Bank
SD Shangai Pudong Dev Bank
SH Bank of Shangai
India Payment Methods
Code Description Available for Staging Available in iframe
WL eWallets
NB Indian NetBanking
UI UPI
Indonesia Payment Methods
Code Description Available for Staging Available in iframe
CZ Bank Central Asia
NG Bank Negara Indonesia
RK Bank Rakyat Indonesia
Malaysia Payment Methods
Code Description Available for Staging Available in iframe
MB AmBank
BY CIMB Bank
HO Hong Leong Bank
MY Maybank
PU Public Bank
RH RHB Bank
Philippines Payment Methods
Code Description Available for Staging Available in iframe
DP Dragonpay
Thailand Payment Methods
Code Description Available for Staging Available in iframe
KB Bangkok Bank
KK Kasikorn Bank
KT Krug Thai Bank
SA Siam Commercial Bank
Vietnam Payment Methods
Code Description Available for Staging Available in iframe
AS Asia Commercial Bank
DO DongA Bank
IV Bank for Investment and
Development of Vietnam
SK Sacombank
TH Techcombank
VT Vietcombank
VN Vietin Bank

API Codes

Deposit Status Codes

These are the codes returned by the WEBSTATUS API.

Code Description
6 Transaction not found on the system
7 Transaction Pending, awaiting customer's deposit
8 Transaction automatically Canceled, the deposit hasn't been done
9 Transaction Paid

Refund Status Codes

These are the codes returned by the Refund Status API.

Code Description
0 Refund pending
1 Refund completed. Final status
2 Refund canceled. Final status
3 Refund rejected or failed. Final status

Payment types

Code Description
00 Online Bank Transfer (TEF)
01 Bank transfer
02 Voucher
03 Debit or Credit Card

Errors

Code Description Action
300 Invalid params + [param name] Ask the user to re-enter the information related to that parameter
301 Empty params + [param name] The parameter must be included in the request and must not be empty. If the parameter contains information filled by the user, ask the user to fill the information. If the parameter is filled automatically on the merchant's side (x_login, x_trans_key, x_invoice, x_iduser or control), there is an integration error. Please include this parameter in the request.
302 Invalid control string Integration problem. Please see Control string instructions
401 Invalid credentials Integration problem. Check in the merchant's panel which are the correct credentials. Staging and Production credentials are different
402 Unregistered IP address Whitelist the IP in the merchant's panels by going to Settings -> API Access (Notice the IPs for Deposits and Cashouts are different)
409 Missing configuration for merchant account Reach out to integration@directa24.com and mention the error message shown
500 Generic error Internal error, please contact support
502 User unauthorized For further information go to section "Clients" option on the left menu
503 User blacklisted The user is known for committing fraud. You can ask this for review, find the client on the "Clients" option on the left menu, select the user and click on the three dots on the top right, and "Flag for review"
504 User unauthorized due to cadastral situation Check the user's cadastral situation
505 Country not found Send a valid country ISO code. Click here to see the list of countries.
506 Payment method not found The Payment Method Code sent on the x_bank field isn't correct, or the Payment Method isn't enabled for your Merchant account (Use the get_banks_by_country API to diagnose this)
508 The user limit has been exceeded Check the user's limit on the panel under the "Clients" option on the left menu
515 Invalid amount The amount does not reach the minimum limit of USD 2
516 Invalid invoice For functions: newInvoice and refund, it means the invoice already exists. For functions: payment status and refund status, it means the invoice was not found.
517 Invalid country The country does not exists
518 Too many consecutive attempts for user (Velocity Check) This happens when the user attempts to do many deposits in a short period of time, and isn't completing them
519 Missing confirmation url Make sure you are sending the confirmation url in the request or that you have set a default one in the Panel (Settings -> API Access)
520 Insufficient funds (applies for refund function) The refund could not be processed due to insufficient funds. Contact us to increase the balance
530 User greylisted The user is banned because we detected suspicious activities. You can ask this for review, find the client on the "Clients" option on the left menu, select the user and click on the three dots on the top right, and "Flag for review"
601 Currency not allowed for this country Send a valid currency. Click here to see the available currencies per country.
700 Could not register user Internal error, please contact support
701 Could not make the deposit Internal error, please contact support

Cashouts

V3 Cashout API Integration

Cashout Flow

Find below the description of a cashout flow using the Directa24 cashout integration:

1 - Upon your customer's request, you submit a cashout request through the Cashout-Request API or through the Merchants panel (Transactions -> Withdrawals -> Request Cashout).

2 - Initial validations are performed by the API, such as:

3 - If the previous step is correct, the cashout is created and remains on PENDING status, otherwise, it's DECLINED. If Pending, it will be then sent to the bank for processing, when that happens, the status is set to DELIVERED.

4 - Once the transaction comes back from the bank, it can be either COMPLETED or REJECTED (by the bank).

alt steps

API: Request Cashout

Example: Request cashout

curl -X POST \
  https://api-stg.directa24.com/v3/cashout \
  -H 'Content-Type: application/json' \
  -H 'Payload-Signature: 6aeab989deecd2401140ae6c725c4e58e2e219ab831fe4e0cd317d76238b9c18' \
  -H 'Postman-Token: 1b3383c9-f13c-495a-9454-07615ec2e753' \
  -H 'cache-control: no-cache' \
  -d '{
  "login": "cashout_login",
  "pass": "cashout_pass",
  "external_id": "123456789",
  "document_id": "1234567899",
  "document_type": "", 
  "cashout_type": "BANK",
  "beneficiary_name": "Test User",
  "beneficiary_lastname": "Test User",
  "country": "MX",
  "amount": 2000,
  "currency": "MXN",
  "email": "test@test.com",
  "notification_url": "http://directa24.com/notification",
  "bank_code": "072",
  "bank_branch": "",
  "bank_account": "1234567890",
  "account_type": "C",
  "address": ""
}'
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages

The Request Cashout Version 3.0 API allows you to create a cashout request, the step 1 of the flow.

Production POST https://api.directa24.com/v3/cashout

Production Debit Cards POST https://cc-api.directa24.com/v3/cashout


Staging POST https://api-stg.directa24.com/v3/cashout

Staging Debit Cards POST https://cc-api-stg.directa24.com/v3/cashout

About the 'Payload-Signature' field in the header

Example: 'Payload-Signature' algorithm

    #Check php, Java and C# examples
    <?php
    $json_payload = '{
    "login": "cashout_login",
    "pass": "cashout_pass",
    "external_id": "123456789",
    "document_id": "1234567899",
    "document_type": "", 
    "cashout_type": "BANK",
    "beneficiary_name": "Test User",
    "beneficiary_lastname": "Test User",
    "country": "MX",
    "amount": 2000,
    "currency": "MXN",
    "email": "test@test.com",
    "notification_url": "http://directa24.com/notification",
    "bank_code": "072",
    "bank_branch": "",
    "bank_account": "1234567890",
    "account_type": "C",
    "address": ""
    }';
    $secretKey = "cashout_secret_key";
    $payload_signature = strtolower(hash_hmac('sha256', pack('A*', $json_payload), pack('A*', $secretKey)));
    ?>
    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;
    import org.apache.commons.net.util.Base64;

    String json_payload = "{ \"login\": \"cashout_login\", \"pass\": \"cashout_pass\",   \"external_id\": \"123456789\",  \"document_id\": \"1234567899\",  \"document_type\": \"\",   \"cashout_type\": \"BANK\", \"beneficiary_name\": \"Test User\", \"beneficiary_lastname\": \"Test User\",  \"country\": \"MX\",  \"amount\": 2000,  \"currency\": \"MXN\",  \"email\": \"test@test.com\", \"notification_url\": \"http:\\/\\/directa24.com\\/notification\",  \"bank_code\": \"072\",\"bank_branch\": \"\",  \"bank_account\": \"1234567890\", \"account_type\": \"C\", \"address\": \"\"}";
    String secretKey = "cashout_secret_key";
    Mac hasher = Mac.getInstance("HmacSHA256");
    hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));
    String payload_signature = Base64.encodeBase64String(hasher.doFinal(json_payload.getBytes())).toLowerCase();
    using System;
    using System.Text;
    using System.Security.Cryptography;

    string jsonPayload = "{ \"login\": \"cashout_login\", \"pass\": \"cashout_pass\",   \"external_id\": \"123456789\",  \"document_id\": \"1234567899\",  \"document_type\": \"\",   \"cashout_type\": \"BANK\", \"beneficiary_name\": \"Test User\", \"beneficiary_lastname\": \"Test User\",  \"country\": \"MX\",  \"amount\": 2000,  \"currency\": \"MXN\",  \"email\": \"test@test.com\", \"notification_url\": \"http:\\/\\/directa24.com\\/notification\",  \"bank_code\": \"072\",\"bank_branch\": \"\",  \"bank_account\": \"1234567890\", \"account_type\": \"C\", \"address\": \"\"}";
    string secretKey = "cashout_secret_key";        
    byte[] keyByte = new ASCIIEncoding().GetBytes(secretKey);
    byte[] jsonPayloadBytes = new ASCIIEncoding().GetBytes(jsonPayload);
    byte[] hashmessage = new HMACSHA256(keyByte).ComputeHash(jsonPayloadBytes);
    string payloadSignature = BitConverter.ToString(hashmessage).Replace("-", "").ToLower();

In the V3, the Control String is replaced by the Payload-Signature field you need to add in the Header of the API call. The Payload Signature is a mandatory field in the Header used to ensure request integrity. It should be created using HMAC-SHA-256 (RFC 2104) encoding using your own secretkey (which can be found on the Merchant Panel by going to Settings -> API Access) and must include the whole JSON payload:

{ "login": "cashout_login", "pass": "cashout_pass", "external_id": "test1234567890", "document_id": "1234567890", "document_type": "", "cashout_type": "BANK", "beneficiary_name": "Test User", "beneficiary_lastname": "Test User", "country": "MX", "amount": 5, "currency": "USD", "email": "test@test.com", "notification_url": "http://directa24.com/notification", "bank_code": "072", "bank_branch": "", "bank_account": "1234567891234567", "account_type": "C", "address": "test address" }

The Payload Signature must be in Lower Case and must include the whole JSON payload sent in the body as shown in the examples. The payload has to be converted to UTF-8 before actually hashing it to prevent Invalid Control Hash error when sending characters with different encodings.

Fields - Cashouts

Example: Response

{ 
    "cashout_id": 476567
}
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages

Example: Error Response

{
    "code": 302,
    "message": "Invalid control string"
}
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages
Field Format Description
login string (max length: 32) Your Directa24 CASHOUTS API login, found on the merchants area: Settings -> API Access. Notice there're specific Cashout credentials
pass string (max length: 32) Your Directa24 CASHOUTS API trans_key, found on the merchants area: Settings -> API Access. Notice there're specific Cashout credentials
external_id string (max length: 100) Cashout identification at the merchant site
document_id string (max length: 40) Beneficiary’s personal identification number. Click here to see the documents validations.
beneficiary_name string (max length: 100) Beneficiary name or company
beneficiary_lastname string (max length: 100) Beneficiary surname
country string (length: 2) User’s country code. Click here to see country codes.
amount number (multiple of: 0.01) Cashout amount (it must correspond to the currency entered in the field “currency”)
currency string (length: 3) Currency of the request. Click here to see the available currencies per country.
bank_code Integer (max length: 6) Beneficiary's bank code. See bank codes
bank_branch string (max length: 15) Beneficiary's bank branch number
bank_account string (max length: 30) Beneficiary's bank account number
account_type string (max length: 1) Type of account. C: for Current accounts S: for Savings accounts
document_type string (minLength: 1, maxLength: 4) Beneficiary’s personal identification type
address string (maxLength: 200) Address of the beneficiary
bank_name string (maxLength: 40) Beneficiary's bank name, see bank codes
bank_province string (max length: 40) Beneficiary's bank province name
bank_city string (max length: 40) Beneficiary's bank city name
bank_branch_name string (max length: 40) Beneficiary's bank branch name
beneficiary_birthdate string (pattern: 'YYYYMMDD') Beneficiary birthdate
notification_url string (maxLength: 300) To be provided if the notification URL is different from the notification URL defined by default
city string (maxLength: 100) City of the beneficiary
comments string (maxLength: 200) A commentary for this cashout
on_hold boolean If the merchant wants to hold the cashout and set it to process later through the merchants panel. Default: false
postal_code string (maxLength: 20) Postal code of the beneficiary. Click here to see postal_code validations.
email string (maxLength: 100) Valid email of the beneficiary. Click here to see email validations.
phone string (maxLength: 20) Phone number of the beneficiary

Field validations - Cashouts

Reference:

Mandatory

Not Mandatory

Field Argentina Brazil Chile Colombia Ghana India Kenya Mexico Nigeria Peru Uruguay China
external_id
document_id CPF or CNPJ RUT CI
country
currency
amount
bank_code Mandatory if bank_account length is 15-16(Debit Card)
bank_account Arg. CBU Clabe or Debit Card Peru CCI
bank_branch Indian IFSC Optional if Bank is Itau
account_type C: checkings, S: savings, O: joint checkings, P: joint savings C: checkings, S: savings, V: salary account C: checkings, S: savings C: checkings, S: savings C: checkings, S: savings C: checkings, S: savings
beneficiary_name Only Han Characters
beneficiary_lastname
email
phone
beneficiary_birthdate
document_type Colombia document types Peru document types
address
city
postal_code
bank_name Only Han Characters
bank_province Only Han Characters
bank_city Only Han Characters
bank_branch_name Only Han Characters
comments
notification_url
on_hold
Bank branch (field: bank_branch)

Click here to see bank_branch validations.

Bank account (field: bank_account)
Country Bank Format Example
Argentina All Numeric Length 22 (without dashes)
Brazil Banco do Brasil Format: XXXXXXXXX-D or XXXXXXXXXD where X are digits and D are digits or a 'X'. The number of digits may change, but can't exceed 10 digits 1234567890, 123456789-0, 123456789-X, 123456789X
Brazil ABN Amro Format: XXXXXXXXXX or XXXXXXXXX-X. The number of digits may change, but can't exceed 10 digits 1234567890, 123456789-0
Brazil Santander Format: XXXXXXXXX, XXXXXXXX, XXXXXXXX-X, XXXXXXX-X where X are digits. The number of digits has to be 8 or 9 12345678, 12345678-9
Brazil Itaú Format: XXXXX-X or XXXXXX where X are digits. The number of digits may change, but can't exceed 6 digits 123456, 12345-6
Brazil Bradesco Format: XXXXXXX-X or XXXXXXXX where X are digits. The number of digits may change, but can't exceed 8 digits 12345678, 1234567-8
Brazil Banrisul Format: XXXXXXXXX-X or XXXXXXXXXX where X are digits. The number of digits has to be 10 1234567890, 123456789-0
Brazil Others Format: XXXXXXXXX-X or XXXXXXXXXX where X are digits. The number of digits may change, but can't exceed 10 digits 1234567890, 123456789-0
Colombia Banco de Bogota Checking or Savings Account, Length lower or equal than 11 N/A
Colombia Banco Popular Checking or Savings Account, Length lower or equal than 9. N/A
Colombia Banco CORPBANCA Checking or Savings Account, Length lower or equal than 9. N/A
Colombia BANCOLOMBIA Checking or Savings Account, Length lower or equal than 11. N/A
Colombia CITIBANK Checking or Savings Account, Length lower or equal than 10. N/A
Colombia HSBC Checking or Savings Account, Length lower or equal than 15. N/A
Colombia Banco SUDAMERIS Checking Account, Length lower or equal than 8. Savings Account, Length lower or equal than 11. N/A
Colombia BBVA Checking or Savings Account, Length lower or equal than 16. N/A
Colombia HELM BANK S. Checking or Savings Account, Length lower or equal than 9. N/A
Colombia Banco COLPATRIA Checking or Savings Account, Length lower or equal than 10. N/A
Colombia Banco de Occidente Checking or Savings Account, Length lower or equal than 9. N/A
Colombia Banco CAJA SOCIAL BCSC Checking or Savings Account, Length lower or equal than 12. N/A
Colombia Banco AGRARIO Checking or Savings Account, Length lower or equal than 12. N/A
Colombia Banco DAVIVIENDA Checking or Savings Account, Length lower or equal than 12. N/A
Colombia Banco AV VILLAS Checking Account, Length lower or equal than 11. Savings Account, Length lower or equal than 13. N/A
Colombia Banco PROCREDIT Checking or Savings Account, Length lower or equal than 13. N/A
Colombia Banco PICHINCHA Checking or Savings Account, Length lower or equal than 9. N/A
Colombia BANCOOMEVA Checking or Savings Account, Length lower or equal than 12. N/A
Colombia Banco FALABELLA S.A Checking or Savings Account, Length lower or equal than 12. N/A
Colombia COOPCENTRAL S.A Savings Account, Length lower or equal than 9 N/A
Colombia COOPERATIVA FINANCIERA DE ANTIOQUIA Savings Account, Length lower or equal than 11 N/A
Colombia COTRAFA COOPERATIVA FINANCIERA Savings Account, Length lower or equal than 13 N/A
Colombia CONFIAR Checking or Savings Account, Length lower or equal than 9. N/A
Colombia FINANCIERA JURISCOOP Savings Account, Length lower or equal than 11 N/A
Colombia Nequi / Daviplata Savings Account, The bank_account must be the user´s mobile phone N/A
Ghana All Length between 9 and 18 digits N/A
India All Length between 9 and 18 digits 0001234567894321
Kenya All Length between 9 and 18 digits N/A
Mexico All CLABE. Length 18 without dashes N/A
Mexico Debit Card Length 15-16 without dashes N/A
Nigeria All Length between 9 and 18 digits N/A
Peru All CCI - Length 18 (without verifying digits) or length 20 (with verifying digits) N/A

API: Check Cashout Status

Example: Request cashout status

Content-Type: application/json 
Payload-Signature: 2e5023770760ea0a02230bff1a6dab934fe3b47a5e3d43854b58676600ee3868 

{ 
    "login": "cashout_login", 
    "pass": "cashout_pass", 
    "cashout_id": "C-11954" 
}
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages

Example: Response

{
    "cashout_status": 1,
    "cashout_status_description": "Completed"
}

{
    "cashout_status": 3,
    "cashout_status_description": "Rejected",
    "rejection_code": 808,
    "rejection_reason": "ERROR_OTHER"
}
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages

This API allows you to retrieve the status of a cashout.

Production POST https://api.directa24.com/v3/cashout/status

Staging POST https://api-stg.directa24.com/v3/cashout/status

Field Format Description
login String. Length 32 max Your Directa24 CASHOUTS API login, found on the merchants area: Settings -> API Access. Notice there're specific Cashout credentials
pass String. Length 32 max Your Directa24 CASHOUTS API trans_key, found on the merchants area: Settings -> API Access. Notice there're specific Cashout credentials
cashout_id String Identifier of the cashout in the Directa24 platform. Returned by the create cashout API

Make sure you are sending the header 'content-type' with value 'application/json' in the header of the request.

API: Cancel Cashout

Example: Cancel cashout

Content-Type: application/json 
Payload-Signature: 2e5023770760ea0a02230bff1a6dab934fe3b47a5e3d43854b58676600ee3868 

{ 
    "login": "cashout_login", 
    "pass": "cashout_pass", 
    "cashout_id": 11954,
    "external_id": "cashoutID1234"
}
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages

Example: Success Response

{
    "cashout_status": 2,
    "cashout_status_description": "Canceled"
}
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages

This API allows you to cancel a cashout request. Only applicable for PENDING cashouts.

Production DELETE https://api.directa24.com/v3/cashout/cancel

Staging DELETE https://api-stg.directa24.com/v3/cashout/cancel

Field Format Description
login String. Length 32 max Your Directa24 CASHOUTS API login, found on the merchants area: Settings -> API Access. Notice there're specific Cashout credentials
pass String. Length 32 max Your Directa24 CASHOUTS API trans_key, found on the merchants area: Settings -> API Access. Notice there're specific Cashout credentials
cashout_id String Identifier of the cashout in the Directa24 platform. Returned by the create cashout API
external_id String Identifier of the cashout on the Merchant end. It is the one specified by the Merchant when creating the cashout

Make sure you are sending the header 'Content-Type' with value 'application/json' in the header of the request.

Notifications

Control String calculation

   See documentation in other languages
    $external_id = 'cashoutID1234';
    $message = 'Be4' . $external_id . 'Bo7';
    $secret_key = 'cashout_secret_key';
    $hash = strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $secret_key)));
   See documentation in other languages
   See documentation in other languages

A notification will be sent every time the status of a cashout changes, once received the notification, you will need to use the Cashout Status API to retrieve the new status of the cashout.

alt steps

The notifications will be sent to the merchant notification_url by POST protocol in x-www-form-urlencoded format and will have the following fields:

Example V3 notification

    date=2020-03-12%2020%3A26%3A11
    &bank_reference_id=
    &comments=
    &external_id=cashoutV35381
    &control=A4CFF64E78C4BD01F8BFCA4AFF04632EC4A33CC61BD6BBD156BA1289897892EB
    &cashout_id=60067
    &status_reason=
Field Format Description Example
external_id String (max. 100 chars) Cashout identification (at the merchant site) cashout1234
cashout_id Number (max. 10 chars) Cashout identification (at Directa24 site) 423652
date Format: YYYY-MM-DD HH:MM:SS (GMT) The date when the status changed 2015-10-03 15:32:01
bank_reference_id String (max. 50 chars) Reference number at the bank if any 513512.04198.5
comments String (max. 200 chars) Cashout comments if any This is a comment
control String Control string. See the "Control String calculation" example for reference aklsgdASGDN45NGIJIJ34gklner

Cashout API Codes

Cashout Status Codes

Code Description
0 Pending The cashout was accepted by Directa24 and still wasn't sent to the bank. Can still be Canceled. See Cancel Cashout
1 Completed The money reached the clients account
2 Cancelled The cashout was cancelled
3 Rejected The cashout was rejected by the bank
4 Delivered The cashout was sent to the bank for processing. Cannot be Canceled anymore
5 On Hold Cashout set on hold by the merchant

Cashout Error Codes

Code Description
800 ERROR_ACCOUNT_INCORRECT
801 ERROR_ACCOUNT_CLOSED
802 ERROR_AMOUNT_INCORRECT
803 ERROR_BANK_INVALID
804 ERROR_BANK_BRANCH_INCORRECT
805 ERROR_BENEFICIARY_DOCUMENT_ID_INVALID
806 ERROR_BENEFICIARY_NAME_INCORRECT
807 ERROR_REJECTED_BY_BANK
808 ERROR_OTHER

Cashout Internal Error Codes

Code Description
300 Invalid params + [param name] + [reason]
301 Empty params + [param name]
302 Invalid signature
303 Invalid bank code
401 Invalid credentials
402 Unregistered IP address (Go to API Access to whitelist the IP in the Merchant Panel)
507 Country not found for cashouts
508 Limit exceeded + [limit name]
509 Cashout not found with this ID
510 Invalid status transition: cashout is not Pending
511 External ID already used
514 Insufficient funds
515 User in Blacklist
518 Country not available
519 Merchant not enabled (Contact integration@directa24.com)
702 Could not cancel cashout
703 Could not make the cashout

Bank Codes

America Bank Codes

Argentina Bank Codes
Bank Code
A.B.N Amro Bank 005
Industrial and Commercial Bank
of china (ICBC)
015
American Express Bank Ltd 295
Bacs Banco de Credito Y Securitizacion 340
Banca Nazionale Del Lavoro 265
Banco B. I. Creditanstalt 147
Banco Banex 297
Banco Bradesco Argentina 336
Banco Cetelem Argentina 331
Banco CMF 319
Banco Cofidis 335
Banco Columbia 389
Banco Comafi 299
Banco Credicoop Coop. L 191
Banco de Corrientes 094
Banco de Formosa 315
Banco de Galicia Y Buenos Aires 007
Banco de Inversion Y Comercio Exterior 300
Banco de La Ciudad de Buenos Aires 029
Banco de La Nacion Argentina 011
Banco de La Pampa Sociedad de Economia M 093
Banco de La Provincia de Buenos A 014
Banco de La Provincia de Cordoba 020
Banco de La Republica Oriental Del Uruguay 269
Banco de San Juan 045
Banco de Santa Cruz 086
Banco de Santiago Del Estero 321
Banco de Servicios Financieros 332
Banco de Servicios Y Transacciones 338
Banco de Valores 198
Banco Del Chubut 083
Banco Del Sol 310
Banco Del Tucuman 060
Banco Do Brasil 046
Banco Empresario de Tucuman Coop. L 137
Banco Finansur 303
Banco Hipotecario 044
Banco Itau Buen Ayre 259
Banco Julio 305
Banco Macro Bansud 285
Banco Mariva 254
Banco Mercurio 293
Banco Meridian 281
Banco Municipal de Ros 065
Banco Patagonia Sudameris 034
Banco Piano 301
Banco Privado de Inversiones 306
Banco Provincia de Tierra Del Fuego 268
Banco Provincia Del Neuquen 097
Banco Regional de Cuyo 079
Banco Rio de La Plata 072
Banco Roela 247
Banco Saenz 277
Banco Societe Generale 027
Bank Of America, National Associa 262
Bankboston, National Associa 015
BBVA Banco Frances 017
Bnp Paribas 266
Citibank 016
Deutsche Bank 325
HSBC Bank Argentina 150
Ing Bank 294
J P Morgan Chase Bank Sucursal Buenos Aires 165
Lloyds Tsb Bank 010
M. B. A. Banco de Inversiones 312
Nuevo Banco Bisel 388
Nuevo Banco de Entre Rios 386
Nuevo Banco de La Rioja 309
Nuevo Banco de Santa Fe 330
Nuevo Banco Del Chaco 311
Nuevo Banco Industrial de Azul 322
Nuevo Banco Suquia 387
Rci Ba 339
The Bank Of Tokyo - Mitsubishi 018
Brazil Bank Codes
Bank Code
BANCO ABN AMRO S.A. 075
Cooperativa Central de Crédito Urbano-CECRED 085
BANCO DA AMAZONIA S.A. 003
BANCO DO NORDESTE DO BRASIL S.A. 004
BANCO BONSUCESSO S.A. 218
BANCO BRADESCO S.A. 237
BANCO DO BRASIL S.A. 001
BANCO ABC 001
BANCO DE BRASILIA S.A. - BRB 070
CAIXA ECONOMICA FEDERAL - CEF 104
CITIBANK N.A. 477
BANCO COOPERATIVO DO BRASIL S/A - BANCOOB 756
BANCO DAYCOVAL S.A. 707
BANESTES S.A. BANCO DO ESTADO DO ESPIRITO SANTO 021
BANCO DO ESTADO DO PARA S.A. - BANPARA 037
BANCO DO ESTADO DO RIO GRANDE DO SUL S.A. - BANRISUL 041
BANCO DO ESTADO DE SERGIPE S.A. - BANESE 047
HSBC BANK BRASIL S.A. - BANCO MULTIPLO 399
ITAU UNIBANCO S.A. 341
BANCO MERCANTIL DO BRASIL S.A. 389
BANCO MODAL S.A. 746
BANCO SAFRA S.A. 422
BANCO SANTANDER BRASIL S.A. 033
BANCO COOPERATIVO SICREDI S.A. 748
BANCO INTER 077
BANCO SOFISA 637
BANCO NEON 735
NU PAGAMENTOS 260
Cooperativa Central de Crédito Urbano-CECRED 085
BANCO AGIPLAN S.A. 121
Confederação Nacional das Cooperativas Centrais Unicred 136
BANCO ORIGINAL 212
Banco Votorantim S.A. 655
BANCO CITIBANK 745
PagSeguro Internet S.A. 290
BANCO BMG S.A. 318
BANCO C6 S.A. 336
Chile Bank Codes
Bank Code
Banco de Chile 001
Banco Edwards 001
Citi 001
Banco Internacional 009
Banco del Estado de Chile 012
Scotiabank Sud Americano 014
Banco Crédito e Inversiones 016
Itaú Corpbanca 027
Banco Bice 028
HSBC Bank 031
Banco Santander- Santiago 037
Banco Itaú 039
ABN AMRO Bank Chile 046
Banco Security 049
Banco Falabella 051
Deutsche Bank 052
Banco Ripley 053
Rabobank Chile 054
Consorcio 055
Banco Penta 056
Banco Paris 057
BBVA Banco Bhif 504
Banco del Desarrollo 507
Colombia Bank Codes
Bank Code
Banco de Bogota 001
Banco Popular 002
Banco CorpBanca 003
Banco Santander 006
Bancolombia S.A 007
Citibank Colombia 009
Banco HSBC 010
Banco GNB Sudameris Colombia 012
BBVA Colombia 013
Helm Bank 014
Red Multibanca Colpatria S.A 019
Banco de Occidente 023
Banco Caja Social BCSC S.A. 032
Banco Agrario de Colombia S.A. 040
Banco Davivienda S.A. 051
Banco Av Villas 052
Banco Procredit 058
Banco Pichincha S.A. 060
Bancoomeva 061
Banco Falabella S.A. 062
COOPCENTRAL S.A 076
COOPERATIVA FINANCIERA DE ANTIOQUIA 283
COTRAFA COOPERATIVA FINANCIERA 289
CONFIAR 292
FINANCIERA JURISCOOP 296
Nequi 1507
Daviplata 1551
Mexico Bank Codes
Bank Code
Banco Nacional de México S.A. 002
Banco Nacional de Comercio Exterior S.N.C. 006
Banco Nacional de Obras y Servicios Públicos 009
BBVA Bancomer 012
Santander Mexicano S.A. 014
Banco Nacional del Ejército y Fuerza Aérea y Armada, S.N.C. 019
HSBC Bank 021
Banco del Bajío S.A. 030
Ixe Banco S.A. 032
Banco Inbursa S.A. 036
Banco Interacciones S.A. 037
Banca Mifel S.A. 042
Scotiabank S.A. 044
Banco Regional de Monterrey S.A. 058
Banco Invex, S.A. 059
Bansí, S.A. 060
Banco Afirme, S.A. 062
Banco Mercantil del Norte, S.A. 072
The Royal Bank of Scotland México 102
American Express Bank S.A. 103
Bank of America México S.A. 106
Bank of Tokyo- Mitsubishi 108
JP Morgan 110
Banco Monex 112
Banco Ve Por Mas S.A. 113
ING Bank 116
Deutsche Bank 124
Credit Suisse 126
Azteca 127
Banco Autofin Mexico 128
Barclays Bank Mexico 129
Banco Compartamos S.A 130
Banco Ahorro Famsa 131
Banco Multiva 132
Banco Actinver 133
Banco Wal Mart de Mexico Adelante 134
Nacional Financiera S.N.C. 135
Inter Banco 136
Bancoppel 137
ABC Capital S.A. 138
UBS Banco 139
Consubanco 140
Volkswagen Bank 141
Consultoria Internacional Banco (CIBanco) 143
Banco Base 145
Bansefi 166
Hipotecaria Federal 168
Monex Casa de Bolsa 600
Grupo Bursátil Mexicano 601
Masari Casa de Bolsa 602
Value S.A 605
Estructuradores del Mercado de Valores Casa de Bolsa 606
Casa de Cambio Tiber 607
Vector Casa de Bolsa 608
B y B, Casa de Cambio 610
Merrill Lynch México 615
Casa de Bolsa Finamex 616
Valores Mexicanos Casa de Bolsa 617
UNICA Unica Casa de Cambio 618
MAPFRE MAPFRE Tepeyac 619
PROFUTURO Profuturo G.N.P. 620
CB ACTINVER Actinver Casa de Bolsa 621
OACTIN OPERADORA ACTINVER 622
SKANDIA Skandia Vida 623
CBDEUTSCHE Deutsche Securities 626
ZURICH Zurich Compañía de Seguros 627
ZURICHVI Zurich Vida, Compañía de Seguros 628
SU CASITA Hipotecaria Su Casita 629
CB INTERCAM Intercam Casa de Bolsa 630
CI BOLSA CI Casa de Bolsa 631
BULLTICK CB Bulltick Casa de Bolsa 632
STERLING Sterling Casa de Cambio 633
FINCOMUN Fincomún, Servicios Financieros Comunitarios 634
HDI SEGUROS HDI Seguros 636
ORDER Order Express Casa de Cambio 637
Akala 638
JPMORGAN J.P. Morgan Casa de Bolsa 640
Operadora de Recursos Reforma 642
Sistema de Transferencias y Pagos STP 646
Telecomunicaciones de México 647
Evercore Casa de Bolsa 648
Skandia Operadora de Fondos 649
Seguros Monterrey New York Life 651
Solución Asea 652
Kuspit Casa de Bolsa 653
J.P. SOFIEXPRESS 655
UNAGRA 656
OPCIONES EMPRESARIALES DEL NORESTE 659
Libertad Servicios Financieros 670
Cls Bank International 901
SD. Indeval 902
N/A 999
Peru Bank Codes
Bank Code
Banco Central de Reserva 001
Banco de Crédito del Perú 002
Interbank 003
Citibank 007
Scotiabank 009
BBVA Continental 011
Banco de la Nación 018
Banco de Comercio 023
Banco Financiero 035
Banco Interamericano de Finanzas (BIF) 038
Crediscotia Financiera 043
Mi Banco 049
Banco GNB Perú S.A. 053
Banco Falabella 054
Santander 056
Caja Metropolitana de Lima 800
Caja Municipal de Ahorro y Crédito Plura SAC 801
Caja Municipal de Ahorro y Crédito Trujillo 802
Caja Municipal de Ahorro y Crédito Arequipa 803
Caja Municipal de Ahorro y Crédito Sullana 805
Caja Municipal de Ahorro y Crédito Cuzco 806
Caja Municipal de Ahorro y Crédito Huancayo 808
Uruguay Bank Codes
Bank Code
BROU - Banco de la República Oriental del Uruguay 001
Banco Hipotecario del Uruguay 091
Banco Bandes 110
Banco ITAU 113
Scotiabank 128
Banco Santander 137
Banco Bilbao Vizcaya Argentaria 153
HSBC Bank 157
Banque Heritage 162
Citibank N.A. Sucursal 205
Banco de la Nación Argentina 246

Africa Bank Codes

Ghana Bank Codes
Bank Code
ACCESS BANK LIMITED 1
AGRICULTURAL DEVELOPMENT BANK 2
ARB APEX BANK LIMITED 3
BANK OF AFRICA 4
BANK OF BARODA 5
BANK OF GHANA 6
BARCLAYS BANK OF GHANA LTD. 9
BSIC GHANA LTD 11
CAL BANK LIMITED 12
CENTRAL SECURITIES DEPOSITORY LIMITED 14
CONSOLIDATED BANK GHANA LIMITED 15
CONTROLLER AND ACCOUNTANT-GENERAL'S DEPARTMENT 16
ECOBANK GHANA 17
FBNBANK GHANA LIMITED 22
FIDELITY BANK LIMITED 23
FIRST ATLANTIC BANK LIMITED 24
FIRST NATIONAL BANK GHANA LIMITED 25
GCB BANK LIMITED 26
GHANA REVENUE AUTHORITY 30
GHL BANK LTD 31
GUARANTY TRUST BANK LTD 32
NATIONAL INVESTMENT BANK 33
OMNIBANK GHANA LIMITED 34
PREMIUM BANK GHANA LIMITED 35
PRUDENTIAL BANK LIMITED 36
REPUBLIC BANK LTD 37
SOCIAL SECURITY AND NATIONAL INSURANCE TRUST 39
SOCIETE GENERALE GHANA LIMITED 40
STANBIC BANK GHANA LIMITED 43
STANDARD CHARTERED BANK GHANA LIMITED 44
TAKORADI INTERNATIONAL COMPANY 49
UNITED BANK FOR AFRICA LTD 50
UNIVERSAL MERCHANT BANK LIMITED 51
ZENITH BANK LIMITED 55
Kenya Bank Codes
Bank Code
Kenya Commercial Bank KCB 001
Standard Chartered Bank​​ Kenya 002
Barclays Bank Kenya 003
Bank Of Baroda 006
Commercial Bank of Africa CBA 007
Central Bank of Kenya 009
Prime Bank​​ Kenya 010
National Bank of Kenya 012
M Oriental Bank Kenya 014
Citi Bank Kenya 016
Habib Bank AG Zurich Kenya 017
Middle East Bank Kenya 018
Bank of Africa Kenya 019
Consolidated Bank of Kenya 023
Credit Bank Kenya 025
Chase Bank Kenya 030
CFC Stanbic Bank Kenya 031
NIC Bank Kenya 041
Bank Of India Kenya 042
Ecobank Kenya 043
Paramount Universal Bank Kenya 050
Jamii Bora Bank 051
Guaranty Trust GT Bank Kenya 053
Victoria Commercial Bank​​ Kenya 054
Guardian Bank Kenya 055
Development Bank of Kenya 059
Housing Finance Company of Kenya 061
Diamond Trust Bank DTB Kenya 063
Equity Bank Kenya 068
Family Bank Kenya 070
Gulf African Bank Kenya 072
First Community Bank Kenya 074
Nigeria Bank Codes
Bank Code
First Bank of Nigeria Plc 011
Heritage Bank 030
Union Bank Nigeria Plc 032
United Bank for Africa Plc 033
WEMA Bank Plc 035
Stanbic IBTC Plc 039
Access Bank Plc 044
Ecobank Nigeria 050
Zenith Bank International 057
Guaranty Trust Bank Plc 058
Fidelity Bank Plc 070
Keystone Bank Ltd 082
First City Monument Bank 214
Unity Bank Plc 215
Sterling Bank Plc 232
Jaiz Bank 301

Asia Bank Codes

China Bank Codes
Bank Code
People’s Bank of China 001
Industrial and Commercial Bank 102
Agricultural Bank of China 103
Bank of China 104
China Construction Bank 105
China Development Bank 201
Export-Import Bank of China 202
Agricultural Development of China 203
Bank of Communications 301
China CITIC Bank 302
China Everbright Bank 303
Huaxia Bank 304
China Minsheng Bank 305
Guangdong Development Bank 306
Shenzhen Development Bank 307
China Merchants Bank 308
China's Industrial Bank 309
Shanghai Pudong Development Bank 310
Dongguan Commercial Bank 311
Evergrowing Bank 315
China Zheshang Bank 316
Bohai Bank 318
Huishang Bank 319
Postal Savings Bank of China 403
Hongkong and Shanghai Banking Corporation 501
Bank of East Asia 502
Nanyang Commercial Bank 503
Hang Seng Bank 504
Bank of China (Hongkong) Ltd 505
Chiyu Banking Corporation Limited 506
Chong Hing Bank 507
DBS Bank (China) 509
Wing Hang Bank 510
Wing Lung Bank 512
Citibank 531
Bank of America 532
J.P. Morgan Chase 533
Bank of Tokyo-Mitsubishi UFJ 561
Sumitomo Mitsui Banking Corporation 563
Mizuho Corporate Bank 564
Japan Pass Bank 565
Korea Exchange Bank 591
Woori Bank 593
Korea Development Bank 594
ShinHan Bank 595
Industrial Bank of Korea 596
Hana Bank 597
Overseas Chinese Banking Corporation 621
United Overseas Bank 622
Bangkok Bank 631
Raiffeisen Zentralbank 641
KBC Group 651
Fortis Bank 652
ABN AMRO Bank 661
ING Bank 662
Standard Chartered Bank 671
The Royal Bank of Scotland 672
Societe Generate 691
Banque Indosuez 694
Natixis 695
Dresdner Bank AG 711
Deutsche Bank 712
Commerzbank 713
Westdeutsche Landesbank 714
Bayerische Landesbank AG 715
Norddeutsche Landesbank 716
Intesa Sanpaolo 732
Crédit Suisse 741
Swiss Bank Corp 742
Bank of Nova Scotia 751
Bank of Montreal 752
Australian and New Zealand Bank 761
Morgan Stanley International Bank 771
Rabobank 776
Xiamen International Bank 781
BNP Paribas 782
Chinese Mercantile Bank 785
First Sino Bank 787

Easy Cashout API Integration

With this cashout integration, you redirect your customer to an external checkout page, belonging to Directa24, to collect user´s bank account details for cashouts.

Having this integration, facilitates you the collection of all the user´s details since we will take care of the data validation and input forms.

Find below the description of a cashout flow using the Directa24 Easy Cashout integration:

alt steps

1 - Upon your customer's request, you submit a cashout request through the Easy Cashout-Request API.

2 -3 - The API responds with a link to Directa24 cashout checkout page, you redirect your customer to that URL (*).

4 - The customer goes to the Directa24 page and finishes the request, completing the bank account details.

After this point, the flow is the same as the regular cashout process, the cashout is already in PENDING status.

API: Request Easy Cashout

Example: Easy Cashout Request

curl -v --data-raw '{ "login":"cashout_login", "password":"cashout_pass", "country":"CO", "currency":"COP", "amount":100, "document_id":"8854521458", "external_id":"449898971", "first_name":"Jonh", "last_name":"Smith"}' https://payout-api-stg.directa24.com/v1/request    
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages

Example: Easy Cashout Response

{
    "data": {
        "cashout_url": "https://payout.directa24.com/payout/ed22d9851785451f94e3f9dd4b1c1dcf",
        "external_id": "easyCashout89080466",
        "status": "CREATED"
    }
}
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages

The Request Easy Cashout API allows you to create a cashout request, the step 1 of the flow.

Production POST https://payout-api.directa24.com/v1/request

Staging POST https://payout-api-stg.directa24.com/v1/request

The request has to be made through a POST request to the above URL with content-type: application/json in the header as well as the data has to be sent in JSON Format. Please remember to whitelist the IP of your servers under the "Cashout credentials" section of our Merchant Panel by going to Settings -> API Access.

Field Format Description
login String Your Directa24 CASHOUTS API login, found on the merchants area: Settings -> API Access. Notice there're specific Cashout credentials
password String Your Directa24 CASHOUTS API trans_key, found on the merchants area: Settings -> API Access. Notice there're specific Cashout credentials
country String User´s country code. Click here to see country codes.
currency String (length 3) Currency in which the amount was specified. Click here to see the available currencies per country.
amount float Cashout Amount in the currency specified in the 'currency' field
document_id String User's document number, will not be possible to change later
external_id String External ID from the merchant used as reference
on_hold bool Indicates if the cashout will be put on old after the creation
notification_url String Merchants URL to be notified about status changes
first_name String Users first name, will not be possible to change later
last_name String Users last name, will not be possible to change later

Creation Status Codes

Code Description
200 The external ID was already used, so the data for the previous cashout is returned
201 The cashout was successfully created and the URL is returned
400 Invalid request, usually due to missing parameters
401 Invalid credentials were provided or the source
5XX Something went wrong on Directa24’s end

API: Get Easy Cashout Status

Example: Easy Cashout Status Request

curl -X GET https://payout-api.directa24.com/v1/payments/ed22d9851785451f94e3f9dd4b1c1dcf
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages

Once you have created an Easy Cashout request, the request won´t be send for processing until the customer opens the link and fill in all their details. To know when the customer completed their details, you will need to check the status of it after some minutes. That can be done by doing a GET of the following URL with the ID obtained from the cashout_url.

Production GET https://payout-api.directa24.com/v1/payments/{requestID}

Staging GET https://payout-api-stg.directa24.com/v1/payments/{requestID}

Type Param JSON Type Description
PATH requestID String Cashout request id (external_id)

Response parameters

Example: Easy Cashout Status Request Response

{
    "data": {
        "amount": 250,
        "bank_name": "Bancolombia",
        "currency": "USD",
        "date_created": "2020-01-23T17:51:03Z",
        "external_id": "easyCashout89080466",
        "last_status_change": "2020-01-23T17:54:00Z",
        "request_id": "ed22d9851785451f94e3f9dd4b1c1dcf",
        "status": "PENDING",
        "user_document": "******1458"
    }
}
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages
Type Param JSON Type Description
BODY amount float Amount of the cashout
BODY bank_name String Name of the bank where the cashout was requested
BODY currency String Currency code of the cashout
BODY date_created String Date when the cashout was created
BODY external_id String External ID from the merchant used as reference
BODY last_status_change String Date of the latest cashout status change
BODY request_id String ID which identifies the cashout
BODY Status String Cashout status
BODY user_document String Masked user´s document number

Notifications

Example: Easy Cashout Status Request Response

{
  "cashout_id": 60339,
  "cashout_status": 1,
  "cashout_status_description": "Completed",
  "external_id": "test90910"
}

{
  "cashout_id": 60340,
  "cashout_status": 3,
  "cashout_status_description": "Rejected",
  "external_id": "test5809",
  "rejection_code": 0,
  "rejection_reason": ""
}
   See documentation in other languages
   See documentation in other languages
   See documentation in other languages

As soon as the customers have completed all their details in the Easy Cashout page, the cashout request will be created in our Backoffice with Pending status.

Once we send the cashout request to the bank for processing, we will change its status to Delivered and so a notification will be sent to the Withdrawal URL you must configure on the Merchant Panel by going to Settings -> API Access -> Withdrawal URL.

When the bank tell us that the cashout was either successful or rejected, we will change its status to Completed or Rejected respectively, sending a notification to the URL mentioned above.

The notifications will be sent in JSON format and will contain the values shown in the examples.

Click here to see all the possible cashout_status codes.

Transactions Reports

For your reconciliation tasks, you can always download the reports of each kind of transaction from the Merchant Panel. In case you would like to automatize it, we offer the solution described below to retrieve the transactions reports.

Merchants API

The Merchants API allows you to retrieve the details of one or a list of transactions on demand at any time.

The responses will be in JSON format, which you can parse then to the format you would be more confortable with.

Before start using the Merchants API, there are some configurations requiring your attention. The IPs you will use have to be whitelisted, and the credentials to authenticate are from an account you create in the panel.

Merchants API Flow

To integrate this API, you will use our STG environment. Once the integration is completed, you will move to our Production environment. Described below is the flow of usage of the Merchants API:

1 - Register: create a user on our Staging Merchant Panel. You won´t be able to use this account in the Merchant Panel once it was configured for using in the Merchants API.

2 - Configure your account: send the email you used to register and the list of static IPs you would like to whitelist to integration@directa24.com to set up the account for the API usage.

3 - Integrate: once the integration team has configured your account, you can start integrating the API in our STG environment.

4 - Login: login by using the email and password from step 1 using the Login Endpoint.

5 - Consult details: hit one of our Transactions Endpoints to retrieve the desired details.

6 - Logout: as soon as you've finished the activities, you may need to use the Logout Endpoint to terminate the session.

4 - Move to Production: as soon as you have completed the tests and you would like to start using it in our Production environment, please repeat steps 1 and 2 using our Production Merchant Panel.

Technical and Security aspects

The Merchant API requires you to authenticate with an email and password you will have to create on the Merchant Panel. Once you request to authenticate to the respective endpoint, we will respond with a cookie called BEARER_TOKEN with a token you have to use in the next API calls to remain authenticated.

With regarding to security concerns:

Initial Configurations

In order to start using the Merchants API, you will need to create a user account and whitelist the IPs. Please see the below two sections and follow by sending an email to integration@directa24.com adding the e-mail address you registered as well as the IPs requiring to be whitelisted.

Create an account

Start by login in the Staging Merchant Panel and creating a user account. Have in mind that once configured, this new account won´t work to login from the panel, but from the API instead. Once your tests are completed, please create a user account in the Production Merchant Panel.

Staging Merchant Panel https://merchants-stg.directa24.com

Production Merchant Panel https://merchants.directa24.com

Whitelist the IPs

Having in mind that you are able to hit the Merchants API only from the whitelisted IPs, you will need to collect the required IPs and send them to the Integration team. Please see the Configuration section.

Login Endpoint

Example: Merchants API Authentication request body

{
    "accessKey": "your@email.com",
    "secretKey": "password"
}

Example: Merchants API Authentication response success

{
    "idUser": 123,
    "username": "your@email.com",
    "idMerchant": 456
}

Example: Merchants API Authentication response failure

{
    "code": 83,
    "description": "You are not permitted to log in from this location, please contact your account administrator."
}

Staging     POST   https://merchants-api-stg.directa24.com/v1/auth/login

Production  POST   https://merchants-api.directa24.com/v1/auth/login

Once your account is ready to use the Merchants API, the first step will be authenticating yourself. This has to be done through a POST request to the login endpoint mentioned above specifying the accessKey (email) and the secretKey (password) in JSON format.

Please see the examples.

Make sure you add in the header of the request the following value: Content-Type: application/json

Once successfully authenticated, along with the response there will come a field in the header called Set-Cookie. This field will contain a cookie called BEARER_TOKEN that has to be sent back to the server in all the following requests to stay logged in.

Example of a cookie in the header with the BEARER_TOKEN value:

cookie: BEARER_TOKEN=U3dcUx8IRJ5nLjb0WYM4cHa3qHFqnrqAk

See this page to learn more about cookies.

Transactions Endpoints

Described below the endpoints for each kind of transactions.

All the requests sent have to have the BEARER_TOKEN obtained from the Login Endpoint in the Authentication´s header field of the requests like follows:

Authentication: Bearer U3dcUx8IRJ5nLjb0WYM4cHa3qHFqnrqAk

Or as a cookie:

cookie: BEARER_TOKEN=U3dcUx8IRJ5nLjb0WYM4cHa3qHFqnrqAk

There are certain parameter you can send in the GET request. These parameters are pairs of names and their corresponding values, so-called name-value pairs. These are added to the URL with a “?” sign. The name and value are always separated using an “=” sign. Multiple parameters can be used. Here, the various parameters are separated using an “&” sign.

The syntax is as follows:

https://merchants-api.directa24.com/v1/cashouts?page=0&from=1577836800&to=1580515200

The from and to values are in unixTimeStamp format and the maximum difference between them is up to 60 days. The from value can´t be bigger than the to one.

A basic response has the following format:

{
    "data": [],
    "page": 0,
    "rows": 0,
    "maxRows": 50
}

The data field, is an array that will contain multiple JSON objects, one for each transaction. Each with its own details.

The responses from these endpoints will containt up to 50 records per page. In case there are 50 records, you will have to request for the next page using the page parameter in the GET request. Always start with page=0.

The rows field, indicates how many transactions the request returned.

The maxRows field shows the maximum of transactions a request can have. In case the field rows is equal to maxRows, you should do another request with the page + 1. Repeat this until the rows value is lesser than the maxRows one.

Deposits Endpoint

Example: Merchants API Deposits Endpoint output

{
    "data": [
        {
            "idDeposit": 94582793,
            "externalId": "newIUnit9499432",
            "creationDate": "2020-02-13T19:14:43Z",
            "countryName": "Brazil",
            "country": "BR",
            "paymentMethodName": "Banco do Brasil",
            "paymentMethodCode": "BB",
            "clientDocument": "12345678901",
            "clientId": "userId123",
            "amount": 10.0,
            "currency": "USD",
            "requestedAmount": 10.0,
            "requestedCurrency": "USD",
            "localAmount": 48.09,
            "localCurrency": "BRL",
            "fee": 0.0,
            "feeCurrency": "USD",
            "lastChangeDate": "2020-02-13T19:57:10Z",
            "status": "CANCELLED",
            "idUser": "300823",
            "flags": []
        },
        {
            "idDeposit": 94582792,
            "externalId": "newIUnit91055341",
            "creationDate": "2020-02-13T19:00:26Z",
            "countryName": "Mexico",
            "country": "MX",
            "paymentMethodName": "Visa",
            "paymentMethodCode": "VI",
            "clientDocument": "1234567890",
            "clientId": "userId124",
            "amount": 10.0,
            "currency": "USD",
            "requestedAmount": 10.0,
            "requestedCurrency": "USD",
            "localAmount": 197.43,
            "localCurrency": "MXN",
            "fee": 0.0,
            "feeCurrency": "USD",
            "lastChangeDate": "2020-02-13T19:20:36Z",
            "status": "COMPLETED",
            "idUser": "300824",
            "flags": []
        }
    ],
    "page": 0,
    "rows": 2,
    "maxRows": 50
}

Staging GET https://merchants-api-stg.directa24.com/v1/deposits

Production GET https://merchants-api.directa24.com/v1/deposits

This endpoint allows you to retrieve the details of all your Deposits in a given time.

Deposits Endpoint Parameters
Parameter Mandatory Format Default Description
from Integer null Transaction creation date interval in UnixTimeStamp format.
to Integer null Transaction creation date interval in UnixTimeStamp format - max difference with "from" value 60 days.
page Integer 0 The page number. Each page contains as many transactions as indicated in the maxRows value.
country String (max length: 2) all Country´s code. Click here to see the list of countries.
paymentMethod String (max length: 2) all Payment Method code. See Payment Methods for its codes.
status String all Transaction´s status. Values:
  • PENDING
  • APPROVED
  • COMPLETED
  • CANCELLED
  • DECLINED
clientDocument String all The customer´s document.

Cashouts Endpoint

Example: Merchants API Cashouts Endpoint output

{
    "data": [
        {
            "idCashout": 1770,
            "externalId": "test123",
            "creationDate": "2020-01-24T18:17:55Z",
            "country": "BR",
            "currency": "USD",
            "amount": 200.0,
            "creditedCurrency": "USD",
            "creditedAmount": 0.0,
            "merchantCurrency": "USD",
            "merchantAmount": 0.0,
            "feeCurrency": "USD",
            "fee": 0.0,
            "tax": 0.0,
            "lastChangeDate": "2020-01-24T18:17:55Z",
            "status": "PENDING",
            "clientDocument": "12345678901",
            "flags": [],
            "idMerchant": 4,
            "merchantName": "Merchant Test",
            "reason": "",
            "existVoucher": false
        }
    ],
    "page": 0,
    "rows": 1,
    "maxRows": 50
}

Staging GET https://merchants-api-stg.directa24.com/v1/cashouts

Production GET https://merchants-api.directa24.com/v1/cashouts

This endpoint allows you to retrieve the details of all your Cashouts in a given time.

Cashouts Endpoint Parameters
Parameter Mandatory Format Default Description
from Integer null Transaction creation date interval in UnixTimeStamp format.
to Integer null Transaction creation date interval in UnixTimeStamp format - max difference with "from" value 60 days.
page Integer 0 The page number. Each page contains as many transactions as indicated in the maxRows value.
country String (max length: 2) all Country´s code. Click here to see the list of countries.
status String all Transaction´s status. Values:
  • ON_HOLD
  • PENDING
  • DELIVERED
  • COMPLETED
  • REJECTED
  • CANCELLED
  • DECLINED
clientDocument String all The customer´s document.

Credit and Debit Notes Endpoint

Example: Merchants API Credit and Debit Notes Endpoint output

{
    "data": [
        {
            "id": 989851,
            "externalId": "",
            "idMerchant": 4,
            "merchantName": "Merchant Test",
            "date": "2020-02-13T14:04:53Z",
            "amount": 1000000.0,
            "currency": "USD",
            "type": "GENERIC_CREDIT_NOTE",
            "description": "test note",
            "category": "CREDIT"
        },
        {
            "id": 989852,
            "externalId": "",
            "idMerchant": 4,
            "merchantName": "Merchant Test",
            "date": "2020-02-13T14:05:22Z",
            "amount": 500.0,
            "currency": "USD",
            "type": "CASHOUT_PROCESSING_FEE",
            "description": "cashout transaction fee debit note",
            "category": "DEBIT"
        }
    ],
    "page": 0,
    "rows": 2,
    "maxRows": 50
}

Staging GET https://merchants-api-stg.directa24.com/v1/notes

Production GET https://merchants-api.directa24.com/v1/notes

This endpoint allows you to retrieve the details of all your Credit and Debit Notes in a given time.

Credit and Debit Notes Endpoint Parameters
Parameter Mandatory Format Default Description
from Integer null Transaction creation date interval in UnixTimeStamp format.
to Integer null Transaction creation date interval in UnixTimeStamp format - max difference with "from" value 60 days.
page Integer 0 The page number. Each page contains as many transactions as indicated in the maxRows value.
type String all Cred/deb note types:
  • GENERIC_CREDIT_NOTE
  • SERVICE_FEE_CREDIT_NOTE
  • CHARGEBACK_COVERED_CREDIT_NOTE
  • GENERIC_DEBIT_NOTE
  • REFUND
  • REFUND_PROCESSING_FEE
  • CASHOUT_TRANSACTION
  • CASHOUT_PROCESSING_FEE
  • CHARGEBACK
  • CHARGEBACK_PROCESSING_FEE
  • SERVICE_FEE_DEBIT_NOTE

Refunds Endpoint

Staging GET https://merchants-api-stg.directa24.com/v1/refund

Production GET https://merchants-api.directa24.com/v1/refund

This endpoint allows you to retrieve the details of all your Refunds in a given time.

Refunds Endpoint Parameters
Parameter Mandatory Format Default Description
from Integer null Transaction creation date interval in UnixTimeStamp format.
to Integer null Transaction creation date interval in UnixTimeStamp format - max difference with "from" value 60 days.
page Integer 0 The page number. Each page contains as many transactions as indicated in the maxRows value.
country String (max length: 2) all Country´s code. Click here to see the list of countries.
paymentMethod String (max length: 2) all Payment Method code. See Payment Methods for its codes.
status String all Transaction´s status. Values:
  • PENDING
  • COMPLETED
  • CANCELLED
  • WAITING_DETAILS

Chargebacks Endpoint

Staging GET https://merchants-api-stg.directa24.com/v1/chargeback

Production GET https://merchants-api.directa24.com/v1/chargeback

This endpoint allows you to retrieve the details of all your Chargebacks in a given time.

Chargebacks Endpoint Parameters
Parameter Mandatory Format Default Description
from Integer null Transaction creation date interval in UnixTimeStamp format.
to Integer null Transaction creation date interval in UnixTimeStamp format - max difference with "from" value 60 days.
page Integer 0 The page number. Each page contains as many transactions as indicated in the maxRows value.
country String (max length: 2) all Country´s code. Click here to see the list of countries.
status String all Transaction´s status. Values:
  • PENDING
  • COMPLETED
  • CANCELLED
  • FAILED

Settlements Endpoint

Example: Merchants API Settlements Endpoint output

{
    "data": [
        {
            "id": 3329,
            "creationDate": "2020-01-06T00:00:00Z",
            "type": "MANUAL",
            "currency": "USD",
            "requestedAmount": 50000.0,
            "fee": 250.0,
            "amountToTransfer": 49750.0,
            "status": "PENDING",
            "idMerchant": 4,
            "merchantName": "Merchant Test"
        },
        {
            "id": 3328,
            "creationDate": "2019-12-13T00:00:00Z",
            "type": "MANUAL",
            "currency": "USD",
            "requestedAmount": 1000000.0,
            "fee": 0.0,
            "amountToTransfer": 1000000.0,
            "status": "PENDING",
            "idMerchant": 4,
            "merchantName": "Merchant Test"
        }
    ],
    "page": 0,
    "rows": 2,
    "maxRows": 50
}

Staging GET https://merchants-api-stg.directa24.com/v1/settlements

Production GET https://merchants-api.directa24.com/v1/settlements

This endpoint allows you to retrieve the details of all your Settlements in a given time.

Settlements Endpoint Parameters
Parameter Mandatory Format Default Description
from Integer null Transaction creation date interval in UnixTimeStamp format.
to Integer null Transaction creation date interval in UnixTimeStamp format - max difference with "from" value 60 days.
page Integer 0 The page number. Each page contains as many transactions as indicated in the maxRows value.
status String all Transaction´s status. Values:
  • PENDING
  • COMPLETED
  • CANCELLED
  • FAILED

Balance Report Endpoint

Example: Merchants API Balance Report Endpoint output

{
    "data": [
        {
            "idMerchant": 4,
            "depositTotal": 0.0,
            "cashoutTotal": 0.0,
            "noteTotal": 0.0,
            "settlementTotal": 0.0,
            "cancelledSettlementTotal": 0.0,
            "depositFeeTotal": 0.0,
            "netAmount": 0.0,
            "totalBalance": 104642.98,
            "date": "2020-01-30T00:00:00Z",
            "currency": "USD"
        },
        {
            "idMerchant": 4,
            "depositTotal": 12.5,
            "cashoutTotal": 0.0,
            "noteTotal": 0.0,
            "settlementTotal": 0.0,
            "cancelledSettlementTotal": 0.0,
            "depositFeeTotal": 0.1,
            "netAmount": 12.4,
            "totalBalance": 104655.38,
            "date": "2020-01-31T00:00:00Z",
            "currency": "USD"
        }
    ],
    "page": 0,
    "rows": 2,
    "maxRows": 50
}

Staging GET https://merchants-api-stg.directa24.com/v1/balance/report

Production GET https://merchants-api.directa24.com/v1/balance/report

This endpoint allows you to retrieve the details of your daily Balance Report in a given time.

Balance Report Endpoint Parameters
Parameter Mandatory Format Default Description
from Integer null Transaction creation date interval in UnixTimeStamp format.
to Integer null Transaction creation date interval in UnixTimeStamp format - max difference with "from" value 60 days.
page Integer 0 The page number. Each page contains as many transactions as indicated in the maxRows value.

Total Available Balance Endpoint

Staging GET https://merchants-api-stg.directa24.com/v1/balance/report

Production GET https://merchants-api.directa24.com/v1/balance/report

This endpoint allows you to retrieve the details of your Total Available Balance in a given time.

Total Available Balance Endpoint Parameters
Parameter Mandatory Format Default Description
from Integer null Transaction creation date interval in UnixTimeStamp format.
to Integer null Transaction creation date interval in UnixTimeStamp format - max difference with "from" value 60 days.
page Integer 0 The page number. Each page contains as many transactions as indicated in the maxRows value.

Logout Endpoint

Staging      DELETE   https://merchants-api-stg.directa24.com/v1/auth/session/destroy

Production   DELETE   https://merchants-api.directa24.com/v1/auth/session/destroy

The token expires 15 minutes after its last use. In case of wanting to terminate the session earlier, you will have to use the above mentioned endpoint with the DELETE method.

This will take the BEARER_TOKEN in the header of the request and invalidate it for future uses.

Once the token was deleted, you will need to authenticate again before sending a new request.

Merchants API codes

HTTP codes

Code Description Action
200 Ok The request was successful.
301 Moved Permanently. Make sure you are sending the request over HTTPS.
400 Bad Request. Make sure the syntax of the request is correct.
401 Unauthorized. The token is expired or incorrect.
403 Forbidden. Your IP may not be whitelisted or you are not allowed to use this API.
405 Method Not Allowed. The request HTTP method you are using is incorrect.
412 Precondition Failed. Make sure you are sending the right credentials, that your account is active, or that it was configured for Merchants API usage. It will be shown in case of incorrect parameters as well.
500 Internal Server Error. Make sure the content type of the request is the correct and that the syntax of the request is also correct.

Error codes

Code Description Action
11 You have typed wrong credentials, or the user is either locked or inactive. Make sure you are using the right credentials. Also check with one of your admin user accounts if the account is active.
17 Date from must be before date to. Make sure the FROM field in the GET request is smaller than the TO field.
19 Provided ISO country XX is not valid. Click here to see the list of countries.
26 Access denied. The user has insufficient privileges. Make sure your API user account is not configured as administrator and that you have the required capabilities configured to hit the endpoint (go to Accounts -> Users).
83 You are not permitted to log in from this location, please contact your account administrator. The IP you are using has to be whitelisted. Please see Whitelisting IPs.
96 The user type is incorrect. The user account is not configured for usage with the Merchants API. Please see Configuration and reach out to integration@directa24.com.

Data Validations

In order to avoid Declined transactions, you should validate the fields with the following instructions before sending the request through our APIs.

Common validations

Some of the fields sent through the deposits API and the cashouts API share the same validations. Those will appear in this section in the order: Deposit field / Cashout field.

x_cpf / document_id

Country Document type Validation
Argentina DNI Numeric. Length 7-9
Argentina CUIT / CUIL Numeric. Length between 7 and 9 inclusive or equal to 11
Brazil CPF Numeric. Length 11 (Validate verifier-digits)
Brazil CNPJ Numeric. Length between 12 and 14 (Validate verifier-digits)
Cameroon PASS / CI / DL (driving license) Numeric. Length between 8 and 12 inclusive
Chile ID / RUN / RUT Length 8 or 9
China ID Length between 3 and 20 inclusive
Colombia CC Numeric. Length between 6 and 10
Colombia NIT Numeric. Length 10 (without dashes)
Colombia CE or PASS Numeric. Length between 6 and 10
Colombia CE (for PEP) Numeric. Length 15
Côte d'Ivoire ID Length between 8 and 12 inclusive
Ecuador CC Numeric. Length between 9 and 11 inclusive
Ecuador RUC Numeric. Length between 12 and 14 inclusive
Ghana ID Length between 8 and 12 inclusive
India ID Length between 8 and 12 inclusive
Indonesia NIK/KTP Numeric. Length between 14 and 18 inclusive
Kenya ID Length between 7 and 12 inclusive
Malaysia ID Numeric. Length between 10 and 14 inclusive
Mexico CURP/RFC/IFE/PASS/Residencia Length between 8 and 18 inclusive
Nigeria ID Length between 9 and 12 inclusive
Peru CE Numeric. Length 9
Peru DNI Numeric. Length 8-9
Peru PASS Length 12
Peru RUC Length 11
Philippines PSN Numeric. Length between 9 and 13 inclusive
South Africa ID Numeric. Length between 9 and 14 inclusive
Tanzania ID Length between 8 and 13 inclusive
Thailand ID Numeric. Length between 10 and 14 inclusive
Uganda RIC / NID Numeric. Length between 11 and 15 inclusive
Uruguay CI Numeric. Length between 6 and 8 inclusive
Vietnam ID Numeric. Length between 9 and 13 inclusive

x_zip / postal_code

The validation for the zip codes dependes on the country sent.

Country Regex Example
Argentina ^\d{4}|[A-Za-z]\d{4}([a-zA-Z]{3})?$ A1234ABC
Brazil ^\d{5}[\s-/]?\d{3}$ 12345-678
Cameroon N/A N/A
Chile ^\d{3}[\s-/]?\d{4}$ 123-4567
China ^\d{6}$ 123456
Colombia ^\d{5,6}$ 12345
Côte d'Ivoire N/A N/A
Ecuador ^\d{6}$ 123456
Ghana ^[A-Za-z]{2}\d{3,5}$ AB1234
India ^\d{3}[\s-/]?\d{3}$ 123-456
Indonesia ^\d{5}$ 12345
Kenya ^\d{5}$ 12345
Malaysia ^\d{5}$ 12345
Mexico ^\d{5}$ 12345
Nigeria ^\d{6}$ 123456
Panama ^\d{4,6}$ 12345
Paraguay ^\d{4}$ 1234
Peru ^\d{5}$ 12345
Philippines ^\d{3,4}$ 1234
South Africa ^\d{4}$ 2345
Tanzania ^\d{5}$ 12345
Thailand ^\d{5}$ 12345
Uganda N/A N/A
Uruguay ^\d{5}$ 12345
Vietnam ^\d{5}$ 12345

x_email / email

The emails sent must be valid to avoid issues while generating the requests.

Regex Example
^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$ user-name@domain.com

x_country / country and currencies

The country codes are in ISO 3166-1 alpha-2 format. The currencies are in ISO 4217 format.

Country Country code
(ISO 3166-1 alpha-2 code)
Currencies
Argentina AR USD / ARS
Brazil BR USD / BRL
Chile CL USD / CLP
Cameroon CM USD / XAF
China CN USD / CNY
Colombia CO USD / COP
Côte d'Ivoire CI USD / XOF
Ecuador EC USD
Ghana GH USD / GHS
India IN USD / INR
Indonesia ID USD / IDR
Kenya KE USD / KES
Malaysia MY USD / MYR
Mexico MX USD / MXN
Nigeria NG USD / NGN
Panama PA USD
Peru PE USD / PEN
Paraguay PY USD / PYG
Philippines PH USD / PHP
South Africa ZA USD / ZAR
Tanzania TZ USD / TZS
Thailand TH USD / THB
Uganda UG USD / UGX
Uruguay UY USD / UYU
Vietnam VN USD / VND

Cashout specific validations

bank_branch

The validation for the bank_branch dependes on the bank sent. Some branches aren´t allowed, those are shown in the Exceptions column.

Country Bank Regex Exceptions Example
Brazil Banco do Brasil ^\d{1,4}(-)?[\dxX]$ ^0{0,4}(-)?[\dxX]$
Brazil Santander ^\d{1,4}$ ^033$
Brazil Banrisul ^\d{1,4}(-)?[\dxX]$
Brazil Caixa ^\d{1,4}(-)?[\d]$ ^001$|^013$|^023$|^104$
Brazil Bradesco ^\d{1,4}(-)?[\d]$ ^237$
Brazil Itau ^\d{1,4}(-)?[\d]$ ^341$
Brazil PagSeguro ^\d{3}(-)?[\d]$
Brazil Banco Inter ^\d{1,4}(-)?[\d]$ ^077$
Brazil Banco Nu Pagamento ^\d{1,4}(-)?[\d]$ ^260$
Brazil Others ^\d{1,4}(-)?[\d]$
India All (IFSC) ^[A-Z|a-z]{4}[0][a-zA-Z0-9]{6}$ IDIB000M322, IDIB000G066

Support

To optimize the communication with our support team, all the enquiries must be triggered from the Merchants Panel.

Raise a ticket related to the transaction you need support with, or raise a generic ticket if your problem doesn't fall into any category. Once you raise a ticket, the support team will respond or redirect to the responsible area.

Contacts

It is important for you to maintain your support contacts on the Merchants panel, the tickets responses will be delivered to those emails.

alt steps

Resend Notifications

If by any chance, your server was down or unable to receive the notifications of the transactions, please do not open a ticket, you can always manually resend them from the Merchant Panel.

alt steps

Request Go Live

Once you have completed all the integration testing and you are ready to go to production environment (*), you will have to click on "Request Go Live" (**) on the Home page of the Merchant Panel.

alt steps

Deposits Support

alt steps

Cashouts and Refunds Support

alt steps

Debit and Credit Notes Support

alt steps

Compliance and Clients

In this category you can manage Fraud, Risk, Blacklist, Limits & Compliance incidents.

Limits

Request increasing limits for a particular client. Send your comments (and related documents) to the compliance team to analyze.

alt steps

Greylist, Blacklist and Blocked users

Request your client to be removed from Greylist, or unblocked. Send your comments (and related documents) to your compliance team to analyze.

alt steps

Generic Ticket

If your issue doesn't fall into any category, you can always raise a generic ticket.

alt steps

Users accounts

User maintenance such as Passwords or MFA reset must be done directly on the merchants panel. Every merchant has at least one Admin user, who will be able to maintain other users settings.

alt steps

You can create as many accounts as people that needs access. In order to do so you need to go to "Accounts" -> "Users" -> "Create New Account". Note you can assign those users a predefined set of permissions, or add / remove permissions one by one.

Integration

If your merchant account is still on Staging, or you have integration or operational questions, reach out to integration@directa24.com.

Please consider including your merchant and/or company identifying information so our team can help you more efficiently.

Commercial

For support about Payment Methods not listed on your Merchant Account, or for queries about fees please contact your Account Manager or reach out to commercial@directa24.com.