Checkout Deposits Webhook
Real-time webhook notifications sent when deposits are completed via KingPay's hosted deposit solution. These webhooks notify you when a customer has successfully made a deposit to your deposit link and you should credit their account.
Delivery & security
- Webhooks are sent to the
callback_urlconfigured for the invoice (or project), with all your original query parameters preserved. - HTTP method:
GETby default,POSTwhen the invoice was created withpost=1. - Content type:
application/x-www-form-urlencodedby default,application/jsonwhen the invoice was created withjson=1. - Webhooks are signed using
HMAC-SHA256with your project’sipn_secret. Always verify the signature before trusting the payload.
Signature headers
X-CryptAPI-Signature— hex-encoded HMAC of the canonical JSON payload and timestamp.X-CryptAPI-Signature-Alg— currently alwaysHMAC-SHA256.X-CryptAPI-Signature-Timestamp— Unix timestamp (seconds) used in the HMAC computation.
Sent for invoices with type = "deposit" whenever a reusable deposit link receives a payment. Each transaction to the deposit address generates its own webhook event.
Payload example
{
"payment_id": "de2d1c9f4a3b8e7d1f2a9c3b4e6f8a1",
"payment_url": "https://pay.yourdomain.com/deposit/de2d1c9f4a3b8e7d1f2a9c3b4e6f8a1",
"txid": "0xabc...",
"address": "0x18B211A1Ba5880C7d62C250B6441C2400d588589",
"currency": "usd",
"paid_amount": "100.00000000",
"received_amount": "100.00000000",
"paid_amount_fiat": "100.00",
"received_amount_fiat": "100.00",
"paid_coin": "bep20_usdt",
"exchange_rate": 1.0,
"type": "deposit",
"status": "done",
"payment_status": "completed",
"invoice_status": "paid",
"confirmations": 1,
"required_confirmations": 1,
"external_id": "12345",
"customer_name": "John Doe",
"customer_email": "[email protected]",
}Key fields
payment_id— unique identifier for this deposit payment.payment_url— hosted deposit page URL.txid— transaction hash of your client's deposit.address— deposit address that received the funds.currency— fiat currency code.paid_amount/paid_amount_fiat— incoming crypto inpaid_coin/ fiat incurrency, before fees. Decimal strings in ordinary currency units; fiat can be null and falls back to the requested invoice amount, if available, when its stored valuation is missing.received_amount/received_amount_fiat— distributed crypto / fiat equivalent after fees, as decimal strings, only at completed. Fiat falls back to incoming fiat when its net valuation is missing and can be null. No multiplication by 100; these webhooks do not containvalue.paid_coin— crypto used for the deposit.exchange_rate— Exchange rate at the time of the payment.type— always"deposit"for this webhook type.status—"done"when the deposit is completed.external_id— your payment identifier (External ID from params).