Developers
Three ways to accept payments — from a ready-made link with no code at all to a full API integration with webhooks.
Payment link
Created in the dashboard. Good for messengers, invoices and a QR code at the counter.
No codeReady-made module
Integration with InSales and other platforms: the payment method appears right in the shop basket.
Set up in an hourREST API
Create a payment with a server-side request; receive the status via an HMAC-SHA256 signed webhook.
Full controlWhat the integration looks like
Your server creates a payment and receives the link to send the customer to. When the payment completes, we call your webhook URL. The key is issued in the merchant dashboard under “API and webhooks”.
POST /api/v1/paymentscurl -X POST https://exezine.az/api/v1/payments \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"amount": 49.90,
"currency": "AZN",
"description": "Order #1024",
"customer_email": "client@example.com",
"return_url": "https://your-site.az/thanks"
}'
POST /your-webhook{
"event": "payment.succeeded",
"order_id": "EXZ-20260812-1FA5E8A416",
"amount": 49.90,
"currency": "AZN",
"status": "paid",
"signature": "<HMAC-SHA256>"
}
Integration security
- The API key is sent in the Authorization header only — never in the page URL.
- Every webhook is signed with HMAC-SHA256: verify the signature before changing an order status.
- Treat a webhook as a possible duplicate: process it idempotently by order_id.
- Card data never passes through your server — it is captured on the bank page.
Need the full specification or sandbox access? Write to support@exezine.az and we will send the documentation and test keys.