---
title: "How a checkout went"
method: GET
path: "/v1/checkout/basket/{basket_id}"
tags: ["Checkout"]
---

# How a checkout went

`GET /v1/checkout/basket/{basket_id}`

## Request

- Base URL: `https://api.placementapi.com`
- URL: `https://api.placementapi.com/v1/checkout/basket/{basket_id}`
- Auth: none required

Public and token-gated, because the buyer may have no account yet. Poll after returning from the card form. A wrong token is a 404, not a 403. On `partial`, credits for unplaced lines stay on the buyer's balance. Says nothing else about the customer.

## Path parameters

- `basket_id` string, required

## Query parameters

- `token` string, required

## Response `200`

OK

- object
  - `status` string: pending | paid | placed | partial | failed | abandoned.
  - `total_credits` integer
  - `fee_cents` integer
  - `charge_cents` integer
  - `balance_used_credits` integer
  - `lines` object[]
    - `offer_id` string
    - `domain` string, nullable
    - `price_credits` integer
    - `order_id` string, nullable
    - `cancellable` boolean
    - `error` string, nullable
  - `dashboard_url` string
  - `email_hint` string, nullable: Masked.

## Other responses

- `404`: `not_found`.
- `503`: `server_misconfigured` when the store is not configured; `upstream_unfunded` when the measurement provider's prepaid balance is exhausted (fresh profiles, gap maps and SERPs pause; cached results and catalogue are unaffected); `upstream_unavailable` on a provider error; `payments_unavailable` when card payments are not configured.

---

[API](https://skmtc.dev/placementapi/apis/placement-api.md) · [All operations](https://skmtc.dev/placementapi/apis/placement-api/llms.txt) · [OpenAPI document](https://skmtc.dev/placementapi/apis/placement-api/revisions/fc4e7866eaf7?raw)
