Developers
Integration in four steps
REST API, JSON, signed requests. The docs with Node.js examples are open without sign-up.
- Step 1
Sign the request
HMAC-SHA256 of the timestamp, method, path and body hash. The key lives only on your server.
X-Shop-Id: shop_… X-Timestamp: 1793400000 X-Signature: hex(HMAC-SHA256(secret_key, timestamp ⏎ METHOD ⏎ path ⏎ sha256(body))) - Step 2
Create a payment
Amount in minor units. Repeating with the same Idempotency-Key returns the same payment.
POST /v1/payments Idempotency-Key: 4f1c… { "orderId": "A-1001", "amount": 24990, "currency": "EUR", "returnUrl": "https://shop.example/thanks" } - Step 3
Send the customer to pay
The payment page shows methods for the country and currency, takes the payment and returns the customer to you.
→ 201 { "id": "pay_…", "status": "created", "checkoutUrl": "https://pay…/c/…" } - Step 4
Receive the webhook
Verify the signature and mark the order as paid. No 2xx response — we retry for two days.
POST https://shop.example/payos/webhook X-Payos-Signature: v1=… { "type": "payment.succeeded", "data": { "orderId": "A-1001", … } }
Start accepting payments
Sign up and verify your company in the dashboard. API keys are issued as soon as your shop is approved.