Static snapshot. A frozen copy of the operator dashboard, safe to open anywhere. The buttons below are drawn but inert — recording a verification and being refused the release is a state change, so it runs on the live app: python src/demo.py --serve.
Held — nothing recorded yetNothing has been recorded. Call the supplier on the number in our records — never a number in the request — or ask for the rupee.
On hold
Identity checks could not be completedR5_tier1_inconclusive
Not evidence of fraud — evidence we could not confirm identity. Verify through a channel the requester does not control.
Identity evidence inconclusive: Account holder's name — score 82 marginal — could be a legal-name variation; Destination account — new account 389525463334 (payout fund account) — known: ['059486762233', '113814508826']
Verification — what would release this
Ask the supplier to send Rs 1 from this account, and no other:
059486762233
chosen because 059486762233: 15 settled payout(s), added 2023-02-16 via onboarding, verified by onboarding_kyc
- Outcome
- Could not reach the supplier
UNREACHABLE
- Callback to
- 9699290968
- Number came from
- vendor_master — never a number in the request
- Attempts
- 2
- Escalated
- True
2 callback attempts to 9699290968 (from vendor master) went unanswered. Payout remains held and is escalated for human review. Never auto-released.
Two people, not one. Whoever records the verification outcome must not be whoever releases the payment. A compromised or complicit AP clerk who can do both approves their own request, and the control is theatre. This is enforced when the button is pressed, not only drawn on the screen.
Record what you did
What was checked
- Supplier
- VEND0015
- Destination account
- 389525463334
- Destination came from
- The payout itself — the payout's own fund account, never the email [razorpay_fund_account]
- Fund account
- fa_0103
- Amount
- Rs 29,157.15
- Change request
- doc_4ad06cf754a8254f
- Correlated by
- Named on the payout [explicit_note]
- Evidence source
- Read from the message [llm_extraction]
- Semantic reading
- BENEFICIARY_CHANGE / REPLACE_PAYOUT_DESTINATION / OUTSTANDING_AND_FUTURE
Accounts on file for this supplier
| Account | Added | Verified | Settled | |
|---|
| 059486762233 UTIB0988509 · active | At onboarding 2023-02-16 | Verified at onboarding (KYC) | 15 payouts | Primary |
| 113814508826 AXIS0959543 · active | Added because of an email request 2026-05-25 | Never verified outside email | 0 payouts | Never established |
This payment is going to 389525463334, which is not one of the accounts above. That is what the destination check reports, and why the payment is held.
An account is established once something outside email has confirmed it — onboarding checks, a rupee from the account, a callback — or once it has actually carried a payout. Being on file is not the same thing: an account can be on file because one email asked for it and nobody checked. The engine treats those as unconfirmed rather than as wrong, so they hold rather than reject.
Identity checks — against your supplier records
result
check
finding
Concern
Account holder's name name_match
score 82 marginal — could be a legal-name variation
from Bank account verification
OK
Account can receive money account_status
account is active
from Bank account verification
OK
36DFAYV4833E1Z7 matches vendor master
from The email, against our records
Concern
Destination account account_continuity
new account 389525463334 (payout fund account) — known: ['059486762233', '113814508826']
from Payout, against our records
Circumstances — never decisive on their own
result
check
finding
OK
Sender's email domain sender_domain
vertexpvtltd.com matches known domain
from Email header vs vendor master
OK
Pressure to act quickly urgency
no urgency language
from Read from the message
Concern
Asked to be contacted differently channel_manipulation
redirecting communication: (scenario redirect)
from Read from the message
OK
Amount against this supplier's usual payment_pattern
Rs 29,157 within 15% of avg
from The email, against our records
What this maps to at RazorpayX
no API call — payout stays pending while verification runs
Action plans. Nothing in this repository calls Razorpay.