---
title: "Send a controlled test purchase"
method: POST
path: "/destinations/{destination}/test-purchase"
tags: ["Operations"]
---

# Send a controlled test purchase

`POST /destinations/{destination}/test-purchase`

## Request

- Base URL: `https://plainrouter.com/api/v1`
- URL: `https://plainrouter.com/api/v1/destinations/{destination}/test-purchase`
- Auth: HTTP bearer

Creates an identity-free synthetic purchase and sends it only to the selected destination while test mode is enabled.

## Path parameters

- `destination` string, required

## Request body

- object
  - `value` string, nullable
  - `currency` string, nullable
  - `order_id` string, nullable

## Response `200`

Meta accepted the test purchase.

- object
  - `event_id` string, required
  - `status` 'queued' | 'sent' | 'held' | 'accepted' | 'retrying' | 'failed:auth' | 'failed:permanent' | 'failed:unknown' | 'expired' | 'skipped:consent' | 'skipped:no_destination' | 'skipped:duplicate' | 'skipped:lifecycle', required
  - `trace_id` string, nullable, required

## Other responses

- `401`: Invalid or missing Server secret.
- `404`: Resource not found.
- `422`: Test mode is disabled or request validation failed.
- `502`: Meta did not accept the test purchase.

---

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