Event Overview
Event Type:VERIFICATION_STATUS
Category: Payment Verification
Description: The verdict on a filed verification — approved or rejected
A filed verification is reviewed by EximPe. This webhook carries the conclusion of that review: the verdict, the reviewer’s comment, and the state of every document slot on the verification at that moment.
It is the event that closes the loop the ask opened — LRS_VERIFICATION_NEEDED on an LRS payment, VERIFICATION_NEEDED on a B2B services payment. Those events say what a payment owes; this one says what came of sending it.
VERIFICATION_STATUS fires on an approval and on a rejection, in the same shape. verification_status is the only key that tells them apart.
When the webhook is sent
- A review approves the verification.
verification_statusisAPPROVEDandmessageis an empty string — an approval has nothing to say beyond itself. - A review rejects the verification.
verification_statusisREJECTEDandmessagecarries the reviewer’s comment verbatim.
The webhook is created only if your merchant account (or parent, for sub-merchants) has a webhook URL configured.
Delivery Details
Delivery: immediate, not batched.
Headers
Verifying. The body is serialised once and those exact bytes are both sent and signed, so hashing the raw request body as received is correct — do not re-serialise the parsed JSON first.
Both signature headers are sent. Verify V2 (recommended) or V1 — see Verifying webhooks.
Payload Schema
The payment, the verdict, the reviewer’s comment, and every document slot on the verification.data holds exactly five keys on both verdicts.
Field Specifications
- Root Level Fields
- Data Object Fields
- Document Entries
string
required
Always
"VERIFICATION_STATUS" for this webhook eventstring
required
UTC, no timezone suffix, e.g.
"2026-09-09T11:42:06.318204". Parse tolerantly — fractional seconds can be absent.string
required
API version of your account, e.g.
"3.0.0"string
required
Unique ID of this event (a UUID, not an ordering counter). A retry resends the same value; use it to de-duplicate.
object
required
The payment, the verdict, and the documents it was reached on
documents is the whole slate
documents lists every active document slot on the verification, not only the ones that failed.
- On a rejection, it shows what failed alongside what passed — so a payer is asked to replace one file, not all of them.
- On an approval, it is the record of what was accepted and the state each document ended in.
- Superseded documents. Re-uploading a document gives you a new
refand the newer row supersedes the older; only the current row for each slot is listed. - The files themselves. No document file, URL or download link is ever included in a webhook payload.
refidentifies the upload; it is not a link to it.
satisfied and provided.
What to do when you receive it
1
Respond 2xx, then verify the signature
Acknowledge as soon as you have accepted the payload, so the delivery is not retried, and verify the signature against the raw body before acting on it.
2
Route on verification_status
APPROVED and REJECTED are the only two values. Treat anything else as unknown and log it rather than guessing.3
On APPROVED, record it and stop chasing the payer
Nothing further is needed from either of you.
PAYMENT_SETTLED is the next event in this payment’s life.4
On REJECTED, show what failed
data.message is the verdict on the verification; each entry with doc_status: "REJECTED" carries the reason for that document in rejection_reason. Entries that read VERIFIED need nothing, so do not ask the payer to re-send them.5
Confirm where the payment stands
Get Verification Requirements — LRS or B2B services — reports
settlement_status, which says whether sending anything further is still possible.Related
LRS_VERIFICATION_NEEDED
What a payment owes — including after a send-back.
VERIFICATION_NEEDED
What a B2B services payment owes — including after a send-back.
Get Verification Requirements
The whole set, on demand, with
settlement_status.Upload Document
Where a
ref comes from, and how to replace a file.PAYMENT_SETTLED
The next event after an approval.