← Tools
PAYMENTS · AP2 + STRIPE · APACHE 2.0

Every agent transaction.
A verifiable receipt.

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.

See it in motion.

Live demo — agent attempts an over-limit Stripe Issuing charge; Inherence denies and emits a verifiable 128-byte receipt. 32 seconds.

The problem with agent commerce.

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.

Stripe-native configuration.

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

What the auditor holds.

$ 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.

Performance — AP2 specifically.

Inputs (boolean predicates)50
BDD nodes62
R1CS constraints112
Groth16 prove (M4)2.36 ms ± 0.16
Groth16 verify (M4)0.93 ms
Proof size128 bytes
Speedup vs SP1 core STARK5,205×

M4 measurements from BENCHMARKS.md. Live-gate round-trip through mcp.inherencelabs.com: ~80-120ms total.

Built for the payments + .gov conversations.

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