---
title: "Checkout Returned"
method: POST
path: "/billing/checkout/{ref}/returned"
---

# Checkout Returned

`POST /billing/checkout/{ref}/returned`

## Request

- Base URL: `https://api-docs.session-exchange.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api-docs.session-exchange.com/billing/checkout/{ref}/returned`
- Auth: none declared

The buyer's browser is back from Stripe (the page's <CommerceReturn/> calls this once). Body:
{outcome: "success" | "cancel"} — which of the two return URLs it landed on; "cancel" is also
Stripe's "back to merchant" arrow. Records `funnel.checkout.returned{outcome}` and, for a cancel,
`funnel.checkout.cancelled`. Changes no checkout state (the webhook stays the source of truth for
payment); once per ref and outcome. Only the buyer's own checkout (else 404, like the status).

## Path parameters

- `ref` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/session-exchange/apis/a4sx.md) · [All operations](https://skmtc.dev/session-exchange/apis/a4sx/llms.txt) · [OpenAPI document](https://skmtc.dev/session-exchange/apis/a4sx/revisions/abaefc33dfc7?raw)
