FIRST-DRAFTbydOrg
Edition 29

What happens when “verified” changes?

Replay a stale approval and see how webhook order can accidentally reopen payout access.

What happens when “verified” changes?
··3 min read·

The write-up

A customer passes identity verification in the morning. In the afternoon a newer review restricts the account. That evening a retried copy of the morning approval reaches the payment app. Which version of the customer should the app trust?

If the integration writes the last webhook it receives into a Boolean, an old decision can restore access. The provider may be working correctly. The app has confused delivery order with decision order.

Separate a review from what a customer can do

A provider reports the outcome of a review. The product owns the consequences for opening a wallet, initiating a payout or raising a limit. A retryable document issue, a manual hold and a final rejection should lead to different next actions.

Sumsub’s results documentation explains that an applicant can receive more than one final webhook and that retries can reflect an earlier state. Its webhook documentation describes authenticating the raw message with a digest. Signature validation establishes provenance; it does not establish that the result is current.

Preserve a decision history

Verify the signature before treating a message as evidence. Match the applicant to the expected account and workflow; an applicant reference should not cross environments or tenants. Keep enough metadata to identify repeats and compare decisions in the correct scope. When two events cannot safely be ordered, reconcile with the authoritative provider state and defer the sensitive action.

The lab uses synthetic revision numbers. It does not assume a provider exposes that exact primitive. Real integrations need to establish which fields, timestamps and API results distinguish the cases and test that contract in a sandbox.

Check access where it matters

When an account initiates a new payout, check the current feature policy at the server authorization boundary. A green badge cached in the browser should not be enough. Design separately for actions already in flight; a later restriction cannot undo an irreversible transfer.

Keep an operator receipt with the source reference, decision and policy version. Give support a reason it can safely explain without copying identity documents or private notes into logs.

Try Verification Replay Lab

Replay approval, restriction and then the old approval. Compare an app that trusts arrival order with one that validates provenance and keeps the newer decision. Also try a duplicate and an ambiguous update. This is a fictional access policy: it uses synthetic applicants and signature flags, makes no provider calls and does not determine anyone’s eligibility.

What dOrg would build first: connect one verification workflow to one gated feature, with signed event intake, clear resubmission and review states, and a test suite that proves a stale approval cannot reopen access.

Working proof · Built by dOrgPrototype

Don't just read the thesis

See what happens when the idea has to work.

Approve revision 1, restrict at revision 2, then replay revision 1. Compare two approaches to payout authorization.

Interactive simulationFictional data
Open in a new tab

Simulated where noted. No wallet, transaction or purchase is required.

What's not in this prototype
  • Synthetic events and signature flags. No applicant data, vendor calls or eligibility decisions.
Build notes: audience, approach and business model

Optional background for readers exploring implementation.

01

The Problem

Compare delivery order with verified decision order. Reject unsigned or stale events. Defer sensitive actions when decisions conflict.

Who feels it

Fintech, wallet and payment teams integrating identity verification with payout or account controls.

02

The Solution

What it does

01

Deliver approval · r1

02

Deliver restriction · r2

03

Deliver conflict · r2

Built withJavaScriptHTMLCSS

Business Model

Bring one sensitive action and your provider workflow. We can scope verified webhook intake, feature access checks and replay tests.

End Goal

Connect a verification workflow to a sensitive feature without trusting stale approvals.

Connecting KYC to a wallet or payout?

Bring one sensitive action and your provider workflow. We can scope verified webhook intake, feature access checks and replay tests.

Just browsing? Get the next edition by email

Previous

#30 Your vault has assets. Can users withdraw today?

Next

#31 Where did your balance go when the chain changed?