Skip to main content

Transfer between bank accounts IBAN to IBAN

Transfer between bank accounts IBAN to IBAN (further down A2A) are direct electronic transfers of funds from the buyer's bank account to the recipient's account.

Currently, this method is only available with direct integration.

Direct integration​

Interaction format:

a2a

info

Please note that with direct integration, the entire interaction interface must be implemented on your side.

List of improvements:

  • display the a2a payment method button on your site (1 in the diagram)

  • redirect the client to the page with the list of banks (6 in the diagram)

  • Recommendations for interacting with the payer when redirecting from desktop via QR:

    Behaviour after receiving the callback:

    • Callback "success" → automatically show confirmation on the intermediate page and offer a "Return to site" button
    • Callback "failure" → show status: "Payment failed. Try again", and a button for retry
    • Ensure the QR page closes or redirects the user after receiving the callback (e.g. automatically after 5 minutes)
  • display the final payment status (10 in the diagram)

When creating a payment, send a request with the following parameters:

ParameterTypeRequiredDescription
pos_idUUID✅Merchant's identifier (POS_ID)
modeMODE✅direct
methodMETHOD✅Payment method ( purchase)
amountNumber✅Transaction amount. Must be a positive number. The number of decimal digits must be less than or equal to 2 (e.g., 100.00, 250, 50.50)
currencyCURRENCY✅Transaction currency (ISO_4217)
descriptionString✅Payment description
order_idString✅Unique identifier of order
order_3ds_bypassString✅3-D Secure flow option
paywayString✅Optional payway. Use "bank_pay" for processing a2a payments
productsArray[Product]Array of products to be paid
customer_idString✅Customer identifier in merchant's system. Is not mandatory in case of using customer_tax_id
customer_tax_idString✅Customer’s tax identification number. The parameter is mandatory for a2a payments
customer_fnameString✅Customer first name
customer_lnameString✅Customer last name
customer_emailStringCustomer email
customer_phoneStringCustomer phone
customer_ipStringCustomer IP address
customer_countryStringCustomer country (ISO 3166-1 (alpha-2)). For instance, UA for Ukraine
server_urlURLWebhook notification will be sent to this URL
result_urlURLCustomer will be redirected to this URL after payment.
merchant_mccMCCMCC for this transaction
payloadStringField for merchant custom data. Max 4000 symbols.
validation_urlStringPreflight request will be sent to this URL

Request example:

curl --location 'https://cpay.tranzzo.com/api/v1/payment' \
--header 'Content-Type: application/json' \
--header 'X-API-AUTH: CPAY-HMAC-SHA256 $API_KEY:$SIGNATURE' \
--data '{
"pos_id": "${POS_ID}",
"mode": "direct",
"method": "purchase",
"amount": 1,
"currency": "UAH",
"description": "Order description",
"order_id": "123",
"order_3ds_bypass": "always",
"payway": "bank_pay",
"server_url": "http://callback-stub:9000/consume",
"result_url": "https://example.com/result",
"payload": "sale=true"
}'

caution

The amount may be changed by the payer and differ from the original request.

Be sure to account for and process the actual amount that will be credited to your account. You will receive the changed amount in the processed_amount parameter in the callback.

Example response after payment initialization (returns user_action_url):

{
"amount": 1,
"cc_mask": "411111******1111",
"cc_token": "ODJkZjBhNmY2OTMyNDJlN2wjMjFjfTQzOXU3ZDFhYzI6cWJmWHFmMHlzM3hYaXJMWEZv",
"created_at": "2026-02-09T16:06:34.456",
"currency": "UAH",
"customer_country": "UA",
"customer_email": "[email protected]",
"customer_fname": "Tom",
"customer_lname": "Hanks",
"customer_phone": "+380999999999",
"description": "Order description",
"gateway_order_id": "2bf5044c-1daa-47b8-a6c0-b9173675ca5c",
"method": "purchase",
"mode": "direct",
"options_3ds": "always",
"order_id": "2769312212",
"payload": "sale=true",
"payment_id": "bee8e3b9-46ee-4db8-8275-95d8be202aeb",
"payway": "bank_pay",
"pos_id": "ab4c4e99-0154-449a-abae-e42cafdfce54",
"processed_at": "2026-02-09T16:06:35.456",
"receipt_url": "https://cpay.tranzzo.com/public/receipt/12491284012940129402424124124124124ffef3re3rf32f2vf",
"result_url": "https://example.com/result",
"status": "pending",
"status_code": "2124",
"status_description": "Waiting for redirect to continue payment",
"user_action_required": true,
"user_action_url": "https://int.secure3d.net/BNzZkf/action/bee8e3b9-46ee-4db8-8275-95d8be202aeb/start"
}

Additional Webhook parameters provided by a2a payments:

ParameterTypeRequiredDescription
bank_pay.sender_mfoString✅Sender's Bank Identifier Code (BIC)
bank_pay.sender_ibanString✅Sender's IBAN
bank_pay.sender_bankString✅Sender's bank name
bank_pay.sender_nameString✅Sender's full name
bank_pay.sender_tax_idString✅Sender's tax ID
bank_pay.receiver_ibanString✅Receiver's IBAN
bank_pay.descriptionString✅Description of a2a payment

Example:

"bank_pay": {
"sender_mfo": "test_mfo_456",
"sender_bank": "Pumb",
"sender_iban": "UA558771690896444199621297483",
"sender_name": "John Doe",
"sender_tax_id": "1234567890",
"receiver_iban": "UA573220000000026007233566001",
"description": "Test operation"
}

Full callback example after payment:

{
"pos_id": "ab4c4e99-0154-449a-abae-e42cafdfce54",
"mode": "direct",
"method": "purchase",
"status_code": "1000",
"description": "Order description",
"created_at": "2026-01-26T09:24:33.659",
"cc_token": "ODJkZjBhNmY2OTMyNDJlN2wjMjFjfTQzOXU3ZDFhYzI6cWJmWHFmMHlzM3hYaXJMWEZv",
"cc_mask": "411111******1111",
"bank_pay": {
"sender_mfo": "test_mfo_456",
"sender_bank": "Pumb",
"sender_iban": "UA558771690896444199621297483",
"sender_name": "John Doe",
"sender_tax_id": "1234567890",
"receiver_iban": "UA573220000000026007233566001",
"description": "Test operation"
},
"payment_id": "cb89305e-e013-4f89-ad40-cb9ee2e28ade",
"processed_at": "2026-01-26T09:25:46.850",
"currency": "UAH",
"_version": "2.0",
"transaction_id": "cb89305e-e013-4f89-ad40-cb9ee2e28ade",
"status_description": "Transaction is successful",
"result_url": "https://example.com/result",
"amount": 1,
"processed_amount": 1,
"customer_phone": "+380999999999",
"payway": "bank_pay",
"gateway_order_id": "afb61923-d558-4b0e-85fb-3146d209653c",
"processed_currency": "UAH",
"customer_lname": "Hanks",
"customer_fname": "Tom",
"customer_email": "[email protected]",
"order_id": "2482421155",
"status": "success",
"options_3ds": "always",
"payload": "sale=true",
"user_action_required": false
}