Recognize the agent order. Keep the evidence. A channel tells you an order came from an agent. Enruta tells you which agent, for whom and under which policy, and gives you a record for refunds, disputes and audits.

The order and the customer. Enruta adds the evidence.

  • Orders and fulfillment

    You hold the order and the customer. Enruta adds the agent’s identity, the mandate and the record.

  • What you gain on the order

    agent_id, mandate_ref and policy_version labels, also written into your PSP; adjustments[] that execute; a dispute packet; a reconciliation slice; a risk signal you did not have to take on the agent’s word; the money split

  • What you check

    The mandate and the agent’s identity. Whether the purchase is what the person meant was decided by the user’s policy before the mandate existed

  • Interfaces

    The Accept middleware; a hosted storefront; verify_record; the sellers API (orders, verify, adjustments, reversals, fulfillments, dispute packets and deliveries, reconciliation, PSP connections, conformance, domains); the seller console

  • Billed by

    No plan: 0.1% + $0.03 a successful payment, at least $0.05; the sandbox is free. Accept is free permanently.

Accept and Storefront are live.

Accept

Live

Freepermanently

Recognize agent orders, verify the mandate, keep a record, run the conformance check, confirm fulfillment

Storefront

Live

0.1% + $0.03a successful payment

At least $0.05, at most $0.50

Hosted UCP endpoint and ACP shim, payment by mandate or PSP token, reversal write-back, dispute packets, the merchant slice of the weekly reconciliation

One edge deployment, four things on every request.

Cloudflare Workers, Vercel Edge, Fastly Compute, Hono or Node 22. Zero dependencies, Apache-2.0. Without a seller key it labels; with one it reports and you get a record.

  • Web Bot Auth signatures, verified with the key from the agent’s own directory; UCP signatures (Shopify’s Signed tier), verified with the key the agent’s profile publishes; the UCP-Agent fingerprint table, known agent user agents, MCP bodies

    What you see: X-Enruta-Agent-Verified: true, X-Enruta-Agent-Profile: https://…, X-Enruta-Agent-Platform: anthropic

worker.ts
import { createAccept, toFetchHandler } from "@enruta/accept";

const accept = createAccept({
  domain: "shop.example",
  sellerKey: env.ENRUTA_SELLER_KEY,
});

export default {
  fetch: toFetchHandler(accept, { origin: "https://origin.shop.example" }),
};

An invalid mandate is passed through labelled X-Enruta-Mandate-Valid: false so your own AP2 check decides; set enforce: true to answer 402 instead.

No protocol surface of your own? Enruta hosts one for your catalog.

A hosted UCP endpoint and ACP shim at shop.enruta.ai, or on your own domain through a proxy. It reads your catalog, takes payment by Enruta mandate or PSP token, and reports every order to you.

Refunds, disputes and the week’s books, with evidence.

  • Report it (POST /v0/sellers/adjustments), let the order webhook carry it, or let your PSP’s own refund webhook do it through a PSP connection; Enruta decides and executes the reversal on the buyer’s side and hands you the same adjustment in the UCP, ACP, Adyen and Shopify shapes

    Adjustments

Agent labels and refunds, inside the PSP you connect.

Enruta writes the agent labels into Stripe, Braintree or PayPal after the order. Adyen, Checkout.com and Worldpay take them only when the payment is created, so Enruta links the payment reference instead. Stripe runs today; the other adapters are complete and run once your account at that PSP is connected. If you complete checkout only on your own page, the agent hands the person the link and Enruta records the order.

Run the middleware today, or open a storefront.

A few companies, agent builders and merchants are shaping the first records with us. If your agents pay, or you sell to agents, write to us.

See what you’ll pay

Every price is public, on one page.

Pricing

Start building

A sandbox organization and keys from one call, without a person.

Quickstart