Skip to content

EasyPay / ePay.bg — API Reference

ePay.bg / EasyPay — 20 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 (3)

GET /ezp/pay_money_send.cgi

Simulate an EasyPay-office cash payout (demo only) Demo only. Simulates the recipient collecting the cash transfer at an EasyPay office; fires the STATUS=PAID notification (with STAN/BCODE=000000) to the merchant's registered notification URL, same as a real payout would.

Param In Required
SYS_CODE query True

GET /ezp/send.cgi

Money send via EasyPay (cash pickup) Order a cash payout collectable by a named recipient at any EasyPay office (loan-disbursement use case). Payload fields (encoded into ENCODED): see MoneySendEasyPayPayload model. On payout, ePay POSTs a notification to your registered URL with STATUS=PAID (or STATUS=EXPIRED if never collected); STAN/BCODE are always 000000 for money-send. Full flow: see the Money Send (disbursement) page. Demo payout simulation: /ezp/pay_money_send.cgi.

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