Skip to main content
Qint currently emits two event types. Build your handler to ignore event types it doesn’t recognize (still returning 2xx) so future event types never break you.

payment.status

Sent to every active endpoint on each status transition of a payment intent — and re-sent for the intent’s current status when the underpaid flag changes or the payment is reversed (see below). Every event carries the full set of fields; the ones that don’t apply are false or null.

Credit fields

The settled event says what the payment added to your balance. The three fields were added on 20 October 2026; they are null on every other status and on payments settled before that date. The event does not carry feeAmount, netAmount or settledAmount. Read them from GET /api/v1/intents/{id} after a settled event.
Fulfil on status: "settled" and nothing else. confirmed means the crypto is confirmed on-chain but settlement to fiat hasn’t completed.

Underpayment fields

When the payment partner detects that a buyer sent less than the quoted amount, the payment.status event is re-emitted for the intent’s current (unchanged) status, carrying the underpayment fields:
A payment short by no more than the merchant’s accepted underpayment settles with underpaid: true — as does an underpaid payment accepted from the review queue — and the settled event says how much was actually received:
What to do with an underpaid event — including the merchant review queue for payments that expire underpaid — is covered in the underpayments guide.

Reversal fields

In rare cases the payment partner reverses a payment after it has settled (for example an operator cancels the transaction on their side). The intent’s status stays settled — the crypto did arrive — but the payment.status event is re-emitted with two extra fields, and the payment then counts for nothing: it leaves the merchant balance, and an invoice it paid is open again.
Every payment.status event carries reversed (normally false) and reversedAt (normally null). The same two fields are on the intent returned by GET /api/v1/intents/{id}.

ping

Emitted when you press Send test event in the dashboard. It travels the same pipeline as real events — same signature scheme, same X-Qint-Event-Id header, same retry behavior. The full payload:
Verify it like any event, then return 2xx and ignore it.

Verifying signatures

Working verification code in four languages.

Delivery & retries

The retry schedule and the delivery log.

Overpayments and late deposits

There is no overpayment field or event. When a buyer sends more than the quoted amount, the payment settles normally and you receive the usual settled event. It is credited exactly like a normal payment — on the invoiced amount less Qint’s fee — so the excess is not added to your balance. Qint puts the payment in your dashboard’s review queue (reason “overpaid”) so you can refund the excess to the buyer off-platform and then acknowledge the item. The CSV export of your payments also has an overpaid column. See underpayments. A deposit that arrives after the payment window has expired also goes to the review queue. The intent stays expired until you decide; accepting it sends the normal settled event. Do not infer a successful payment from the presence of a deposit alone: use the API status and the review outcome. For XRP and XLM, display the checkout’s destination memo/tag as well as its address. An address alone may not identify the intended payment. Treat memo values as strings.