Documentation / Payment intents · Updated 16 September 2026
The payment intent API.
Paths below are relative to https://cheatgateway.net/api/v1. All endpoints require a bearer key. Unsupported fields are rejected. Send only synthetic order references; do not send card data or customer personal information.
GET /account
Returns your workspace ID, the key’s scopes, and current capabilities. No additional scope is required.
{
"id": "workspace-uuid",
"environment": "sandbox",
"livemode": false,
"capabilities": {
"sandbox_payments": true,
"live_payments": false,
"webhooks": false
},
"scopes": [
"payments:read",
"payments:write",
"payments:simulate"
]
}POST /payment-intents
Requires payments:write and an Idempotency-Key header of 16–100 letters, digits, underscores or hyphens. Use Content-Type: application/json.
| Field | Type | Rules |
|---|---|---|
| amount_minor | integer | Required. 1–10,000,000 USD cents. |
| currency | string | Required. USD only. |
| reference | string | Required. 1–100 letters, digits, hyphens or underscores. Synthetic order ID only. |
| livemode | boolean | Optional. Must be false if supplied. |
curl https://cheatgateway.net/api/v1/payment-intents \
-H "Authorization: Bearer $CG_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: sandbox-order-00001" \
-d '{"amount_minor":2500,"currency":"USD","reference":"order_00001"}'Returns 201 for a new intent or 200 for an idempotent replay. Replays include Idempotent-Replayed: true. Reusing the same key with different input returns 409. Idempotency is scoped to your workspace and remains valid for the retained intent, including after API key rotation.
{
"id": "pi_test_123e4567-e89b-42d3-a456-426614174000",
"object": "payment_intent",
"livemode": false,
"amount_minor": 2500,
"currency": "USD",
"reference": "order_00001",
"status": "pending",
"created_at": 1789603200000,
"updated_at": 1789603200000
}GET /payment-intents/{id}
Requires payments:read. Returns 200 with the intent object, or 404 if it is not in your workspace.
POST /payment-intents/{id}/simulate
Requires payments:simulate. Send {"outcome":"succeeded"} or {"outcome":"failed"}. Returns the updated intent with 200. Repeating the same outcome is safe. Changing a terminal outcome returns 409.
pending ── simulate(succeeded) ──→ succeeded
pending ── simulate(failed) ────→ failed