---
title: "Pay for a plan with USDT/USDC (one-time; priced in USD)"
method: POST
path: "/v1/public/crypto-order"
tags: ["purchase"]
---

# Pay for a plan with USDT/USDC (one-time; priced in USD)

`POST /v1/public/crypto-order`

## Request

- Base URL: `https://outcometick.com`
- URL: `https://outcometick.com/v1/public/crypto-order`
- Auth: none required

Spends money or credits. An agent must show the quote to the user and get explicit approval before calling this. Then poll GET /v1/public/crypto-order/{id} and claim the key with POST /v1/public/crypto-claim.

## Request body

- object
  - `planId` string, required
  - `asset` 'USDT' | 'USDC'
  - `apiKey` string: Existing key to top up

## Response `200`

OK

- CryptoOrder: Send exactly `amount` of `asset` on BNB Smart Chain (BEP-20) to `address` before `expiresMs`. The exact amount identifies the payment.
  - `orderId` string
  - `asset` 'USDT' | 'USDC'
  - `amount` string: Exact amount to send, 6 decimals
  - `address` string
  - `expiresMs` integer
  - `ttlMs` integer
  - `usd` number
  - `qrSvg` string, nullable
  - `kind` string, nullable
  - `credits` integer, nullable

## Other responses

- `400`: Bad plan or asset
- `401`: apiKey not recognised
- `404`: Plan not available
- `409`: Plan cannot be combined with that key
- `429`: Rate limited; retry after the Retry-After header
- `503`: Temporarily unavailable; retry

---

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