Instruction Verification
You verify where the money came from.
Nobody verifies the instruction.
Every authorised push payment scam begins with an instruction that reached your customer through a channel you cannot see. InstructionCheck captures that instruction, verifies the source behind it, and returns a scored risk signal — one API call, no SDK, no app release.
Reimbursement shift
100%
Of authorised-push-payment losses now land on sending banks under UK rules, with the same shift underway in other markets.
Signals that stay clean
Every one
Real person, real device, normal behaviour. Your existing stack says the payment is fine, because on its own terms it is.
Time to first signal
<10 min
From sandbox key to a scored verdict on your own webhook. If it takes longer, we treat that as a bug.
The category
A third source your controls already have a shape for.
Your onboarding and AML teams have asked two source questions for decades. This is the third, and it is the one that decides whether a payment was a scam.
- Source of FundsWhere did the money come from?Established, documented, audited.
- Source of WealthHow was it accumulated?Established, documented, audited.
- Source of InstructionWho told them to send it?Nobody asks. It is the only one a scammer controls.
How it works
Three steps, and only one of them is yours.
- 01
You call the API
One POST with the customer's number and the payee. No SDK, no app release, no change to your payment flow.
- 02
The customer answers
A bank-branded page reaches them by SMS or email. Three to five questions, about thirty seconds. It never asks for a secret.
- 03
You get the signal
A scored verdict on your webhook — with the coverage behind it, the indicators that fired, and a recommendation your gate already speaks.
Live check
Run a real check, see the webhook.
This is the customer-facing page exactly as it arrives — a plain bank page, three to five questions, no secrets requested. Answer it and the scored verdict your webhook would receive appears below.
Text message
What it catches
Nineteen weighted indicators, two families.
Direct findings are true on their own. Gap findings are contradictions between two facts — and they carry more weight, for the same reason a discrepancy beats a smell.
Redirected invoices
The invoice arrives from a domain that borrows the supplier's name. The customer cannot tell; a registry lookup and a name comparison can.
Safe-account calls
Someone is still on the line while your customer completes the check. In a genuine payment, nobody is.
Freshly built channels
A domain eleven days old is billing for a relationship the payment implies is years old.
Coached self-initiation
The customer says nobody sent the details, then says they followed a link someone sent. The contradiction is the finding.
Deployment
Consume it as a signal, or put it in the way.
Mode: Signal
Feed your existing decisioning
The verdict lands on your webhook and flows into the rules engine you already run. The customer journey is unchanged; you simply know something you did not know before. Start here. Most banks do.
Mode: Gate
Stand between the victim and the money
You already text a confirmation code at wire time. Send the check instead: the customer sees the code only after answering, and after reading a warning written for the scam we think is happening. Your verify step does not change.
Integration
Live in an afternoon.
There is nothing to embed. No SDK in your app, no release train, no mobile review cycle, no change to the payment screen. If you can make an HTTPS request and receive a webhook, you are integrated. Built on the KYRi™ scam engine, part of the ActionID™ platform — InstructionCheck upgrades into the full in-session KYRi™ experience without a re-integration.
curl -X POST https://api.instructioncheck.dev/v1/checks \
-H "Authorization: Bearer $ICK_KEY" \
-d '{
"customer": { "phone": "+447700900000" },
"payment": {
"payee_name": "Acme Roofing",
"payee_is_business": true,
"amount": 2750, "currency": "GBP"
},
"mode": "gate"
}'The response carries the release code for you. Your customer has to earn it.
Pricing
You pay for signals you actually receive.
Sandbox
Free
Full engine, full API, test keys. Send yourself a real check on your own phone.
Production
Per completed check
You pay when a customer answers. Undelivered and abandoned checks are free — you should not be billed for a signal you did not get.
Enterprise
Talk to us
Your own domain, adaptive depth, WhatsApp delivery, SSO, DPA, and a deployment conversation with your risk team.
Talk to usFrequently Asked Questions
Have questions? Look here.
Verify the instruction behind every payment.
See how InstructionCheck plugs a scam-specific signal into the fraud stack you already run — without touching your payment flow.