Docs Sellers

Storefront

LiveUpdated

View as Markdown

Sellers. Written for merchants that receive agent orders.

Storefront gives a merchant without a protocol surface the endpoints agents check out through. Enruta hosts the UCP profile, the checkout and order endpoints and the ACP shim at https://shop.enruta.ai/s/{slug}/…, reads your catalog, takes payment with an Enruta mandate or on your own PSP account, and reports every order to your seller organization. Enruta does not become your merchant of record and holds no funds.

What is hosted

PathProtocolWhat it answers
/.well-known/ucpUCP 2026-08-25The profile: this storefront’s ucp.keys, the REST and MCP bindings, the capabilities
/ucp/…UCPThe checkout lifecycle and orders; every checkout is signed with ap2.merchant_authorization, and an Enruta mandate is verified on complete
/mcpUCP over MCPThe same operations as tools
/.well-known/acp.jsonACPThe ACP discovery document
/acp/checkout_sessionsACP 2026-04-17, and the September 2025 shapePOST to create, POST /{id} to update, POST /{id}/complete, POST /{id}/cancel, GET /{id}; the API-Version header selects the version, and client_reference_id is kept on both sides

Stock is not reserved when a checkout is created; that stays with your PSP or your commerce platform.

On your own domain

Proxy /.well-known/ucp, /.well-known/acp.json, /ucp/*, /acp/* and /mcp from your domain to your storefront. The console shows a Cloudflare Worker or Vercel rewrite snippet for your storefront, built on @enruta/accept’s toFetchHandler. Once the domain is verified, agents see your domain and your keys.

Payment

HandlerHow it paysNeeds
enruta_cardThe agent presents an Enruta mandate and its single-use token; the storefront presents the token to POST /v0/rails/authorize, as the reference merchant doesNothing beyond the storefront
pspThe agent presents a PSP token, such as a Stripe Shared Payment Token, and the storefront charges it on your own PSP accountYour PSP account, connected as a PSP connection

Catalog

  • Inline (catalog: { source: "inline", products }), or a feed URL that returns a JSON array or a Google Merchant-style JSON feed (catalog: { source: "feed_url", url }).
  • A feed is cached for five minutes; POST /v0/storefronts/{id}/catalog/refresh reads it again at once.
  • Prices in minor units; images over https only.

Orders

Every order is reported to your seller organization the way the reference merchant reports its own: placed, updated, shipped. Agent orders are labelled with the agent, the mandate and the policy version and counted as agent orders. Refunds become adjustments and reversals on the buyer’s side, and a dispute gets a dispute packet.

Set one up

POST /v0/storefronts          Authorization: Bearer enruta_slr_…
{
  "slug": "shop-example",
  "name": "Shop Example",
  "currency": "USD",
  "catalog": { "source": "feed_url", "url": "https://shop.example/feeds/products.json" }
}

// or an inline catalog: "catalog": { "source": "inline", "products": [ … ] }

GET   /v0/storefronts
GET   /v0/storefronts/{id}          PATCH /v0/storefronts/{id}
POST  /v0/storefronts/{id}/catalog/refresh
GET   /v0/storefronts/{id}/orders

The console’s /storefronts pages do the same, and show the catalog, the protocols, the endpoint URLs, the proxy snippet and the orders. enruta storefront ls and enruta storefront create work from the terminal.

The merchant tiers

TierWhat it isStatus
AcceptRecognize agent orders, verify the mandate, keep a record, conformance and badge, fulfillment confirmationLive (Accept middleware)
StorefrontHosted UCP endpoint and ACP shim; payment by mandate or on your own PSP account; reversal write-back; dispute packets; the merchant slice of the weekly reconciliationLive

Price

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

LinePriceIncludes
Accept$0, permanentlyThe agent orders it admits carry the per-payment fee
Storefront0.1% + $0.03 a successful paymentAt least $0.05, at most $0.50; reversal write-back and dispute packets included
Third-party risk signalsAt costAbout $0.05 a screened order, passed through without mark-up