Stop scam payments before they're sent
Grayson screens a customer's outgoing Faster Payment for authorised push payment scams, names the likely scam type and picks release, warn, hold and call, or block, before the money leaves.
Grayson decides whether a customer is being deceived into sending a payment, which type of scam it looks like, whether a scammer is directing the customer as it happens, and whether to release the payment, show a warning written for that scam, hold it while a fraud specialist calls the customer, or block it. It reads what your payment screening already gathers when the customer presses Send, from months of account activity and saved payees to the session's behaviour signals, Confirmation of Payee and payee intelligence, and costs about $0.45 to $0.62 per 1,000 decisions.
- Decides: Catch authorised push payment scams in the payment flow, and choose release, warn, hold and call, or block.
- Call it: When a customer presses Send on a payment to a new or risky payee
- Questions: 2 yes/no, 2 choice
- Cost: $0.00045 to $0.00062 per decision ($0.45 to $0.62 per 1,000) for these examples' 12,843 to 17,606 input tokens
- Latency: 210 to 255 ms for these examples, the median of 5 calls each through api.finic.ai from US-West
Examples
Three Faster Payments from a UK bank's mobile app, each sent with 12 months of monthly totals, about 90 days of posted transactions (120 to 210 of them), saved payees, 30 days of app logins, the current session's events and behaviour signals, and the payment with its purpose, the customer's answers and payee intelligence. They are a widowed retiree moving her savings to a "safe account" during a phone call, a first-time buyer paying her house deposit to her solicitor, and a crypto buyer funding a newer, unregistered platform through an account in his own name.
Open in Playground
A retired customer moves £8,750 of savings to a 'safe account' while on a phone call. A 71-year-old customer of 32 years, recently widowed, moved £8,800 from her savings, raised her daily limit and is paying £8,750 to a 12-day-old account at an app-only bank that she says is her own, though Confirmation of Payee found no match. A phone call has been in progress the whole session, she typed the account details in pairs of digits, her card was declined for an online purchase she didn't make 37 minutes before, and another of our customers was stopped yesterday paying the same account after a 'bank security' call.
| Question | Grayson's answer |
|---|---|
deceived | Over 99% true |
scam_type | impersonation_police_bank, confidence 92% |
coached | 99% true |
action | block, confidence 75% |
12,843 input tokens, $0.00045 per decision, answered in 255 ms.
The request, with long lists cut short. The full request is fraud.json (44 KB).
{
"model": "grayson-1",
"state": {
"screening": {
"system": "Outbound payment scam screening (real time), retail mobile app",
"stage": "The customer has pressed Send. The payment is held in pre-submission screening and has not been sent to Faster Payments.",
"times": "UK local time with offset (BST, UTC+01:00, until 2026-10-25)",
"our_actions": "release; warn (a full-screen warning for one scam type that the customer must confirm); hold and call (fraud specialist calls the number on file; UK rules allow a delay to the end of the fourth business day after the instruction where there are reasonable grounds to suspect fraud); block"
},
"customer": {
"customer_id": "C-20418833",
"name": "Margaret A. Thursby",
"age": 71,
"customer_since": "1994-06-03",
"home": "Harrogate, North Yorkshire (HG2); at this address since 1988",
"occupation": "Retired (school administrator)",
"income_on_file": "State Pension and a local government pension, about £1,960 a month",
"mobile_on_file": "07700 900184 (since 2012)",
"email_on_file": "m.thursby@example.net (since 2015)",
"support_needs_recorded": "2025-02-11: bereavement (husband died January 2025); prefers phone calls to letters. No other needs recorded.",
"products": [
"Current account x4471",
"Easy Access Saver x8803",
"Debit card x6620"
],
"scam_history": "No earlier scam claims, held payments or fraud reports"
},
"accounts": [
{
"account": "Current account x4471",
"opened": "1994-06-03",
"owners": "Sole since 2025-03-04 (previously joint with Peter J. Thursby, deceased)",
"balance_before_payment_gbp": 10557.8,
"overdraft": "None arranged",
"faster_payment_daily_limit_gbp": 10000,
"limit_changes": [
"2026-10-06 11:05: daily limit raised in the app from £2,500 to £10,000, confirmed with a one-time code texted to 07700 900184"
]
},
{
"account": "Easy Access Saver x8803",
"opened": "2009-10-14",
"balance_gbp": 5512.66,
"recent_activity": "Interest monthly (£31 to £33). Withdrawals to x4471 of £500.00 on 2026-02-24, £1,000.00 on 2026-03-16 and £8,800.00 on 2026-10-06 at 10:59 in the current session. Balance before today: £14,312.66."
}
],
"monthly_summary": {
"columns": [
"month",
"money_in_gbp",
"money_out_gbp",
"card_spending_gbp",
"direct_debits_gbp",
"… 5 more in fraud.json"
],
"rows": [
[
"2025-10",
1836.39,
2101.32,
804.78,
441.54,
"… 5 more in fraud.json"
],
[
"2025-11",
1836.39,
1475.94,
468.4,
229.54,
"… 5 more in fraud.json"
],
[
"2025-12",
1836.39,
1723.91,
359.37,
229.54,
"… 5 more in fraud.json"
],
[
"2026-01",
1836.39,
2023.19,
676.65,
441.54,
"… 5 more in fraud.json"
],
[
"2026-02",
2336.39,
1632.07,
365.53,
441.54,
"… 5 more in fraud.json"
],
"… 7 more in fraud.json"
]
},
"transactions": {
"note": "Every posted item on current account x4471 since 2026-07-07; amounts signed (debits negative); balance after each item",
"columns": [
"ts",
"type",
"amount_gbp",
"balance_gbp",
"description",
"detail"
],
"rows": [
[
"2026-07-07T13:00:10+01:00",
"card",
-23.81,
1805.55,
"SUPERDRUG HARROGATE",
"contactless"
],
[
"2026-07-08T13:11:08+01:00",
"card",
-8.14,
1797.41,
"THE OLD FOX TEAROOM KNARESBORO",
"contactless"
],
[
"2026-07-08T15:59:53+01:00",
"card",
-52.55,
1744.86,
"WAITROSE 0412 HARROGATE",
"chip and PIN"
],
[
"2026-07-09T18:24:35+01:00",
"faster_payment_out",
-18,
1726.86,
"D WALSH WINDOWS",
"window cleaner, saved payee"
],
[
"2026-07-11T13:52:03+01:00",
"card",
-22.39,
1704.47,
"BRIARDALE GARDEN CTR",
"contactless"
],
"… 115 more in fraud.json"
]
},
"payees": {
"columns": [
"payee",
"sort_code",
"account",
"payee_bank",
"added",
"… 4 more in fraud.json"
],
"rows": [
[
"JAMES THURSBY",
"xx-xx-62",
"x5521",
"Large UK high-street bank",
"2014-03-02",
"… 4 more in fraud.json"
],
[
"S PRICE HAIR",
"xx-xx-08",
"x1176",
"Large UK high-street bank",
"2019-05-17",
"… 4 more in fraud.json"
],
[
"D WALSH WINDOWS",
"xx-xx-31",
"x0942",
"UK building society",
"2022-08-09",
"… 4 more in fraud.json"
],
[
"K LEDGER BUILDING",
"xx-xx-44",
"x7308",
"Large UK high-street bank",
"2026-06-14",
"… 4 more in fraud.json"
],
[
"E THURSBY JISA",
"xx-xx-90",
"x3317",
"UK building society",
"2019-02-26",
"… 4 more in fraud.json"
]
]
},
"payment_pattern_12_months": {
"payments_to_people_and_firms": 39,
"new_payees_added": 1,
"largest_payment_gbp": 1150,
"largest_payment_to": "JAMES THURSBY (son), 2026-03-16, ref CAR REPAIR",
"payments_over_2000_gbp": 0,
"payments_to_app_only_banks_or_e_money_firms": 0
},
"devices": [
{
"device": "iPhone 13, our iOS app",
"registered": "2022-11-19",
"how": "In branch with photo ID",
"last_used": "2026-10-06",
"sessions_90_days": 41
},
{
"device": "iPad (9th generation), Safari",
"registered": "2020-04-02",
"how": "Card reader",
"last_used": "2026-08-30",
"sessions_90_days": 3
}
],
"app_logins_last_30_days": {
"columns": [
"start",
"device",
"network",
"authentication",
"minutes",
"activity"
],
"rows": [
[
"2026-09-09T12:42:34+01:00",
"iPhone 13, our iOS app",
"Home broadband, Harrogate",
"Face ID",
2.4,
"Viewed balances and recent transactions"
],
[
"2026-09-09T18:03:28+01:00",
"iPhone 13, our iOS app",
"Home broadband, Harrogate",
"Face ID",
2.8,
"Paid D WALSH WINDOWS £20.00"
],
[
"2026-09-11T11:15:27+01:00",
"iPhone 13, our iOS app",
"Home broadband, Harrogate",
"Face ID",
2.8,
"Paid JAMES THURSBY £50.00"
],
[
"2026-09-11T13:33:18+01:00",
"iPhone 13, our iOS app",
"Home broadband, Harrogate",
"Face ID",
1.5,
"Viewed balances and recent transactions"
],
[
"2026-09-12T15:49:04+01:00",
"iPhone 13, our iOS app",
"Home broadband, Harrogate",
"Face ID",
2.9,
"Viewed balances and recent transactions"
],
"… 15 more in fraud.json"
]
},
"contact_detail_changes": "None in the last 24 months (mobile, email and address unchanged)",
"contact_history": [
{
"ts": "2025-02-11T14:20:00+00:00",
"channel": "Branch, Harrogate",
"note": "Bereavement: joint account converted to sole name; death certificate seen. Customer asked for phone contact where possible."
},
{
"ts": "2026-03-16T09:41:00+00:00",
"channel": "Phone, contact centre",
"note": "Asked how to move money from savings to current account in the app to help her son with a car repair; walked through it."
},
{
"ts": "2026-10-06T10:37:31+01:00",
"channel": "SMS from our card fraud system",
"note": "Debit card x6620 declined for £449.99 at ELECTRA TECH DIRECT (online, no 3-D Secure, new merchant for this card). Text sent: 'Did you just try to use your card? Reply Y or N.' No reply received. Card not yet blocked."
}
],
"earlier_scam_warnings": [
{
"ts": "2026-06-14T16:01:12+01:00",
"payee": "K LEDGER BUILDING",
"purpose_chosen": "Paying for goods or services: building or home improvement",
"warning": "Tradesperson warning",
"seconds_on_screen": 21,
"outcome": "Confirmed; paid £640.00"
}
],
"current_session": {
"device": "iPhone 13, our iOS app (registered 2022-11-19), Face ID",
"network": "Home broadband, Harrogate (seen on 37 of her last 41 sessions), IP 198.51.100.73",
"started": "2026-10-06T10:58:12+01:00",
"events": {
"columns": [
"ts",
"event",
"detail"
],
"rows": [
[
"2026-10-06T10:58:12+01:00",
"Login",
"Face ID"
],
[
"2026-10-06T10:58:40+01:00",
"Viewed",
"Easy Access Saver x8803"
],
[
"2026-10-06T10:59:48+01:00",
"Own transfer",
"£8,800.00 from Easy Access Saver x8803 to current account x4471"
],
[
"2026-10-06T11:01:15+01:00",
"Payment attempt stopped",
"New payee payment of £8,750.00 exceeds daily limit of £2,500; customer shown how to change limits"
],
[
"2026-10-06T11:03:02+01:00",
"Limit change requested",
"Faster Payments daily limit £2,500 to £10,000; one-time code texted to 07700 900184"
],
"… 10 more in fraud.json"
]
},
"behaviour_signals": {
"source": "Our device and behaviour vendor's SDK in the app",
"voice_call": "Incoming phone call already in progress when the app opened at 10:58:12 and still in progress at submission (at least 16 min 25 s). The app can't see who is calling.",
"remote_access_or_screen_sharing": "None detected",
"payee_details_entry": "Sort code typed in three bursts and account number in four bursts of two digits, with pauses of 4 to 11 seconds between bursts; no paste. Her earlier payee setups were typed in one or two bursts.",
"reference_entry": "Typed, 'SECURE ACC', after a 9 second pause",
"session_length": "16 min 25 s to submission; her median session over 90 days is 2 min 30 s",
"navigation": "Went from the limit screen back to the payment twice; opened 'Help: what is Confirmation of Payee?' and closed it after 3 s",
"vendor_scam_score": "91 of 100 (vendor's reasons: active call during payment to new payee; segmented entry of payee details; long session)"
}
},
"payment_under_review": {
"payment_id": "FPO-20261006-1114-55820",
"scheme": "Faster Payments, single immediate payment",
"from_account": "Current account x4471",
"amount_gbp": 8750,
"balance_after_gbp": 1807.8,
"payee": {
"name_entered": "Margaret Thursby",
"account_type_entered": "Personal",
"sort_code": "xx-xx-17",
"account": "x2290",
"payee_bank": "UK app-only bank (authorised bank, opened accounts in-app)",
"first_payment_to_payee": true
},
"reference": "SECURE ACC",
"confirmation_of_payee": {
"result": "No match",
"code": "ANNM",
"name_returned": null,
"customer_action": "Continued after the no-match warning"
},
"purpose_and_answers": {
"purpose": "Moving money to another account of mine",
"Is this account in your name and did you open it yourself?": "Yes",
"When did you open it?": "In the last week",
"Has anyone asked you to move this money, or told you your money isn't safe?": "No",
"Has anyone told you what to say or how to answer these questions?": "No"
},
"payee_intelligence": {
"source": "Our payments consortium's shared receiving-account data and our own payment records",
"account_opened": "2026-09-24 (12 days ago)",
"inbound_last_48_hours": "4 Faster Payments from 4 payers at 3 banks, £21,640 in total; each sent on within 10 minutes of arriving",
"name_on_account": "Not returned (no match); the receiving bank's records show a personal account in a different name",
"consortium_mule_risk": "94 of 100 (high)",
"our_other_customers": "One other customer of ours added this payee on 2026-10-05 at 15:12 with purpose 'Moving money to another account of mine' and a £4,200 payment. It was held; on the call, that customer said someone from 'the bank's security team' had told them to move it. The payment was cancelled.",
"scam_reports_on_this_account": "1 (from our own held payment above)"
},
"rules_fired": [
"SP-03 Own-account purpose with a Confirmation of Payee no match",
"SP-07 Phone call in progress during a payment to a new payee",
"SP-11 Faster Payments limit raised in the same session as the payment",
"SP-12 Savings moved into the current account less than 30 minutes before a new-payee payment",
"SP-15 Payment more than 5 times the customer's largest payment in 12 months",
"SP-21 Payee account flagged by consortium mule data"
],
"our_scam_model": "968 of 999 (warn from 500, hold from 700)"
}
},
"questions": {
"deceived": {
"type": "noul",
"instructions": "Is the customer making the payment under review because someone has deceived them, so that the money would go to a scammer or to an account a scammer controls? Answer from the sending bank's point of view, using what the record shows at this moment."
},
"scam_type": {
"type": "choice",
"instructions": "If the payment under review is part of a scam, which type is it? The options follow UK Finance's categories of authorised push payment (APP) scams. Choose none if the customer is not being deceived.",
"criteria": {
"purchase": "Purchase: paying for goods, a vehicle, a rental or services that don't exist or will never arrive",
"investment": "Investment: paying into a fake or fraudulent investment, including crypto trading platforms, on a promise of high returns",
"romance": "Romance: sending money to someone met online who built a relationship with the customer",
"advance_fee": "Advance fee: paying a fee or tax up front to release a larger sum, a prize, a loan or a job, including task-based job scams",
"invoice_mandate": "Invoice and mandate: paying a real bill, such as a solicitor, builder or supplier, to bank details a criminal substituted",
"impersonation_police_bank": "Impersonation of police or bank staff: told to move money to a safe account or help an investigation",
"impersonation_other": "Impersonation of anyone else: a government department, a utility, a delivery or tech company, or a family member or friend with a new number",
"none": "None: the customer is not being deceived"
}
},
"coached": {
"type": "noul",
"instructions": "Is a scammer directing the customer through this payment as it happens, for example on a phone call during the session, through remote access to the device, or by telling them how to answer our payment questions? If so, an on-screen warning is unlikely to stop the payment."
},
"action": {
"type": "choice",
"instructions": "What should the bank do with the payment under review, before it is sent?",
"criteria": {
"release": "Release: send the payment now",
"warn": "Warn: show a warning written for the most likely scam type, and send the payment only if the customer confirms after reading it",
"hold_and_call": "Hold and call: keep the payment unsent until a fraud specialist has spoken to the customer on the phone number on file, then send or cancel it depending on that conversation",
"block": "Block: refuse the payment and further payments to this payee, stop payments to new payees, and have a fraud specialist contact the customer to explain the scam"
}
}
}
}The response. Probabilities and confidence are shortened to four decimals here, and the score to three; responses carry full precision.
{
"id": "dec_15976b569c78467080ccd175974227e7",
"model": "grayson-1",
"answers": {
"deceived": {
"type": "noul",
"noul": 0.9959
},
"scam_type": {
"type": "choice",
"choice": "impersonation_police_bank",
"confidence": 0.9196,
"probabilities": {
"purchase": 0.003,
"investment": 0.0008,
"romance": 0.0016,
"advance_fee": 0.0014,
"invoice_mandate": 0.002,
"impersonation_police_bank": 0.9296,
"impersonation_other": 0.0091,
"none": 0.0524
}
},
"coached": {
"type": "noul",
"noul": 0.9914
},
"action": {
"type": "choice",
"choice": "block",
"confidence": 0.7469,
"probabilities": {
"release": 0.0048,
"warn": 0.0043,
"hold_and_call": 0.1808,
"block": 0.8102
}
}
},
"usage": {
"input_tokens": 12843,
"output_tokens": 0
}
}Open in Playground
A first-time buyer pays a £29,850 house deposit to her solicitor's client account. A customer of 14 years moved £29,000 from her savings, raised her daily limit and is paying £29,850 to a new payee, ten times her largest payment, on a phone registered five days ago, after a ten-minute phone call during the session and two weeks after changing her email. But we issued her mortgage offer, the payee is the solicitor named on it, Confirmation of Payee matches, and the account is the client account our own completions team pays, used by 48 of our customers without a fraud report.
| Question | Grayson's answer |
|---|---|
deceived | Under 1% true |
scam_type | none, confidence over 99% |
coached | 1% true |
action | release, confidence 98% |
17,606 input tokens, $0.00062 per decision, answered in 210 ms.
The request, with long lists cut short. The full request is legitimate.json (59 KB).
{
"model": "grayson-1",
"state": {
"screening": {
"system": "Outbound payment scam screening (real time), retail mobile app",
"stage": "The customer has pressed Send. The payment is held in pre-submission screening and has not been sent to Faster Payments.",
"times": "UK local time with offset (BST, UTC+01:00, until 2026-10-25)",
"our_actions": "release; warn (a full-screen warning for one scam type that the customer must confirm); hold and call (fraud specialist calls the number on file; UK rules allow a delay to the end of the fourth business day after the instruction where there are reasonable grounds to suspect fraud); block"
},
"customer": {
"customer_id": "C-31877406",
"name": "Aisha K. Rahman",
"age": 34,
"customer_since": "2012-09-17",
"home": "Leeds (LS6), renting; at this address since 2023",
"occupation": "QA engineer, Northvale Logistics Ltd (employer confirmed by salary credits since 2021)",
"income_on_file": "£46,000 a year",
"mobile_on_file": "07700 900127 (since 2019)",
"email_on_file": "aisha.rahman@example.com (since 2026-09-29; previously aisha.k.r@example.net)",
"support_needs_recorded": "None",
"products": [
"Current account x2196",
"Easy Access Saver x5530",
"Debit card x4083",
"Mortgage application M-7720118 (offer issued)"
],
"scam_history": "No earlier scam claims, held payments or fraud reports"
},
"accounts": [
{
"account": "Current account x2196",
"opened": "2012-09-17",
"balance_before_payment_gbp": 30436.75,
"overdraft": "£500 arranged, unused in 12 months",
"faster_payment_daily_limit_gbp": 35000,
"limit_changes": [
"2026-10-08 12:58: daily limit raised in the app from £10,000 to £35,000, confirmed with a one-time code texted to 07700 900127"
]
},
{
"account": "Easy Access Saver x5530",
"opened": "2021-04-30",
"balance_gbp": 1822.75,
"recent_activity": "£700 in each month from the current account since 2021, plus interest. £29,000.00 moved to the current account on 2026-10-08 at 12:49 in the current session. Balance before today: £30,822.75."
}
],
"mortgage_application": {
"reference": "M-7720118",
"applied": "2026-08-12, in the app, with our mortgage adviser by phone",
"status": "Offer issued 2026-09-18; valid to 2027-03-18",
"property": "Two-bedroom terraced house, Leeds LS13; purchase price £285,000; first-time buyer",
"loan_gbp": 256500,
"deposit_gbp": 28500,
"deposit_source_verified": "Own savings in Easy Access Saver x5530 (statements seen by our underwriter)",
"conveyancer": "Hollis Pryor Solicitors LLP, Leeds; on our conveyancer panel since 2015; SRA-regulated",
"conveyancer_client_account_on_our_panel_record": "Sort code xx-xx-58, account x3140 (the account our completions team sends mortgage funds to)",
"expected_exchange": "Week of 2026-10-12",
"adviser_notes": [
{
"ts": "2026-09-18T15:05:00+01:00",
"note": "Offer issued and sent to the customer and Hollis Pryor."
},
{
"ts": "2026-10-06T17:32:00+01:00",
"note": "Customer called to ask how to send her deposit before exchange. Told her to pay the solicitor's client account, to confirm the bank details by calling the firm on the number on their engagement letter or website (never from an email), and that the app may ask her extra questions. She said the firm had sent the details through its secure client portal."
}
]
},
"monthly_summary": {
"columns": [
"month",
"money_in_gbp",
"money_out_gbp",
"card_spending_gbp",
"direct_debits_gbp",
"… 5 more in legitimate.json"
],
"rows": [
[
"2025-10",
2882.95,
2508.31,
580.32,
302.99,
"… 5 more in legitimate.json"
],
[
"2025-11",
2871.66,
2565.2,
780.21,
159.99,
"… 5 more in legitimate.json"
],
[
"2025-12",
2924.9,
2496.16,
696.02,
159.99,
"… 5 more in legitimate.json"
],
[
"2026-01",
2889.76,
2715.28,
787.29,
302.99,
"… 5 more in legitimate.json"
],
[
"2026-02",
2871.66,
3503.08,
1518.95,
302.99,
"… 5 more in legitimate.json"
],
"… 7 more in legitimate.json"
]
},
"transactions": {
"note": "Every posted item on current account x2196 since 2026-07-09; amounts signed (debits negative); balance after each item",
"columns": [
"ts",
"type",
"amount_gbp",
"balance_gbp",
"description",
"detail"
],
"rows": [
[
"2026-07-09T08:06:26+01:00",
"card",
-3.5,
2377.47,
"FIRST BUS WEST YORKS",
"contactless"
],
[
"2026-07-10T06:07:12+01:00",
"card",
-11.99,
2365.48,
"SPOTIFY",
"recurring"
],
[
"2026-07-10T07:31:28+01:00",
"card",
-5.48,
2360,
"NORTHERN TRAINS",
"contactless"
],
[
"2026-07-10T20:16:30+01:00",
"card",
-16.48,
2343.52,
"UBER *TRIP",
"online, 3-D Secure"
],
[
"2026-07-13T10:35:38+01:00",
"card",
-8.17,
2335.35,
"GREGGS 1820 LEEDS",
"chip and PIN"
],
"… 180 more in legitimate.json"
]
},
"payees": {
"columns": [
"payee",
"sort_code",
"account",
"payee_bank",
"added",
"… 4 more in legitimate.json"
],
"rows": [
[
"HANNAH OKONJO",
"xx-xx-19",
"x6604",
"Large UK high-street bank",
"2019-09-14",
"… 4 more in legitimate.json"
],
[
"MARYAM RAHMAN",
"xx-xx-77",
"x2881",
"Large UK high-street bank",
"2016-02-02",
"… 4 more in legitimate.json"
],
[
"JESS PELLING",
"xx-xx-40",
"x9137",
"UK app-only bank",
"2023-07-21",
"… 4 more in legitimate.json"
],
[
"OMAR SIDDIQ",
"xx-xx-52",
"x0415",
"UK building society",
"2024-11-30",
"… 4 more in legitimate.json"
],
[
"PARKSIDE LETTINGS LTD",
"xx-xx-03",
"x8812",
"Large UK high-street bank",
"2023-04-24",
"… 4 more in legitimate.json"
]
]
},
"payment_pattern_12_months": {
"payments_to_people_and_firms": 26,
"new_payees_added": 0,
"largest_payment_gbp": 925,
"largest_payment_to": "PARKSIDE LETTINGS LTD (rent)",
"payments_over_2000_gbp": 0
},
"devices": [
{
"device": "iPhone 16, our iOS app",
"registered": "2026-10-03",
"how": "One-time code texted to 07700 900127, then debit card number, expiry and security code",
"last_used": "2026-10-08",
"sessions_since_registered": 11
},
{
"device": "iPhone 12, our iOS app",
"registered": "2021-06-02",
"how": "Card reader",
"status": "Removed by the customer on 2026-10-03 when the iPhone 16 was registered"
}
],
"app_logins_last_30_days": {
"columns": [
"start",
"device",
"network",
"authentication",
"minutes",
"activity"
],
"rows": [
[
"2026-09-08T09:53:57+01:00",
"iPhone 12, our iOS app",
"Home broadband, Leeds",
"Face ID",
3.1,
"Viewed balances and recent transactions"
],
[
"2026-09-09T14:27:00+01:00",
"iPhone 12, our iOS app",
"Home broadband, Leeds",
"Face ID",
2.9,
"Viewed balances and recent transactions"
],
[
"2026-09-10T15:07:32+01:00",
"iPhone 12, our iOS app",
"Home broadband, Leeds",
"Face ID",
1,
"Viewed balances and recent transactions"
],
[
"2026-09-11T22:34:13+01:00",
"iPhone 12, our iOS app",
"Northvale Logistics office Wi-Fi, Leeds",
"Face ID",
1,
"Viewed balances and recent transactions"
],
[
"2026-09-12T14:34:18+01:00",
"iPhone 12, our iOS app",
"Home broadband, Leeds",
"Face ID",
1.9,
"Viewed balances and recent transactions"
],
"… 35 more in legitimate.json"
]
},
"contact_detail_changes": [
{
"ts": "2026-09-29T20:16:30+01:00",
"change": "Email changed from aisha.k.r@example.net to aisha.rahman@example.com",
"how": "In the app on her iPhone 12 (registered 2021) from home broadband, Face ID; confirmation sent to both addresses; no reply to the old address"
}
],
"contact_history": [
{
"ts": "2026-08-12T18:10:00+01:00",
"channel": "Phone, mortgage adviser",
"note": "Mortgage application taken; first-time buyer; deposit from own savings."
},
{
"ts": "2026-10-06T17:32:00+01:00",
"channel": "Phone, mortgage team",
"note": "See mortgage_application.adviser_notes."
}
],
"earlier_scam_warnings": [
{
"ts": "2023-04-24T19:40:00+01:00",
"payee": "PARKSIDE LETTINGS LTD",
"purpose_chosen": "Paying rent or a deposit on a rental",
"warning": "Rental warning",
"seconds_on_screen": 14,
"outcome": "Confirmed; first rent paid"
}
],
"current_session": {
"device": "iPhone 16, our iOS app (registered 2026-10-03), Face ID",
"network": "Northvale Logistics office Wi-Fi, Leeds (seen on 64 sessions since 2024), IP 203.0.113.140",
"started": "2026-10-08T12:47:55+01:00",
"events": {
"columns": [
"ts",
"event",
"detail"
],
"rows": [
[
"2026-10-08T12:47:55+01:00",
"Login",
"Face ID"
],
[
"2026-10-08T12:49:03+01:00",
"Own transfer",
"£29,000.00 from Easy Access Saver x5530 to current account x2196"
],
[
"2026-10-08T12:50:12+01:00",
"New payee started",
"Business account; name entered 'Hollis Pryor Solicitors LLP Client Account'"
],
[
"2026-10-08T12:50:40+01:00",
"App in background",
"48 s"
],
[
"2026-10-08T12:51:31+01:00",
"Payee details entered",
"Sort code xx-xx-58 and account x3140 pasted from the clipboard"
],
"… 9 more in legitimate.json"
]
},
"behaviour_signals": {
"source": "Our device and behaviour vendor's SDK in the app",
"voice_call": "Outgoing phone call started at 12:52:04 while the app was in the background and ended at 13:02:41 (10 min 37 s). No call at submission. The app can't see who was called.",
"remote_access_or_screen_sharing": "None detected",
"payee_details_entry": "Sort code and account number pasted from the clipboard after a 48 s switch to another app; name typed in one burst",
"reference_entry": "Typed in one burst, 'HP/RAHMAN/24117'",
"session_length": "18 min 23 s to submission, 11 min of it with the app in the background; her median session is 1 min 40 s",
"new_device": "Registered 5 days ago; 11 sessions since, all from her usual home and office networks",
"vendor_scam_score": "58 of 100 (vendor's reasons: phone call during payee setup; pasted payee details; device registered in the last 7 days; long session)"
}
},
"payment_under_review": {
"payment_id": "FPO-20261008-1306-71344",
"scheme": "Faster Payments, single immediate payment",
"from_account": "Current account x2196",
"amount_gbp": 29850,
"balance_after_gbp": 586.75,
"payee": {
"name_entered": "Hollis Pryor Solicitors LLP Client Account",
"account_type_entered": "Business",
"sort_code": "xx-xx-58",
"account": "x3140",
"payee_bank": "Large UK high-street bank",
"first_payment_to_payee": true
},
"reference": "HP/RAHMAN/24117",
"confirmation_of_payee": {
"result": "Match",
"code": null,
"name_returned": null,
"customer_action": "None needed"
},
"purpose_and_answers": {
"purpose": "Paying a deposit or completion money for a property purchase",
"Who is this payment to?": "My solicitor or conveyancer",
"How did you get the account details?": "From my solicitor's secure portal or in person",
"Have the account details changed since you were first given them?": "No",
"Have you called your solicitor on a number you found yourself to confirm the details?": "Yes"
},
"payee_intelligence": {
"source": "Our payments consortium's shared receiving-account data and our own payment records",
"account_opened": "2009-03-11",
"account_type": "Business account; the receiving bank marks it as a solicitor's client account",
"inbound_last_30_days": "Over 300 payments from over 200 payers at 14 banks, mostly £5,000 to £150,000; balances held for days to weeks before paying out",
"consortium_mule_risk": "3 of 100 (low)",
"our_other_customers": "48 customers of ours paid this account in the last 12 months (total £1.9 million); no scam or fraud reports",
"our_own_payments": "Matches the client account on our conveyancer panel record for Hollis Pryor Solicitors LLP; our mortgage completions team has sent funds to it 11 times in 2026, most recently 2026-09-30",
"scam_reports_on_this_account": "None"
},
"rules_fired": [
"SP-07 Phone call in progress during a payment to a new payee (call during payee setup)",
"SP-11 Faster Payments limit raised in the same session as the payment",
"SP-12 Savings moved into the current account less than 30 minutes before a new-payee payment",
"SP-15 Payment more than 5 times the customer's largest payment in 12 months",
"SP-18 New device registered in the last 7 days",
"SP-19 Email address changed in the last 14 days"
],
"our_scam_model": "731 of 999 (warn from 500, hold from 700)"
}
},
"questions": {
"deceived": {
"type": "noul",
"instructions": "Is the customer making the payment under review because someone has deceived them, so that the money would go to a scammer or to an account a scammer controls? Answer from the sending bank's point of view, using what the record shows at this moment."
},
"scam_type": {
"type": "choice",
"instructions": "If the payment under review is part of a scam, which type is it? The options follow UK Finance's categories of authorised push payment (APP) scams. Choose none if the customer is not being deceived.",
"criteria": {
"purchase": "Purchase: paying for goods, a vehicle, a rental or services that don't exist or will never arrive",
"investment": "Investment: paying into a fake or fraudulent investment, including crypto trading platforms, on a promise of high returns",
"romance": "Romance: sending money to someone met online who built a relationship with the customer",
"advance_fee": "Advance fee: paying a fee or tax up front to release a larger sum, a prize, a loan or a job, including task-based job scams",
"invoice_mandate": "Invoice and mandate: paying a real bill, such as a solicitor, builder or supplier, to bank details a criminal substituted",
"impersonation_police_bank": "Impersonation of police or bank staff: told to move money to a safe account or help an investigation",
"impersonation_other": "Impersonation of anyone else: a government department, a utility, a delivery or tech company, or a family member or friend with a new number",
"none": "None: the customer is not being deceived"
}
},
"coached": {
"type": "noul",
"instructions": "Is a scammer directing the customer through this payment as it happens, for example on a phone call during the session, through remote access to the device, or by telling them how to answer our payment questions? If so, an on-screen warning is unlikely to stop the payment."
},
"action": {
"type": "choice",
"instructions": "What should the bank do with the payment under review, before it is sent?",
"criteria": {
"release": "Release: send the payment now",
"warn": "Warn: show a warning written for the most likely scam type, and send the payment only if the customer confirms after reading it",
"hold_and_call": "Hold and call: keep the payment unsent until a fraud specialist has spoken to the customer on the phone number on file, then send or cancel it depending on that conversation",
"block": "Block: refuse the payment and further payments to this payee, stop payments to new payees, and have a fraud specialist contact the customer to explain the scam"
}
}
}
}The response. Probabilities and confidence are shortened to four decimals here, and the score to three; responses carry full precision.
{
"id": "dec_1628d4a8a6c34a19aabe9427cc2ba1c2",
"model": "grayson-1",
"answers": {
"deceived": {
"type": "noul",
"noul": 0.0041
},
"scam_type": {
"type": "choice",
"choice": "none",
"confidence": 0.9979,
"probabilities": {
"purchase": 0.0002,
"investment": 0.0001,
"romance": 0.0001,
"advance_fee": 0.0001,
"invoice_mandate": 0.0008,
"impersonation_police_bank": 0.0001,
"impersonation_other": 0.0004,
"none": 0.9982
}
},
"coached": {
"type": "noul",
"noul": 0.0141
},
"action": {
"type": "choice",
"choice": "release",
"confidence": 0.9763,
"probabilities": {
"release": 0.9822,
"warn": 0.014,
"hold_and_call": 0.0019,
"block": 0.0019
}
}
},
"usage": {
"input_tokens": 17606,
"output_tokens": 0
}
}Open in Playground
An experienced crypto buyer sends £6,000 to his own account for an unregistered platform. A customer who has bought crypto every month since 2024 through a registered exchange is sending £6,000 of his savings to an account in his own name that funds a newer platform, Corvane Markets, which isn't on the FCA register. His £500 test came back as £540, he says a friend introduced it, and there's no call, remote access or hesitation in the session; but another of our customers has reported Corvane as a scam found through a messaging-app trading group, while two others have taken money out.
| Question | Grayson's answer |
|---|---|
deceived | 25% true |
scam_type | none, confidence 41% |
coached | 1% true |
action | release, confidence 47% |
14,123 input tokens, $0.00049 per decision, answered in 213 ms.
The request, with long lists cut short. The full request is ambiguous.json (49 KB).
{
"model": "grayson-1",
"state": {
"screening": {
"system": "Outbound payment scam screening (real time), retail mobile app",
"stage": "The customer has pressed Send. The payment is held in pre-submission screening and has not been sent to Faster Payments.",
"times": "UK local time with offset (BST, UTC+01:00, until 2026-10-25)",
"our_actions": "release; warn (a full-screen warning for one scam type that the customer must confirm); hold and call (fraud specialist calls the number on file; UK rules allow a delay to the end of the fourth business day after the instruction where there are reasonable grounds to suspect fraud); block"
},
"customer": {
"customer_id": "C-27702951",
"name": "Daniel J. Mensah",
"age": 38,
"customer_since": "2016-01-11",
"home": "Reading, Berkshire (RG1); owns a flat with a mortgage elsewhere; at this address since 2019",
"occupation": "IT contractor through his own limited company, Mensah Digital Ltd (director)",
"income_on_file": "About £54,000 a year in salary and dividends",
"mobile_on_file": "07700 900163 (since 2016)",
"email_on_file": "dan.mensah@example.com (since 2016)",
"support_needs_recorded": "None",
"products": [
"Current account x5584",
"Easy Access Saver x9917",
"Debit card x3307",
"Credit card x8820 (limit £6,000, paid in full monthly)",
"Personal loan application (approved in principle 2026-10-06, not accepted)"
],
"scam_history": "No earlier scam claims, held payments or fraud reports"
},
"accounts": [
{
"account": "Current account x5584",
"opened": "2016-01-11",
"balance_before_payment_gbp": 9870.76,
"overdraft": "None arranged",
"faster_payment_daily_limit_gbp": 10000,
"limit_changes": []
},
{
"account": "Easy Access Saver x9917",
"opened": "2018-06-02",
"balance_gbp": 19412.08,
"recent_activity": "£1,500 in each month from the current account, plus interest. £6,000.00 moved to the current account on 2026-10-07 at 22:37 in the current session. Balance before today: £25,412.08."
}
],
"credit_applications": [
{
"ts": "2026-10-06T21:52:10+01:00",
"product": "Personal loan",
"channel": "In the app",
"amount_gbp": 8000,
"term_months": 36,
"stated_purpose": "Car purchase",
"status": "Approved in principle; offer not yet accepted",
"note": "First credit application since his credit card in 2017. No car-related payments or searches in our records."
}
],
"monthly_summary": {
"columns": [
"month",
"money_in_gbp",
"money_out_gbp",
"card_spending_gbp",
"direct_debits_gbp",
"… 5 more in ambiguous.json"
],
"rows": [
[
"2025-10",
4547.5,
4086,
808.89,
1527.11,
"… 5 more in ambiguous.json"
],
[
"2025-11",
4547.5,
3991.28,
882.17,
1359.11,
"… 5 more in ambiguous.json"
],
[
"2025-12",
4547.5,
4092.79,
983.68,
1359.11,
"… 5 more in ambiguous.json"
],
[
"2026-01",
4547.5,
3854.04,
626.93,
1527.11,
"… 5 more in ambiguous.json"
],
[
"2026-02",
4547.5,
4260.63,
983.52,
1527.11,
"… 5 more in ambiguous.json"
],
"… 7 more in ambiguous.json"
]
},
"transactions": {
"note": "Every posted item on current account x5584 since 2026-07-08; amounts signed (debits negative); balance after each item",
"columns": [
"ts",
"type",
"amount_gbp",
"balance_gbp",
"description",
"detail"
],
"rows": [
[
"2026-07-09T06:02:21+01:00",
"internal_transfer_out",
-1500,
2598.45,
"TO EASY ACCESS SAVER x9917",
"monthly saving"
],
[
"2026-07-09T13:27:06+01:00",
"card",
-3.27,
2595.18,
"GAIL'S READING",
"contactless"
],
[
"2026-07-09T21:06:23+01:00",
"card",
-50.23,
2544.95,
"THE NAG'S HEAD READING",
"contactless"
],
[
"2026-07-10T19:30:08+01:00",
"card",
-37.31,
2507.64,
"WAITROSE 0733 READING",
"chip and PIN"
],
[
"2026-07-10T19:35:01+01:00",
"card",
-37.7,
2469.94,
"DELIVEROO",
"online, card on file"
],
"… 136 more in ambiguous.json"
]
},
"payees": {
"columns": [
"payee",
"sort_code",
"account",
"payee_bank",
"added",
"… 5 more in ambiguous.json"
],
"rows": [
[
"D J MENSAH",
"xx-xx-23",
"x6015",
"UK e-money firm used by Tallis Exchange",
"2024-05-11",
"… 5 more in ambiguous.json"
],
[
"DANIEL MENSAH",
"xx-xx-81",
"x0377",
"Erdwell Payments Ltd (UK e-money firm)",
"2026-09-26",
"… 5 more in ambiguous.json"
],
[
"MENSAH DIGITAL LTD",
"xx-xx-60",
"x7741",
"Large UK high-street bank",
"2019-03-08",
"… 5 more in ambiguous.json"
],
[
"KOFI MENSAH",
"xx-xx-14",
"x2209",
"Large UK high-street bank",
"2017-12-20",
"… 5 more in ambiguous.json"
]
]
},
"payment_pattern_12_months": {
"payments_to_people_and_firms": 15,
"new_payees_added": 1,
"largest_payment_gbp": 500,
"largest_payment_to": "DANIEL MENSAH (Erdwell Payments), 2026-09-26",
"payments_over_2000_gbp": 0,
"crypto_platform_payments": "Monthly £200 to £300 to his Tallis Exchange deposit account since May 2024 (about £7,100 in total); one withdrawal back of £2,310.00 in March 2026"
},
"devices": [
{
"device": "Pixel 8, our Android app",
"registered": "2024-02-17",
"how": "One-time code texted to 07700 900163 plus card reader",
"last_used": "2026-10-07",
"sessions_90_days": 79
}
],
"app_logins_last_30_days": {
"columns": [
"start",
"device",
"network",
"authentication",
"minutes",
"activity"
],
"rows": [
[
"2026-09-07T20:59:59+01:00",
"Pixel 8, our Android app",
"Home broadband, Reading",
"Face ID",
3,
"Viewed balances and recent transactions"
],
[
"2026-09-08T19:56:38+01:00",
"Pixel 8, our Android app",
"Home broadband, Reading",
"Face ID",
2.5,
"Viewed balances and recent transactions"
],
[
"2026-09-09T20:31:58+01:00",
"Pixel 8, our Android app",
"Home broadband, Reading",
"Face ID",
0.8,
"Viewed balances and recent transactions"
],
[
"2026-09-10T23:47:48+01:00",
"Pixel 8, our Android app",
"Home broadband, Reading",
"Face ID",
2.2,
"Viewed balances and recent transactions"
],
[
"2026-09-11T23:48:34+01:00",
"Pixel 8, our Android app",
"Home broadband, Reading",
"Face ID",
2.9,
"Viewed balances and recent transactions"
],
"… 26 more in ambiguous.json"
]
},
"contact_detail_changes": "None in the last 24 months",
"contact_history": [
{
"ts": "2026-10-03T11:06:12+01:00",
"channel": "Secure message in the app",
"note": "Customer wrote: 'Why do I get a page of questions every time I pay my own account? It's in my name, I've already taken money out of it fine. Can you whitelist it?' Agent replied 2026-10-03 13:40: explained that we ask about investment payments to protect customers from scams and can't remove the questions; no further reply."
}
],
"earlier_scam_warnings": [
{
"ts": "2024-05-11T12:30:00+01:00",
"payee": "D J MENSAH (Tallis Exchange)",
"purpose_chosen": "Investment",
"warning": "Investment and crypto warning",
"seconds_on_screen": 16,
"outcome": "Confirmed; paid £100.00"
},
{
"ts": "2026-09-26T14:11:20+01:00",
"payee": "DANIEL MENSAH (Erdwell Payments)",
"purpose_chosen": "Investment",
"answers": {
"How did you hear about this investment?": "A friend or family member",
"Have you been promised returns?": "No",
"Has anyone helped you open the account or asked you to install an app to let them see your screen?": "No",
"Have you checked the firm is authorised or registered with the FCA?": "Yes"
},
"warning": "Investment and crypto warning",
"seconds_on_screen": 14,
"outcome": "Confirmed; paid £500.00"
}
],
"current_session": {
"device": "Pixel 8, our Android app (registered 2024-02-17), fingerprint",
"network": "Home broadband, Reading (seen on 71 of his last 79 sessions), IP 192.0.2.88",
"started": "2026-10-07T22:36:41+01:00",
"events": {
"columns": [
"ts",
"event",
"detail"
],
"rows": [
[
"2026-10-07T22:36:41+01:00",
"Login",
"Fingerprint"
],
[
"2026-10-07T22:37:50+01:00",
"Own transfer",
"£6,000.00 from Easy Access Saver x9917 to current account x5584"
],
[
"2026-10-07T22:38:31+01:00",
"Payment started",
"Saved payee DANIEL MENSAH (Erdwell Payments), added 2026-09-26"
],
[
"2026-10-07T22:38:52+01:00",
"Purpose chosen",
"Investment"
],
[
"2026-10-07T22:38:53+01:00",
"Questions shown",
"Investment questions (amount more than 5 times the last payment to this payee)"
],
[
"2026-10-07T22:40:17+01:00",
"Investment warning shown",
"'Criminals set up fake trading platforms that show big profits and let you take out small amounts to win your trust. Check the FCA register and Warning List, and never invest because someone you met online or on social media told you to.'"
],
[
"2026-10-07T22:40:29+01:00",
"Investment warning",
"Customer chose 'I understand, continue' after 12 s"
],
[
"2026-10-07T22:41:09+01:00",
"Payment submitted",
"£6,000.00 to DANIEL MENSAH, reference 'CVN88213'"
]
]
},
"behaviour_signals": {
"source": "Our device and behaviour vendor's SDK in the app",
"voice_call": "No phone call during the session",
"remote_access_or_screen_sharing": "None detected; no accessibility services or screen-recording apps active",
"payee_details_entry": "Saved payee; nothing typed",
"reference_entry": "Typed in one burst, 'CVN88213'",
"answer_timing": "Answered the four investment questions in 1 min 24 s, in line with his earlier answers",
"session_length": "4 min 28 s to submission; his median session is 2 min 10 s",
"time_of_day": "22:36; 38% of his sessions in 90 days started after 22:00",
"vendor_scam_score": "22 of 100 (vendor's reasons: payment to an investment platform; savings moved in during the session)"
}
},
"payment_under_review": {
"payment_id": "FPO-20261007-2241-90217",
"scheme": "Faster Payments, single immediate payment",
"from_account": "Current account x5584",
"amount_gbp": 6000,
"balance_after_gbp": 3870.76,
"payee": {
"name": "DANIEL MENSAH",
"account_type": "Personal",
"sort_code": "xx-xx-81",
"account": "x0377",
"payee_bank": "Erdwell Payments Ltd, an FCA-authorised e-money institution",
"first_payment_to_payee": false,
"earlier_payments": "£500.00 on 2026-09-26; £540.00 received back from this account on 2026-10-02"
},
"reference": "CVN88213",
"confirmation_of_payee": {
"result": "Match (checked when the payee was added on 2026-09-26)",
"code": null,
"name_returned": null
},
"purpose_and_answers": {
"purpose": "Investment",
"How did you hear about this investment?": "A friend or family member",
"Have you been promised returns?": "No",
"Has anyone helped you open the account or asked you to install an app to let them see your screen?": "No",
"Can you take your money out when you want to?": "Yes, I've done it before"
},
"payee_intelligence": {
"source": "Our payments consortium's shared receiving-account data, our platform screening and our own payment records",
"account_opened": "2026-09-25 (one day before his first payment)",
"account_use": "Erdwell issues named accounts to customers of several trading and crypto platforms; this one is for deposits to Corvane Markets (reference prefix CVN). Inbound to this account: only his two payments. Erdwell doesn't share where money goes after it arrives.",
"platform_checks": "Corvane Markets: not on the FCA cryptoasset register; not on the FCA Warning List (checked 2026-10-07); website domain registered 2026-05-14",
"consortium_reports": "No reports on this account. 2 investment scam reports from other banks in the last 90 days on payments to other Erdwell accounts for Corvane deposits; 37 payers at 6 banks paid Corvane deposit accounts in the last 30 days",
"our_other_customers": "3 other customers of ours pay Corvane deposit accounts at Erdwell. One reported on 2026-09-30 that Corvane is a scam she was introduced to through a messaging-app trading group (claim open, not yet confirmed). The other two have each had money paid back from their Corvane accounts (£1,900.00 and £3,200.00) and have not reported a problem.",
"consortium_mule_risk": "Not scored (named account in the payer's own name)"
},
"rules_fired": [
"SP-12 Savings moved into the current account less than 30 minutes before the payment",
"SP-15 Payment more than 5 times the customer's largest payment in 12 months",
"SP-24 Payment to a crypto platform not on the FCA cryptoasset register",
"SP-25 Payee linked to an open scam claim by another customer",
"SP-27 Credit application in the 48 hours before an investment payment"
],
"our_scam_model": "714 of 999 (warn from 500, hold from 700)"
}
},
"questions": {
"deceived": {
"type": "noul",
"instructions": "Is the customer making the payment under review because someone has deceived them, so that the money would go to a scammer or to an account a scammer controls? Answer from the sending bank's point of view, using what the record shows at this moment."
},
"scam_type": {
"type": "choice",
"instructions": "If the payment under review is part of a scam, which type is it? The options follow UK Finance's categories of authorised push payment (APP) scams. Choose none if the customer is not being deceived.",
"criteria": {
"purchase": "Purchase: paying for goods, a vehicle, a rental or services that don't exist or will never arrive",
"investment": "Investment: paying into a fake or fraudulent investment, including crypto trading platforms, on a promise of high returns",
"romance": "Romance: sending money to someone met online who built a relationship with the customer",
"advance_fee": "Advance fee: paying a fee or tax up front to release a larger sum, a prize, a loan or a job, including task-based job scams",
"invoice_mandate": "Invoice and mandate: paying a real bill, such as a solicitor, builder or supplier, to bank details a criminal substituted",
"impersonation_police_bank": "Impersonation of police or bank staff: told to move money to a safe account or help an investigation",
"impersonation_other": "Impersonation of anyone else: a government department, a utility, a delivery or tech company, or a family member or friend with a new number",
"none": "None: the customer is not being deceived"
}
},
"coached": {
"type": "noul",
"instructions": "Is a scammer directing the customer through this payment as it happens, for example on a phone call during the session, through remote access to the device, or by telling them how to answer our payment questions? If so, an on-screen warning is unlikely to stop the payment."
},
"action": {
"type": "choice",
"instructions": "What should the bank do with the payment under review, before it is sent?",
"criteria": {
"release": "Release: send the payment now",
"warn": "Warn: show a warning written for the most likely scam type, and send the payment only if the customer confirms after reading it",
"hold_and_call": "Hold and call: keep the payment unsent until a fraud specialist has spoken to the customer on the phone number on file, then send or cancel it depending on that conversation",
"block": "Block: refuse the payment and further payments to this payee, stop payments to new payees, and have a fraud specialist contact the customer to explain the scam"
}
}
}
}The response. Probabilities and confidence are shortened to four decimals here, and the score to three; responses carry full precision.
{
"id": "dec_5548557eb5af426392db04276b2095e7",
"model": "grayson-1",
"answers": {
"deceived": {
"type": "noul",
"noul": 0.2451
},
"scam_type": {
"type": "choice",
"choice": "none",
"confidence": 0.4108,
"probabilities": {
"purchase": 0.0069,
"investment": 0.4844,
"romance": 0.0047,
"advance_fee": 0.0061,
"invoice_mandate": 0.0078,
"impersonation_police_bank": 0.0008,
"impersonation_other": 0.0047,
"none": 0.4844
}
},
"coached": {
"type": "noul",
"noul": 0.0067
},
"action": {
"type": "choice",
"choice": "release",
"confidence": 0.4664,
"probabilities": {
"release": 0.5998,
"warn": 0.1338,
"hold_and_call": 0.1947,
"block": 0.0716
}
}
},
"usage": {
"input_tokens": 14123,
"output_tokens": 0
}
}A yes/no answer is Grayson's probability that it's true. A choice answer is the top option and Grayson's confidence: 0% when every option is equally likely, 100% when one option has all the probability. A score answer is the expected level, numbering the levels in its criteria from 0, with its confidence measured the same way and, when no level reaches 70%, each level's probability. A multiple-choice answer lists the options at 50% or more.
actionis the recommendation. Sendblockandhold_and_callabove their thresholds to your fraud team's queue with the scam type attached. Set a separate threshold ondeceivedtoo: in the crypto exampleactionfavors release, but a one-in-four chance that a £6,000 payment is a scam is worth a call for many teams.scam_typechooses the warning to show and the script for the call. Whendeceivedis low, ignore it.coachedtells you whether a warning can work at all: when it's high, a customer on the phone with a scammer will click through, so prefer a hold over a warning even when the scam type is unclear.
Call it from your code
Save an example as request.json, such as ambiguous.json, and send it with your API key in GRAYSON_API_KEY:
curl https://api.finic.ai/v1/decide \
-H "Authorization: Bearer $GRAYSON_API_KEY" \
-H "Content-Type: application/json" \
--data @request.jsonThe problem
Scam payments pass every authentication check, because the real customer makes them on their own phone. Rules that fire on a new payee, a large amount or savings moved in also fire on house deposits and car purchases, and customers learn to click through the warnings. What separates the two is the combination: a phone call during the session, a "safe account" in someone else's name, a payee account a few days old, against a mortgage offer naming the payee or a payee your own completions team already pays.
What to send
Send what your screening holds when the customer presses Send. The examples send 120 to 210 transactions each, in about 12,800 to 17,600 input tokens.
- The session, event by event. Savings moved in, a limit raised, a no-match warning overridden and long pauses all within minutes is the shape of a coached payment.
- Behaviour signals. An incoming call that lasts the whole session, remote access, and payee details typed a few digits at a time point to someone reading them out.
- Confirmation of Payee and payee intelligence. A no match on an "own account", a payee account opened days ago, or money that leaves it within minutes points to a mule account.
- Purpose and answers. Answers that contradict the record, such as "my own account" for a name that doesn't match, matter more than the answers themselves.
- Months of account history and payees. These show what is normal for the customer: their largest payment, how often they add payees, and earlier payments to crypto or investment platforms.
- What else you hold about the customer. A mortgage application, support needs, a recent contact-detail change or a card decline they didn't make can explain or condemn a payment.
Add your own policy
Banks draw different lines on crypto, large first payments and own-account transfers, so put your policy in the request in your team's words and Grayson applies it. This one refuses any payment it can trace to a crypto platform that isn't on the FCA cryptoasset register, including payments to the customer's own account.
Your crypto platform policy adds this to the state of the ambiguous example:
{
"crypto_payments_policy": "Payments to cryptoasset platforms (rev. 2026-07). 1) We do not send any payment, including to an account in the customer's own name at an e-money firm or exchange, when we can identify that the money is for a cryptoasset platform that is not on the FCA cryptoasset register. Block the payment and its payee, and tell the customer in the app that we don't send payments to unregistered crypto platforms. This applies whatever the customer's answers or history. 2) Payments to platforms on the FCA cryptoasset register go through normal scam screening. 3) A customer who disagrees can ask a branch to review the decision; the branch can't override rule 1."
}| Question | Without | With your crypto platform policy |
|---|---|---|
deceived | 25% true | 20% true |
scam_type | none, confidence 41% | none, confidence 44% |
coached | 1% true | Under 1% true |
action | release, confidence 47% | block, confidence 93% |
Applied to the ambiguous example: the £6,000 is for Corvane Markets, which isn't on the FCA cryptoasset register, so the action moves from a narrow release to block, while whether he is being deceived and the scam type stay as uncertain as before.
Where to call it
- After the customer presses Send and before you submit the payment, with a timeout, falling back to your rules if the answer isn't back.
- Where it adds the most: payments to new payees, payees added in the last few weeks, own-account transfers to other firms, and anything your rules would warn on or hold.
- Again when you know more, for example after the customer answers a fraud specialist's questions, with the call notes added to the state.
Cost and latency
| Example | Input tokens | Per decision | Per 1,000 decisions | Latency |
|---|---|---|---|---|
| Obvious | 12,843 | $0.00045 | $0.45 | 255 ms |
| Legitimate | 17,606 | $0.00062 | $0.62 | 210 ms |
| Ambiguous | 14,123 | $0.00049 | $0.49 | 213 ms |
You pay only for input tokens, at $0.035 per million, and each request is rounded up to the next millionth of a dollar, so a request with a larger state costs proportionally more; every response reports its size in usage.input_tokens. Latency is the median of 5 calls each through api.finic.ai from US-West, and grows with the number of input tokens. Add your own network time to api.finic.ai.
Evaluate on your own data
Score Grayson on your own past cases before you use it: a CSV with one row per case and a column with the right answer to each question. Every other column is sent as the case.
pipx install https://docs.finic.ai/downloads/grayson_cli-0.4.0-py3-none-any.whl
grayson eval my-cases.csv --questions https://docs.finic.ai/recipes/scam-payment-prevention/questions.json --label deceived=<column> --label scam_type=<column> --label coached=<column> --label action=<column>Each --label names the column with that question's right answer:
deceived:trueorfalsescam_type:purchase,investment,romance,advance_fee,invoice_mandate,impersonation_police_bank,impersonation_other,nonecoached:trueorfalseaction:release,warn,hold_and_call,block
Or run grayson on its own to set up your questions step by step. You get each question's accuracy and a CSV with Grayson's answer next to yours for every case.
FAQ
How is this different from fraud typology classification?
This recipe decides while the money is still with you, from what your screening holds when the customer presses Send. Fraud typology classification classifies a claim after the loss, from the customer's statement and the records of what happened, and decides reimbursement.
Does a warning the customer clicked through mean we don't have to repay them?
Rarely. Under the UK's APP scam reimbursement rules, in force since October 2024, a payment firm can refuse to reimburse when the customer was grossly negligent, which is a high bar, and not when the customer was vulnerable and that affected their ability to protect themselves. A customer being coached by a caller will usually click through a generic warning, which is why the coached answer exists and why stopping the payment is usually cheaper than repaying it.
Is it fast enough for the payment flow?
Customers expect a Faster Payment to go in seconds, so call Grayson in parallel with your other checks once the customer presses Send, and use your rules' decision if the answer doesn't arrive in time. Holding a payment while you talk to the customer is a different budget: UK rules let you delay an outgoing payment until the end of the fourth business day after the instruction when you have reasonable grounds to suspect fraud, as long as you tell the customer.
Related recipes
Fraud typology classification
Label a fraud claim with a FraudClassifier class, scam type and contributing factors; decide reimbursement.
Detect money mule accounts
Whether an account is passing other people's money through, whether the holder knows, and what to do
Detect business email compromise in vendor payments
Catch payments to a vendor's new bank account after a fake or compromised change request.
Recipes
Every use case, with its questions and cost per decision.
Incoming payments
Decide whether an incoming ACH credit is the proceeds of fraud at the sender, and whether to release, hold or return it, from the account's history, the ACH entry and what happened after it posted.
Onboarding
Applications for deposit accounts, business services and loans. Ready-to-run Grayson recipes with real responses, cost and latency.