For merchants with AI agent traffic
Every decision, provable.
AI agents from ChatGPT, Perplexity, and Operator are buying from your store. Your fraud stack is wrongly declining 1 in 10. We help you recover that revenue, with a tamper-evident audit trail for every decision.
No credit card · 20 min · See if there's recoverable revenue in your declines.
11%
of legitimate AI agent orders are wrongly declined by today's fraud stacks
$1.5T
in projected agent commerce volume by 2030 (Juniper Research)
<100ms
decision latency — never the reason your checkout slows down
The problem
AI agents behave like attackers: new device, no browsing history, programmatic cadence. They're your best customers, and your stack is rejecting them.
When an AI shopping agent completes a purchase, your fraud model sees no session cookie, no prior browsing history, an unusual device fingerprint, and a checkout flow that doesn't click around. Every signal points to "fraud."
But the agent is acting on behalf of a real customer who authorized it. The order is legitimate. The decline is a false positive — and the customer may never know why their agent failed, so they never retry with you.
Retrieva gives that agent a cryptographically verifiable identity before the authorization request reaches your stack. Trust the agents your customers actually use.
What we read
How it works
Drop Retrieva in alongside your existing fraud stack — it adds a trust layer specifically for agent traffic without replacing anything.
01
Register agent identity
AI agents register a cryptographic keypair at deployment time. The public key is anchored to a tamper-evident ledger entry alongside the agent's declared capabilities and merchant authorization scope.
<50ms globally02
Score in real time
At checkout, the agent signs the authorization request. Retrieva verifies the signature, evaluates behavioral and network signals, and returns a trust score before the order hits your fraud stack.
<100ms p9903
Decide with evidence
Your policy rules run against the trust score. Approve, challenge, or decline. Every decision is written to the ledger with full signal provenance — auditable forever, exportable on demand for disputes.
Evidence-gradeDesigned around trust
INVARIANT 01
Fail-open by design
If Retrieva is unreachable within the timeout window, the authorization flow proceeds without our signal. Your checkout never waits on us. We configure a safe default — approve and flag for async review.
INVARIANT 02
Sub-100ms decisions
Every evaluation is p99 under 100ms globally, measured from your webhook receipt to our response. We instrument this continuously and page on-call if it drifts above 80ms.
INVARIANT 03
Cross-PSP, never locked-in
Retrieva is payment-processor agnostic. It sits upstream of Stripe, Adyen, Braintree, or your custom gateway. Switching processors doesn't touch your Retrieva integration.
INVARIANT 04
Tamper-evident ledger
Each decision is chained to the previous one via cryptographic hash. Mutating any historical record breaks the chain at that point, detectable by any verifier. No central authority can revise history.
INVARIANT 05
PCI scope-free
Retrieva never touches cardholder data. The authorization request includes agent identity, order amount, and merchant ID — not card numbers, CVVs, or billing addresses.
INVARIANT 06
Shadow-mode safety
Every new policy deploys in shadow mode first — it scores traffic but doesn't affect decisions. You see the approval rate delta before any real orders are impacted. Promotion requires six real-outcome gates.
Integration
Add the Retrieva ACP handler to your existing authorization webhook. No new infrastructure. No database migrations. No rip-and-replace of your fraud stack.
Works with Stripe, Shopify, BigCommerce, Adyen, Braintree, and custom stacks. TypeScript and Python SDKs. Full OpenAPI spec included.
checkout.ts — your ACP /complete handler
// checkout.ts — ACP /complete handler import { Retrieva } from '@retrieva/sdk' const retr = new Retrieva({ apiKey: process.env.RETRIEVA_API_KEY }) export async function POST(req: Request) { const { agentId, merchantId, amount, currency } = await req.json() try { const decision = await retr.decisions.evaluate({ agentId, merchantId, transaction: { amount, currency } }) if (decision.verdict === 'APPROVE') { return Response.json({ status: 'approved', decisionId: decision.id }) } return Response.json({ status: 'declined', reason: decision.reason }) } catch (err) { // Fail-open: approve + flag for async review return Response.json({ status: 'approved', fallback: true }) } }
ROI Calculator
Adjust the inputs to your store and see your estimated recoverable revenue.
Estimated recoverable revenue
$0
per month, conservative estimate
FAQ
Ready?
Book a 20-minute call. We'll review your decline patterns together. No slides, no pitch deck.
Currently accepting design partners: Mid-market DTC · Travel · Ticketing · Digital services