---
title: "Credits Return"
method: GET
path: "/billing/credits/return"
---

# Credits Return

`GET /billing/credits/return`

## Request

- Base URL: `https://sleipnir.tv` (the document declares no server; this is the origin it was published from)
- URL: `https://sleipnir.tv/billing/credits/return`
- Auth: none declared

Stripe redirects here after a credit top-up. Apply immediately for UX
(mirrors /billing/return's sync-now-webhook-reconfirms pattern); the
webhook and the reconcile loop are the other two idempotent paths.
Credits always go to the session's metadata user_id (set server-side at
creation), never to the visitor, so a shared/leaked return URL cannot
misdirect funds.

## Query parameters

- `session_id` string

## Cookies

- `relay_session` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/sleipnir/apis/relay-control-plane.md) · [All operations](https://skmtc.dev/sleipnir/apis/relay-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/sleipnir/apis/relay-control-plane/revisions/79829f6945a4?raw)
