EasyPay / ePay.bg — API Reference
ePay.bg / EasyPay — 19 operations across 11 areas, from the official docs (kb.epay.bg). WEB API endpoints take a base64 ENCODED payload + CHECKSUM. Interactive: the API page; full prose docs + diagrams: Full Docs.
Online Payment (1)
POST / — Card payment via ePay page (credit_paydirect)
POST to https://www.epay.bg/ with PAGE=credit_paydirect. Customer is redirected to ePay's payment page. Payload fields (encoded into ENCODED): see OnlinePaymentPayload model.
Payment via EasyPay (2)
GET /ezp/pay_bill.cgi — Simulate EasyPay-office payment (demo only)
Demo only. Fires STATUS=PAID to the merchant notification URL.
| Param |
In |
Required |
ACTION |
query |
True |
IDN |
query |
True |
GET /ezp/reg_bill.cgi — Register EasyPay payment (get 10-digit code)
Returns a 10-digit EasyPay code payable at an EasyPay office or ATM. Payload fields (encoded into ENCODED): see EasyPayBillPayload model.
| Param |
In |
Required |
ENCODED |
query |
True |
CHECKSUM |
query |
True |
Preauthorization (1)
POST /v3main/ — Preauthorization: register, finalize or reverse
Three phases share this endpoint (distinguished by the ENCODED payload): register (PreauthRegisterPayload), finalize (PreauthFinalizePayload), reverse (PreauthReversePayload).
Change expiring time (1)
GET /v3main — Change the expiry time of an obligation
Payload fields (encoded into ENCODED): see ChangeExpiryPayload model.
| Param |
In |
Required |
ENCODED |
query |
True |
CHECKSUM |
query |
True |
Bank transfer (1)
GET /send/send_vnbel.cgi — Order a bank transfer
Payload fields (encoded into ENCODED): see BankTransferPayload model.
| Param |
In |
Required |
ENCODED |
query |
True |
CHECKSUM |
query |
True |
Deposit slip (1)
GET /ezp/reg_vnbel.cgi — Register a deposit-slip payment request
Payload fields (encoded into ENCODED): see DepositSlipPayload model.
| Param |
In |
Required |
ENCODED |
query |
True |
CHECKSUM |
query |
True |
Money send (2)
GET /ezp/send.cgi — Money send via EasyPay (cash pickup)
Payload fields (encoded into ENCODED): see MoneySendEasyPayPayload model.
| Param |
In |
Required |
ENCODED |
query |
True |
CHECKSUM |
query |
True |
GET /send/send.cgi — Money send via ePay.bg
Payload fields (encoded into ENCODED): see MoneySendEpayPayload model.
| Param |
In |
Required |
ENCODED |
query |
True |
CHECKSUM |
query |
True |
Payment notification (1)
POST /{merchant_notify_url} — Payment notification (merchant-hosted)
ePay POSTs here on payment status change. Verify CHECKSUM and the RSA SIGNATURE. Respond with a line per invoice: INVOICE=STATUS (OK/ERR/NO). Payload fields (encoded into ENCODED): see NotificationPayload model.
| Param |
In |
Required |
merchant_notify_url |
path |
True |
Billing API (2)
GET /pay/confirm — Payment / deposit notification (merchant-hosted)
| Param |
In |
Required |
IDN |
query |
True |
MERCHANTID |
query |
True |
TID |
query |
True |
DATE |
query |
True |
TOTAL |
query |
True |
TYPE |
query |
True |
INVOICES |
query |
False |
CHECKSUM |
query |
True |
GET /pay/init — Obligation / deposit check (merchant-hosted)
STATUS codes: 00=OK; 13=Invalid amount; 14=Invalid IDN; 62=No obligation; 80=Temporarily unavailable; 93=Invalid checksum; 94=Duplicate; 96=General error
| Param |
In |
Required |
IDN |
query |
True |
MERCHANTID |
query |
True |
TYPE |
query |
True |
TID |
query |
False |
TOTAL |
query |
False |
CHECKSUM |
query |
True |
One Touch API (6)
GET /xdev/api/api/code/get — Get pairing code / register device
| Param |
In |
Required |
APPID |
query |
True |
DEVICEID |
query |
True |
KEY |
query |
True |
UTYPE |
query |
False |
DEVICE_NAME |
query |
False |
BRAND |
query |
False |
OS |
query |
False |
MODEL |
query |
False |
OS_VERSION |
query |
False |
PHONE |
query |
False |
GET /xdev/api/api/token/get — Get access token from code
| Param |
In |
Required |
APPID |
query |
True |
DEVICEID |
query |
True |
CODE |
query |
True |
GET /xdev/api/api/token/invalidate — Invalidate a token
| Param |
In |
Required |
APPID |
query |
True |
DEVICEID |
query |
True |
TOKEN |
query |
True |
GET /xdev/api/payment/check — Check a payment before sending
| Param |
In |
Required |
APPID |
query |
True |
DEVICEID |
query |
True |
TOKEN |
query |
True |
TYPE |
query |
True |
ID |
query |
True |
AMOUNT |
query |
True |
RCPT |
query |
True |
RCPT_TYPE |
query |
True |
DESCRIPTION |
query |
False |
REASON |
query |
False |
PINS |
query |
False |
SHOW |
query |
False |
GET /xdev/api/payment/init — Initialize a payment
| Param |
In |
Required |
APPID |
query |
True |
DEVICEID |
query |
True |
TOKEN |
query |
True |
TYPE |
query |
True |
EXP |
query |
False |
GET /xdev/api/payment/send/status — Send payment / get status
| Param |
In |
Required |
APPID |
query |
True |
DEVICEID |
query |
True |
TOKEN |
query |
True |
TYPE |
query |
True |
ID |
query |
True |
AMOUNT |
query |
True |
RCPT |
query |
True |
RCPT_TYPE |
query |
True |
DESCRIPTION |
query |
False |
REASON |
query |
False |
PINS |
query |
False |
SHOW |
query |
False |
One Touch No Reg API (1)
GET /xdev/api/api/payment/noreg/send/status — No-registration payment / status
CHECKSUM = hmac_sha1_hex over the sorted KEY VALUE lines with the app SECRET.
| Param |
In |
Required |
APPID |
query |
True |
DEVICEID |
query |
True |
ID |
query |
True |
AMOUNT |
query |
True |
RCPT |
query |
True |
RCPT_TYPE |
query |
True |
CHECKSUM |
query |
True |
DESCRIPTION |
query |
False |
REASON |
query |
False |
SAVECARD |
query |
False |