Inherence compiles Google's Agent Payments Protocol (AP2) into a runtime gate. Stripe Issuing spending_controls map directly to AP2 parameters. Every authorization the agent attempts produces a 128-byte cryptographic receipt your auditor can verify in under a millisecond.
Live demo — agent attempts an over-limit Stripe Issuing charge; Inherence denies and emits a verifiable 128-byte receipt. 32 seconds.
An AI agent authorized to spend up to $10,000/month calls Stripe Issuing to charge $15,000 to an unfamiliar vendor. Today's Stripe spending_controls block the call — but produce no cryptographic evidence that the policy was enforced. An auditor reviewing the agent's behavior six months later has logs, nothing more.
Inherence sits in front of the Stripe call. Every authorization — allowed or denied — produces a 128-byte Groth16 proof bound to the exact policy and the exact attempted action. The proof is the audit trail.
Your existing Stripe Issuing card setup becomes the policy. The StripeIssuingAdapter in the Inherence Python SDK reads your spending_controls dict and maps it to AP2 parameters automatically.
from inherence import Inherence
from inherence.adapters.stripe import from_stripe_spending_controls
# Your existing Stripe Issuing card configuration.
card_controls = stripe.issuing.Card.retrieve("ic_abc123").spending_controls
# Map to AP2 parameters — automatic.
ap2_params = from_stripe_spending_controls(card_controls)
# Compile + run.
inh = Inherence(policy="ap2", parameters=ap2_params, mode="proven")
decision = inh.check_authorization({
"amount_usd": 15_000,
"merchant_category": "office_supplies",
"vendor_id": "unfamiliar_co_inc",
})
if decision.allowed:
stripe.issuing.Authorization.approve(authorization_id)
else:
stripe.issuing.Authorization.decline(authorization_id, reason=decision.cite)
receipt = decision.receipt # 128-byte Groth16 proof, auditor-verifiable
$ inherence verify --receipt 0xb4d5d72ac88f1a7f...c8
✓ policy hash matches ap2 v1.0
✓ Groth16 proof verifies (BN254)
✓ decision: DENY · rule: monthly_spend_limit_exceeded
✓ cite: AP2 §3.2.1 — cap $10,000, attempted $15,000
✓ verifier key: receipts.inherencelabs.com/vk
verify time: 0.91ms
The auditor doesn't need access to your Stripe account. They don't need to trust Inherence's backend. They run inherence verify with the published verifier key — independent confirmation in under a millisecond.
| Inputs (boolean predicates) | 50 |
| BDD nodes | 62 |
| R1CS constraints | 112 |
| Groth16 prove (M4) | 2.36 ms ± 0.16 |
| Groth16 verify (M4) | 0.93 ms |
| Proof size | 128 bytes |
| Speedup vs SP1 core STARK | 5,205× |
M4 measurements from BENCHMARKS.md. Live-gate round-trip through mcp.inherencelabs.com: ~80-120ms total.
If your agent moves money — fintech, treasury automation, vendor payments, expense reimbursement — Inherence is the cryptographic audit trail your auditor or regulator will accept.
Start a payments pilot → Talk to us