Skip to main content

Transfer between bank accounts (A2A)

A2A, or account-to-account payments, are direct electronic transfers of funds from the buyer's bank account to the recipient's account. A2A payments bypass traditional payment systems and are instantly credited 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)
  • display page with received QR code to the payer or send it directly to received link (6 in the diagram)
  • it is recommended to display some kind of pending page for desktop payments while the user is making the payment in their application.
    For example, "Confirm/complete the transaction in your bank's mobile application" (7-8 in the diagram)
  • display the final payment status (10 in the diagram)

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

ParameterTypeRequiredDescription
pos_idUUIDMerchant's identifier (POS_ID)
modeMODEdirect
methodMETHODPayment method ( purchase)
amountNumberTransaction 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)
currencyCURRENCYTransaction currency (ISO_4217)
descriptionStringPayment description
order_idStringUnique identifier of order
order_3ds_bypassString3-D Secure flow option
paywayStringOptional payway. Use "bank_pay" for processing a2a payments
productsArray[Product]Array of products to be paid
customer_idStringCustomer identifier in merchant's system. Is not mandatory in case of using customer_tax_id
customer_tax_idStringCustomer’s tax identification number. The parameter is mandatory for a2a payments
customer_fnameStringCustomer first name
customer_lnameStringCustomer 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-SHA1 $API_KEY:$SIGNATURE' \
--header 'X-API-KEY: $ENDPOINTS_KEY' \
--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"
}'

Example response after payment initialization (returns user_action_url):

{
"amount": 1,
"billing_order_id": 11231231231,
"cc_mask": "411111******1111",
"cc_token": "ODJkZjBhNmY2OTMyNDJlN2wjMjFjfTQzOXU3ZDFhYzI6cWJmWHFmMHlzM3hYaXJMWEZv",
"cc_token_expiration": "2028-10-10T10:10:22",
"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",
"eci": "07",
"gateway_order_id": "2bf5044c-1daa-47b8-a6c0-b9173675ca5c",
"mcc": "4900",
"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_mfoStringSender's Bank Identifier Code (BIC)
bank_pay.sender_ibanStringSender's IBAN
bank_pay.sender_bankStringSender's bank name
bank_pay.sender_nameStringSender's full name
bank_pay.sender_tax_idStringSender's tax ID
bank_pay.receiver_ibanStringReceiver's IBAN
bank_pay.descriptionStringDescription 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"
}