---
title: "Create a card top-up link"
method: POST
path: "/billing/top-up/card-link"
tags: ["billing"]
---

# Create a card top-up link

`POST /billing/top-up/card-link`

Purchase credits by dollar amount. amountCents is the dollar amount in cents (e.g. 500 = $5).

Default (no savedCardId): returns a checkout URL from the selected payment
provider for hosted checkout.

When savedCardId is set: the referenced vaulted card is charged off-session on
the same provider (no redirect) and checkoutUrl is empty on success. checkoutUrl
is only populated when the provider requires an interactive step (e.g. a 3DS/SCA
re-authentication) to complete the charge. savedCardId and saveCard=true are
mutually exclusive. Requires workspace role owner or admin.

## Headers

- `Idempotency-Key` string

## Request body

- TopUpUsingCardLinkRequest
  - `amountCents` integer, required

## Response `200`

Successful response.

- CheckoutLink
  - `checkoutUrl` string, required — Empty unless status is ACTION_REQUIRED.
  - `credits` integer, required — Credits that will be added to the account after payment
  - `sessionId` string, required
  - `status` 'COMPLETED' | 'PENDING' | 'ACTION_REQUIRED', required

## Other responses

- `401` — Missing or invalid access token.
- `403` — The token lacks the required scope or access to the resource.
- `404` — The resource does not exist or is not visible to the caller.
- `422` — The request body or parameters are invalid.
- `429` — Rate limit exceeded. Retry after the indicated delay.
- `502` — The upstream data service returned an error.

---

[API](https://skmtc.dev/streamloop/apis/streamloop-api.md) · [All operations](https://skmtc.dev/streamloop/apis/streamloop-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/streamloop/streamloop-api/revisions/7f30ccbac1b1/schema)
