Core concept: the checkout session
ACP works in terms of checkout sessions — stateful objects that represent a purchase in progress. The session transitions through states as the agent and merchant interact.Create a checkout session (agent side)
Complete payment
paid; on failure, to failed with a reason code.
Fulfillment
Merchants report fulfillment back to Sly; buyers poll or subscribe toacp.checkout.fulfilled webhooks:
Endpoints
| Endpoint | Purpose |
|---|---|
POST /v1/acp/checkouts | Create checkout session |
GET /v1/acp/checkouts | List sessions |
GET /v1/acp/checkouts/:id | Get session state |
PATCH /v1/acp/checkouts/:id | Update (e.g. swap payment method) |
POST /v1/acp/checkouts/:id/complete | Complete payment |
POST /v1/acp/checkouts/:id/cancel | Cancel session |
POST /v1/acp/checkouts/batch | Batch checkout (marketplace baskets) |
POST /v1/acp/checkouts/:id/refund | Refund completed checkout |
Differences from the canonical ACP spec
Sly’s implementation adheres to the Stripe/OpenAI spec, plus:- KYA tier enforcement — agents cannot complete checkouts that exceed their KYA tier limits
- Wallet policies — per-merchant allowlists/blocklists enforce at checkout time
- Composition — checkouts can be funded by UCP tokens, AP2 mandates, or x402 bridged payments
- Approval workflow — checkouts above a policy threshold auto-trigger human approval
When to use ACP
- Merchant is on Stripe Connect or listed in the OpenAI Agent marketplace
- Buyer is a ChatGPT agent or OpenAI-ecosystem agent
- You want card-network-native payment (Visa, Mastercard, Amex)
- You need the Stripe / OpenAI compliance posture out of the box
