Payment API Gateway (v5.7.2)

Download OpenAPI specification:

Payment API Basics

This API is part of the our ecosystem. It allows you to make payments, find out the status of transactions and much more. Here you will find the latest documentation on setting up your solution.

Generating signature

Merchant’s request and callback have to be signed to verify sent data. To generate the signature all sent parameters from the payload are included in the order they were sent. The parameter signature should be excluded, of course,! and added to the payload after generating

Note: to generate a correct signature you need a secretKey received with other credentials.

PHP example

function calculateSignature(array $data, string $secretKey, string $currentParamPrefix = '', int $depth = 16, int $currentRecursionLevel = 0 ): string
{
    if ($currentRecursionLevel >= $depth) {
        throw new Exception('Recursion level exceeded');
    }

    $stringForSignature = '';
    foreach ($data as $key => $value) {
        if (is_array($value)) {
                $stringForSignature .= calculateSignature(
                $value,
                $secretKey,
                "$currentParamPrefix$key.",
                    $depth,
                $currentRecursionLevel + 1
            );
      } else if ($key !== 'signature') {
                $stringForSignature .= "$currentParamPrefix$key" . $value;
      }
   }

    if ($currentRecursionLevel == 0) {
      return strtolower(hash_hmac('sha512', $stringForSignature, $secretKey));
    } else {
      return $StringForSignature;
    }
 }

$postData = [
  'merchant_id' => 'fffed61be9780b97c5e4c65e4e07bb6b',
  'provider_id' => 10,
  'client_id' => '080000000',
  'country' => 'KE',
  'order_id' => 'order_3444298767545',
  'amount' => 1000,
  'currency' => 'CDF',
  'callback_url' => 'https://my.callback.url'
];

$secretKey = "cf11635572c1e8d77297207152dc0791ad91f22b32d23c758ce3ba2637202ad8f7290ba41f2243cccf32edde1dfb8bf0f5dea62525309e293b3adb2c76eed6a5";

$signature = calculateSignature($postData, $secretKey);

$postData['signature'] = $signature;

Examples in other languages are available on request

Status Codes

The parameters below will be obtained by a status query

Code Name Description
-1 undefined Operation status is undefined (for example in an error situation)
0 initiated Operation is initiated
1 in progress Operation is in progress
2 success Operation is successful
3 failed Operation is failed
4 cancelled Operation is cancelled

Operation Types

Depending on the type of request you may see the following code

You can see this parameter in the callback

Code Operation
16 payment_b2c
17 payment_c2b

Available currencies

Code Name Locations
BRL Brazilian Real Federative Republic of Brazil
CHL Chile Republic of Chile
ARG Argentine Republic of Argentine

Responses for confirmation requests have the same format as original operation responses.

Callbacks

C2b transaction status is sent via callback because it needs a confirmation by client done asynchronously. Usually the callback should be sent in 2-3 minutes maximum. In case of missing callback there is a way to get the transaction status using API method status. It needs the order ID as an parameter and returns a status of the performed transaction.

Response for callback

Payment gateway considers the Merchant system response as successful if HTTP 200 was received.

Payment Methods

Simulator

Provider ID Provider Name Notes
14 Simulator For testing purposes

During tests runs, using 14 provider ID (simulator) the callback is not returned and the transaction remains in the "in progress" status and if successful you will see in the response

{
  "order_id": "54321",
  "transaction_id": "12345",
  "transaction_ref": "",
  "status": 1,
  "result": {
      "code": 0,
      "message": "OK"
  },
  "provider_result": {
      "code": -8888,
      "message": "Good"
  },
  "service_id": 1,
  "service_version": "1.03/1.14|1.0/1.26|1.0/1.0|1.01/1.01|1.01/1.01||1.01/1.27",
  "service_date_time": "2023-05-15 10:00:00.000000",
  "confirm_type": 0
}

Argentine

Provider ID Provider Name Notes
9985 CVU Check provider id with your manager

C2B for Provider_ids redirecting to Provider payment pages: 9985

  1. Customer initiates the payment on Merchant side
  2. Merchant sends request to the platform (POST C2B request) and set extra data depending on the provider_id:
Provider_id No Extra Required customer_email customer_name customer_ip customer_doc_number customer_doc_type return_url
9985 * * * *
  1. Merchant gets the status of the operation and extra data customer_redirect
    Example of a user redirect link:
"extra": 
{
"customer_redirect": "https://checkout.provider.com/202511131111MqKRft39377/pay"
}, 
  1. Merchant redirect Customer to provider page
  2. Customer confirms the payment on the provider page
  3. Merchant gets a callback (or requests the status) with the final state of the operation

Argentine limits

Provider_id c2b minimum b2c minimum Maximum transaction limit
9985 ARS 1000.00 BRL - BRL 1'000'000.00

Brazil

Provider ID Provider Name Notes
9405 BankTransfer Check provider id with your manager
9954 PIX Check provider id with your manager

5500000000000 - This is the format of the phone number you have to send in the payment requests.

C2B for Provider_ids redirecting to Provider payment pages: 9954

  1. Customer initiates the payment on Merchant side
  2. Merchant sends request to the platform (POST C2B request) and set extra data depending on the provider_id:
Provider_id No Extra Required customer_email customer_name customer_ip return_url
9954 *
  1. Merchant gets the status of the operation and extra data customer_redirect
    Example of a user redirect link:
"extra": 
{
"customer_redirect": "https://checkout.provider.com/202511131111MqKRft39377/pay"
}, 
  1. Merchant redirect Customer to provider page
  2. Customer confirms the payment on the provider page
  3. Merchant gets a callback (or requests the status) with the final state of the operation

B2C flow is the same for everyone, please specify the required extra parameters

  1. Customer initiates the payment on Merchant side
  2. Merchant sends request to the platform (POST B2C request) and set extra data depending on the provider_id:
Provider_id No Extra Required customer_email customer_name return_url customer_doc_number
9954 * *
  1. Customer receives funds to their mobile number
  2. Merchant gets a callback (or requests the status) with the final state of the operation

C2B for 9405

  1. Customer initiates the payment on Merchant side

  2. Merchant sends request to the platform (POST C2B request) where customer_id should be customer phone number and set extra data:

  • customer_name

  • customer_email

  • customer_doc_type (Example: "customer_doc_type": "CPF")

  • customer_doc_number (Should be customer CPF number)

  1. Merchant gets the status of the operation and extra data customer_redirect

Example of a user redirect link:

"extra": 
{
"customer_redirect": "https://checkout.provider.com/202511131111MqKRft39377/pay"
}, 
  1. Merchant redirects a customer to provider payment page

  2. Customer makes a payment on the page

  3. Merchant gets a callback (or requests the status) with the final state of the operation

B2C for 9405

  1. Customer initiates the payment on Merchant side

  2. Merchant sends request to the platform (POST B2C request) where customer_id should be customer CPF number and set extra data:

  • customer_name

  • customer_email

  • customer_doc_type (Example: "customer_doc_type": "CPF")

  • customer_doc_number (Should be customer CPF number)

  • customer_phone

  1. Customer receives funds to their mobile number

  2. Merchant gets a callback (or requests the status) with the final state of the operation

Brazil limits

Provider_id c2b minimum b2c minimum Maximum transaction limit
9405 BRL 5.00 BRL 5.00 BRL C2B 4'999.00 / B2C 15'000.00
9954 BRL 10.00 BRL 10.00 BRL 15'000.00 (C2B) BRL 5'000.00 (B2C)

Chile

Provider ID Provider Name Notes
9965 Webpay Check provider id with your manager
9964 Khipu Check provider id with your manager
9963 Mach Check provider id with your manager
9962 Pago Check provider id with your manager
9961 Bank Transfer Check provider id with your manager

C2B for Provider_ids redirecting to Provider payment pages: 9965

  1. Customer initiates the payment on Merchant side
  2. Merchant sends request to the platform (POST C2B request) and set extra data depending on the provider_id:
Provider_id No Extra Required customer_email customer_name customer_doc_type return_url
9965, 9964, 9963, 9962, 9961 * * *
  1. Merchant gets the status of the operation and extra data customer_redirect
    Example of a user redirect link:
"extra": 
{
"customer_redirect": "https://checkout.provider.com/202511131111MqKRft39377/pay"
}, 
  1. Merchant redirect Customer to provider page
  2. Customer confirms the payment on the provider page
  3. Merchant gets a callback (or requests the status) with the final state of the operation

B2C Payments for universal bank transfer

  • Customer initiates the withdrawal on Merchant side.
  • Merchant receives the list of available banks and its codes via get banks API Method
  • Customer selects on the Merchant’s side the Bank and specifies their recipient’s bank account
  • Merchant sends B2C request to the platform where customer_id is customer bank account number and sets extra data
    • bank_code got from get banks API Method response
    • Extra parameters used:
      Provider_id bank_code customer_acc_number customer_doc_number customer_name customer_email customer_acc_type customer_doc_type
      9961 * * * * * * *

Regardless of the extra parameters used for these methods, we strongly recommend specifying at least: customer_email, customer_name to unify the solution and the ability to use SR

  • Platform transfers funds to the Customer's bank account
  • Merchant gets a callback (or requests the status) from the platform with the final state of the operation

Chile

Provider_id c2b minimum b2c minimum Maximum transaction limit
9965, 9964, 9963, 9962 BRL 10.00 - BRL 15'000.00
9961 - BRL 10.00 BRL 15'000.00

API Methods

Customer to the Business

path Parameters
public_id
required
string
Example: f54ec96649be11ebb3780242ac130002

Merchant public ID

Request Body schema: application/json
required

Parameters to initiate a customer to the merchant payment

merchant_id
required
string (merchantIdDef)

Unique Merchant ID received during the merchant registration

customer_id
required
string (customerIdDef)

Customer ID (usually mobile phone number of the customer)

order_id
required
string (orderIdDef)

The unique value is generated by the transaction initiator for each Operation. Max length is 128 symbols. Allowed symbols: [a-z], [A-Z], [0-9], “_” (underscore character), “-” (hyphen), “:” (colon), “.” (dot). For example, GUID or TIMESTAMP can be used as an order_id. This parameter provides API idempotency. It means that requests with identical nonce from the same transaction initiator will have identical responses and The corresponding operation won’t be repeated.

amount
required
string

Amount to pay, should be in format with two digits after point

currency
required
string (currencyDef)

Currency code in ISO 4217 format from the list of availabe currencies

country
string (countryDef)

Country code in ISO 3166-1 alpha-2 format as defined in the payment providers.

callback_url
string

URL to notify the merchant via callback. Recommended

provider_id
required
integer (providerDef)

Provider ID. Can be one of the option from this list.

object

Extra parameters

signature
required
string (signatureDef)

Merchant’s request and callback have to be signed to verify sent data. To generate the signature all sent parameters are included in the order they were sent. The parameter signature should be excluded, of course. Example can be found here

Responses

Callbacks

Request samples

Content type
application/json
{
  • "merchant_id": "e0fecd91fcb24f348048193b3fb34875ba3722b4",
  • "customer_id": "254900000001",
  • "order_id": "16280954971628095497",
  • "amount": "100.00",
  • "currency": "CDF",
  • "country": "KE",
  • "callback_url": "https://example.com/callback",
  • "provider_id": 14,
  • "extra": {
    },
  • "signature": "d7d6d76b0e22c6f9d369fa6c24f107053d12bfd24d3b154f2deb6676bf179c123134e1f20879c803be455d81cfe792f00cd8892c26ce7cf5a05beebb9c80843e"
}

Response samples

Content type
application/json
{
  • "order_id": "16280954971628095497",
  • "transaction_id": "732007046722",
  • "transaction_ref": "MP.33234.342.CP33",
  • "status": 1,
  • "result": {
    },
  • "provider_result": {
    },
  • "service_id": 1,
  • "service_version": 11.1,
  • "service_date_time": "2020-11-25 10:08:32.832969"
}

Callback payload samples

Callback
POST: Asynchronous notification of the merchant about the last performed transaction
Content type
application/json
{
  • "merchant_id": "e0fecd91fcb24f348048193b3fb34875ba3722b4",
  • "operation_type": 17,
  • "customer_id": "254900000001",
  • "amount": 100,
  • "order_id": "16280954971628095497",
  • "transaction_id": "1234567",
  • "transaction_ref": "QR555RQ",
  • "status": 2,
  • "provider_id": 14,
  • "destination_id": "",
  • "result": {
    },
  • "provider_result": {
    },
  • "service_id": 1,
  • "service_version": "1.03/1.0|1.0/1.26|1.0/1.0|1.01/1.0|1.01/1.0||1.01/1.27",
  • "service_date_time": "2020-11-25 10:08:32.832969",
  • "signature": "d7d6d76b0e22c6f9d369fa6c24f107053d12bfd24d3b154f2deb6676bf179c123134e1f20879c803be455d81cfe792f00cd8892c26ce7cf5a05beebb9c80843e"
}

Business to the Customer

path Parameters
public_id
required
string
Example: f54ec96649be11ebb3780242ac130002

Merchant public ID

Request Body schema: application/json
required

Parameters to initiate the merchant to the customer payment

merchant_id
required
string (merchantIdDef)

Unique Merchant ID received during the merchant registration

customer_id
required
string (customerIdDef)

Customer ID (usually mobile phone number of the customer)

order_id
required
string (orderIdDef)

The unique value is generated by the transaction initiator for each Operation. Max length is 128 symbols. Allowed symbols: [a-z], [A-Z], [0-9], “_” (underscore character), “-” (hyphen), “:” (colon), “.” (dot). For example, GUID or TIMESTAMP can be used as an order_id. This parameter provides API idempotency. It means that requests with identical nonce from the same transaction initiator will have identical responses and The corresponding operation won’t be repeated.

amount
required
string

Amount to pay, with two digits after point

currency
required
string (currencyDef)

Currency code in ISO 4217 format from the list of availabe currencies

country
string (countryDef)

Country code in ISO 3166-1 alpha-2 format as defined in the payment providers.

callback_url
string

URL to notify the merchant via callback

provider_id
required
integer (providerDef)

Provider ID. Can be one of the option from this list.

object

Extra parameters

signature
required
string (signatureDef)

Merchant’s request and callback have to be signed to verify sent data. To generate the signature all sent parameters are included in the order they were sent. The parameter signature should be excluded, of course. Example can be found here

Responses

Request samples

Content type
application/json
{
  • "merchant_id": "e0fecd91fcb24f348048193b3fb34875ba3722b4",
  • "customer_id": "254900000001",
  • "order_id": "16280954971628095497",
  • "amount": "100.00",
  • "currency": "CDF",
  • "country": "KE",
  • "callback_url": "https://example.com/callback",
  • "provider_id": 14,
  • "extra": {
    },
  • "signature": "d7d6d76b0e22c6f9d369fa6c24f107053d12bfd24d3b154f2deb6676bf179c123134e1f20879c803be455d81cfe792f00cd8892c26ce7cf5a05beebb9c80843e"
}

Response samples

Content type
application/json
{
  • "order_id": "16280954971628095497",
  • "transaction_id": "732007046722",
  • "transaction_ref": "MP.33234.342.CP33",
  • "status": 1,
  • "result": {
    },
  • "provider_result": {
    },
  • "service_id": 1,
  • "service_version": 11.1,
  • "service_date_time": "2020-11-25 10:08:32.832969"
}

Status check

path Parameters
public_id
required
string
Example: f54ec96649be11ebb3780242ac130002

Merchant public ID

Request Body schema: application/json
required

Get the status of the performed transaction

merchant_id
required
string (merchantIdDef)

Unique Merchant ID received during the merchant registration

order_id
required
string (orderIdDef)

The unique value is generated by the transaction initiator for each Operation. Max length is 128 symbols. Allowed symbols: [a-z], [A-Z], [0-9], “_” (underscore character), “-” (hyphen), “:” (colon), “.” (dot). For example, GUID or TIMESTAMP can be used as an order_id. This parameter provides API idempotency. It means that requests with identical nonce from the same transaction initiator will have identical responses and The corresponding operation won’t be repeated.

signature
required
string (signatureDef)

Merchant’s request and callback have to be signed to verify sent data. To generate the signature all sent parameters are included in the order they were sent. The parameter signature should be excluded, of course. Example can be found here

Responses

Request samples

Content type
application/json
{
  • "merchant_id": "e0fecd91fcb24f348048193b3fb34875ba3722b4",
  • "order_id": "16280954971628095497",
  • "signature": "d7d6d76b0e22c6f9d369fa6c24f107053d12bfd24d3b154f2deb6676bf179c123134e1f20879c803be455d81cfe792f00cd8892c26ce7cf5a05beebb9c80843e"
}

Response samples

Content type
application/json
{
  • "order_id": "16280954971628095497",
  • "transaction_id": "532007056722",
  • "transaction_ref": "",
  • "status": 1,
  • "result": {
    },
  • "provider_result": {
    },
  • "extra": {
    },
  • "service_id": 11,
  • "service_version": 11.1,
  • "service_date_time": "2020-11-25 10:08:32.832969",
  • "confirm_type": 0
}