Developers
xPay API provides reliable tools to integrate QR payments. The system supports flexible settings and integration with external services.
XPAY API advantages
Payment scenarios that serve both business goals and UX.
Pay with any banking app in Kyrgyzstan
Users choose their preferred app and pay by QR without extra steps.
Payment page with bank buttons
A ready pay page with a QR code and quick bank app buttons.
Dynamic and static QR
Generate a QR per payment or use static QR with a fixed amount.
Flexible payment identifiers
Pass payer, service, and comment IDs for clean reconciliation.
Automatic payment status notifications
Webhooks let your system process incoming payments immediately.
Redirect after payment
Send customers back to the desired screen after payment.
Free API customization for your use case
If you need a non‑standard payment flow, we can implement the logic on our side and align the integration.
Clients connect XPAY API in 3 days
The API is clear and simple — integration into your system takes minimal time.
Below are the 3 core steps to receive QR payments via XPAY.
Authorization
Send your credentials in the request and receive an access token. Use the Bearer token for subsequent requests.
Request body
POST{
"client_id": "<YOUR_CLIENT_ID>",
"client_secret": "<YOUR_CLIENT_SECRET>"
}For testing we provide credentials upon request. For production, use your user’s unique keys available in the XPAY dashboard Profile section.
QR generation
Send a request to create a QR with required parameters and the authorization token.
Required fields: uuid and amount.
Headers
POST{
"Authorization": "Bearer <YOUR_ACCESS_TOKEN>",
"Accept": "application/json"
}Request body
POST{
"uuid": "985b0981-8e71-41bf-97fd-4e8769e8cd9f", // merchant id
"type": "dynamic", // QR type
"payer_id": "10000000000005", // payer id
"service_id": "1", // service id
"service_name": "MyService", // service name
"comments": "Payment comment", // QR comment
"callback_url": "http://webhook.url", // webhook endpoint
"return_url": "http://redirect.url", // redirect after payment
"check_url": "http://confirmation.url", // confirmation endpoint before unlocking QR
"amount_change": false, // allow amount change
"amount": 1000 // amount
}Response
200 OK{
"status": "Success",
"message": "Generate QR Code",
"data": {
"qr_transaction_id": "2843595907tv78Stf2coPEXvu",
"qr_code": "https://pay.xpay.kg#00020101021132450012ab2b.xpay.kg01011101400407202310247120211332900251745226190sa6vxjr52p62ui25204599953034175909Telemedia63044e70",
"identificator": "29435071778cycy252qj7u29y",
"type": "dynamic",
"payer_id": "10000000000005",
"service_id": "1",
"service_name": "MyService",
"comments": "Payment comment",
"callback_url": "http://webhook.url",
"return_url": "http://redirect.url",
"amount_change": false,
"request_amount": 1000,
"amount": 1000,
"payable": 992
}
}QR payment
Every QR is generated as a pay.xpay.kg link. Open it in a browser to jump to a bank app or pay in one click.
For mobile and web services, it’s recommended to provide the pay.xpay.kg link instead of converting it to a QR.
QR status
Get the payment status via webhook or by calling the status endpoint with the transaction ID in the path.
Response
GET{
"status": "Success",
"message": "Status QR Code",
"data": {
"qr_transaction_id": "1734439544EjZ25uVX16UDKxX",
"pay_status": "COMPLETED",
"transaction_uuid": "9dc11610-0651-40ee-8459-cabe889fec3x",
"trx": "467de507-5a4d-4a26-bb95-9bdf7258f300",
"request_amount": "240.00000000",
"amount": "235.00000000",
"payable": "233.12000000",
"created_at": "2024-11-05T05:20:51.000000Z",
"executed_time": "2024-12-18 18:50:44"
}
}Payment statuses
Need full documentation?
Leave a request — we will provide docs and test access for integration.
Request sent
We will contact you soon.