Percents sends omni-txn-stream-result to the issuer webhook URL after a file reaches a final processing state.
The webhook is intentionally not sent until required automated processing and human oversight are complete. Files are worked regularly, but delivery does not follow a fixed schedule or guaranteed number of hours.
If no result arrives within three business days of a successful storage upload, contact Percents with the filename, environment, issuer, upload time, and time zone.
{
"webhookId": "evt_77777777-7777-4777-8777-777777777777",
"type": "omni-txn-stream-result",
"data": {
"rejections": 2,
"detectedTxns": 100,
"successfullyProcessedTxns": 98,
"pendingFurtherReview": 0,
"filename": "transactions-2026-08-10.json",
"schemaValidationSuccess": true,
"schemaValidationError": null
}
}| Field | Meaning |
|---|---|
rejections | Final rejected transaction count, or null when schema validation failed |
detectedTxns | Transactions detected in the uploaded file, or null on schema failure |
successfullyProcessedTxns | Transactions that completed processing successfully |
pendingFurtherReview | Transactions still awaiting review; final result webhooks normally report 0 |
filename | Filename supplied during presign, used for reconciliation |
schemaValidationSuccess | Whether the file parsed and satisfied the expected content schema |
schemaValidationError | Safe schema error description, or null on success |
- Read and retain the raw request body.
- Verify
X-PERCENTS-SIGNATUREbefore trusting the payload. - Deduplicate by
webhookId. - Durably record the result and return
2xxquickly. - Reconcile the counts and filename to the submitted batch asynchronously.
Percents retries unsuccessful webhook delivery with increasing delays. A receiver must be idempotent because the same webhookId can be delivered more than once.