---
title: "Get authoritative state for this user's checkout"
method: GET
path: "/credits/me/topups/{sessionId}"
tags: ["Widget"]
---

# Get authoritative state for this user's checkout

`GET /credits/me/topups/{sessionId}`

## Request

- Base URL: `https://api.paywithlocus.com/api`
- URL: `https://api.paywithlocus.com/api/credits/me/topups/{sessionId}`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer and API key in header `X-Locus-Publishable-Key`

Returns the authoritative state of one of the calling end user's own top-up checkout sessions. Poll it after checkout instead of trusting the browser redirect.

## Path parameters

- `sessionId` string, required

## Headers

- `X-Locus-Session-Id` string

## Response `200`

Checkout state

- TopupStatus
  - `success` unknown, required
  - `sessionId` string, required
  - `state` 'pending' | 'completed' | 'expired', required
  - `paymentStatus` string, required
  - `fulfillment` 'awaiting_payment' | 'processing' | 'ready' | 'expired' | 'failed': Ledger state. `completed` means Stripe was paid; credits are spendable once this is `ready`.

## Other responses

- `400`: Stable top-up validation, velocity, or ownership error

---

[API](https://skmtc.dev/paywithlocus/apis/locus-pro-api.md) - [All operations](https://skmtc.dev/paywithlocus/apis/locus-pro-api/llms.txt) - [OpenAPI document](https://skmtc.dev/paywithlocus/apis/locus-pro-api/revisions/aab8fa5d6cef?raw)
