---
title: "Mint a prepaid key with a Stripe Checkout link for a fixed top-up, or top up the key in Authorization: Bearer dck_…. The key is shown once. A human pays by card at checkoutUrl; the balance is credited when the payment completes and is spent by sending the key on paid calls. Balances neither expire nor are refunded. Not charged."
method: POST
path: "/prepaid/checkout"
---

# Mint a prepaid key with a Stripe Checkout link for a fixed top-up, or top up the key in Authorization: Bearer dck_…. The key is shown once. A human pays by card at checkoutUrl; the balance is credited when the payment completes and is spent by sending the key on paid calls. Balances neither expire nor are refunded. Not charged.

`POST /prepaid/checkout`

## Request

- Base URL: `https://app.difficat.com/api/v1`
- URL: `https://app.difficat.com/api/v1/prepaid/checkout`
- Auth: none declared

## Request body

- CheckoutRequest
  - `amountUsd` integer, required: One of the offered top-up amounts (x-service-info.x-prepaid.amountsUsd).

## Response `201`

Key and Checkout link

- CheckoutResponse
  - `key` string: The new prepaid key (dck_…). Shown once, never recoverable; absent when an existing key is topped up.
  - `keyId` string, required: Short public id of the key.
  - `checkoutUrl` string, uri, required: Stripe Checkout, for a human.
  - `amountUsd` integer, required
  - `checkoutExpiresAt` string, date-time, required

## Other responses

- `400`: amountUsd is not an offered amount
- `401`: The Bearer key is unknown
- `429`: Checkout limit for this address reached (Retry-After)
- `502`: Stripe refused the session; no key was minted

---

[API](https://skmtc.dev/difficat/apis/difficat-agent-api.md) · [All operations](https://skmtc.dev/difficat/apis/difficat-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/difficat/apis/difficat-agent-api/revisions/49c291e77659?raw)
