---
title: "Simulate payment (sandbox only)"
method: POST
path: "/api/checkouts/{id}/simulate-payment"
tags: ["checkouts"]
---

# Simulate payment (sandbox only)

`POST /api/checkouts/{id}/simulate-payment`

## Request

- Base URL: `https://api.depixapp.com`
- URL: `https://api.depixapp.com/api/checkouts/{id}/simulate-payment`
- Auth: HTTP bearer

Completes a SANDBOX checkout as if it were paid (fires checkout.completed when a callback URL is set). Live checkouts are 403 sandbox_only. Requires scope `merchant_write` on the API-key path.

## Path parameters

- `id` string, required

## Response `200`

Simulated as paid.

- SuccessResponse: Generic success acknowledgment.
  - `success` true, required: Always true on success.

## Other responses

- `401`: Missing/invalid credentials. `invalid_api_key` for a failed sk_* lookup (revoked/expired/unknown); `invalid_token` for a bad or missing JWT/Authorization header.
- `403`: Live checkout (sandbox_only), missing scope, or no merchant profile.
- `404`: Checkout not found — includes rows owned by another account (ownership is never disclosed).
- `409`: The checkout cannot transition to completed from its current status.
- `429`: Rate limited. Beyond the endpoint's own limit when set (`rate_limited`), API-key calls are also bounded by the shared per-merchant budget (`merchant_rate_limited`, default 30 req/min across all endpoints) and by the key's own rate limit when configured (`rate_limited`). Retry after `retry_after` seconds (also in the Retry-After header).

---

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