Checkout Sessions
Stripe ACP
Checkout Sessions
Create, update, complete, and cancel ACP checkout sessions
POST
Checkout Sessions
All paid endpoints on this page accept optional
memo (≤ 1000 chars) and
decisionContext (object) body fields. Stored on the receipt for debugging
and audit — see Audit Trail.Session Lifecycle
completed and canceled are terminal states — no further updates, completions, or cancellations are allowed.
Sessions expire after 30 minutes. Expired sessions cannot be completed or updated.
Create Session
/acp/checkout_sessions
Request
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
line_items | array | Yes | Products to purchase (currently supports one item) |
line_items[].item.id | string | Yes | Product ID from the manifest |
line_items[].item.metadata | object | Yes | Input parameters matching the product’s input_schema |
buyer.email | string | No | Buyer’s email address |
buyer.name | string | No | Buyer’s display name |
idempotency_key | string | No | Prevents duplicate session creation |
Response (201)
Retrieve Session
/acp/checkout_sessions/:id
order object:
Update Session
/acp/checkout_sessions/:id
ready_for_payment.
buyer and line_items. Switching the item.id to a different product updates pricing automatically.
Complete Session
/acp/checkout_sessions/:id/complete
Response (200)
request_id to poll job status via GET /v1/requests/{request_id}.
Error Responses
| Status | Reason |
|---|---|
| 400 | Session not in ready_for_payment state |
| 400 | Missing SharedPaymentToken |
| 400 | Session expired |
| 402 | Stripe payment failed |
| 404 | Session not found |
Cancel Session
/acp/checkout_sessions/:id/cancel
ready_for_payment or not_ready_for_payment.