Skip to main content

Cross-border acceptance

The payer transfers money to a bank (or mobile operator) in another country: the order amount is set in currency, and the payer pays the amount due in the requisite currency — requisites.amount_local.

MethodRequisite (requisites.type)
CROSS_BORDERcard — card number or phone — phone number
CROSS_BORDER_CARDsame as CROSS_BORDER
CROSS_BORDER_SIMsim — subscriber phone number with a mobile operator

currency is required and must match the terminal currency. country is optional — the country to route the payment to (ISO-2); for a non-ruble order, if there are no requisites in that country, the payment is routed as without country. For CROSS_BORDER_SIM, bank may contain an operator code (Tajikistan: tcell, babilon_mobile, megafon_tjs, beeline_tj, zet_mobile); codes are in GET /v1/public/banks.

Amount

currency = requisite currencycurrency ≠ requisite currency (e.g. RUB)
requisites.amount_localequals amountamount to pay in the requisite currency

Request example

curl -X POST https://api.bopay.io/v1/payments \
-H "Content-Type: application/json" \
-H "X-Identity: <API-key>" \
-H "X-Signature: <Signature>" \
-d '{
"ext_id": "order_1",
"amount": 10000,
"currency": "RUB",
"method": "CROSS_BORDER_CARD",
"country": "KZ"
}'

Response example

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"ext_id": "order_1",
"amount": 10000,
"currency": "RUB",
"rate": 92.5,
"payin_rate": 7,
"terminal_id": "6f15ad5b-325f-44ca-8f36-233379dcaf4c",
"terminal_name": "Main Terminal",
"status": "PENDING",
"method": "CROSS_BORDER_CARD",
"requisites": {
"type": "card",
"value": "4400430212345678",
"bank": "kaspi",
"bank_name": "Kaspi Bank",
"country": "KZ",
"currency": "KZT",
"amount_local": 54500.00
},
"payment_url": "https://pay.bopay.io/invoice?id=550e8400-e29b-41d4-a716-446655440000",
"valid_until": "2026-01-30T12:30:00Z",
"created_at": "2026-01-30T12:15:00Z"
}

The payer transfers amount_local in requisites.currency to requisites.value. Other fields — as in Create Payment.

Errors

CodeHTTPReason
PAY_002400currency is required for method CROSS_BORDERcurrency not passed
PAY_002400currency KZT does not match terminal currency RUB — currency differs from the terminal currency
PAY_002400unsupported currency: XYZ / unsupported country: XX
PAY_004503No requisites available for the country/method