---
title: "The free checkout test. Test your checkout: Add a 100% off code and our agent buys your plan with it. A short private drive of your product's pay step: our agent signs up, buys your plan with the code (or in your checkout's test mode), uses one paid feature, cancels and deletes the account. Free for a product you've proved yours; one you've added but not proved counts with the free checks (429 rate_limited, scan_budget_reached), and its report opens once it's proved. One at a time per domain, its subdomains included (409 check_running), 2 per domain every 30 days (429 rate_limited with next_at), and a ceiling on all pay checks a day (429 rate_limited). 403 not_your_product: add the domain first (POST /api/claims); 403 claim_not_verified: a login (kind sandbox) needs the product proved yours, a code doesn't"
method: POST
path: "/api/pay-check"
tags: ["Orders"]
---

# The free checkout test. Test your checkout: Add a 100% off code and our agent buys your plan with it. A short private drive of your product's pay step: our agent signs up, buys your plan with the code (or in your checkout's test mode), uses one paid feature, cancels and deletes the account. Free for a product you've proved yours; one you've added but not proved counts with the free checks (429 rate_limited, scan_budget_reached), and its report opens once it's proved. One at a time per domain, its subdomains included (409 check_running), 2 per domain every 30 days (429 rate_limited with next_at), and a ceiling on all pay checks a day (429 rate_limited). 403 not_your_product: add the domain first (POST /api/claims); 403 claim_not_verified: a login (kind sandbox) needs the product proved yours, a code doesn't

`POST /api/pay-check`

## Request

- Base URL: `https://agentdrives.com`
- URL: `https://agentdrives.com/api/pay-check`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

## Request body

- object
  - `url` string, uri
  - `tool` string: Or your product's directory slug
  - `pay` object, required: Let our agent buy your plan, at your own checkout (optional on an Audit Drive, required on a Payment proof). kind code: your discount code, that leaves $0.50 a purchase: our card pays that on the order, at cost, and cancels the plan (with authorise: true; on an Audit Drive the purchase is in the price and one code works up to 10 times until 120 days after the report); on the free checkout test a 100% off code; sandbox: a login to your checkout's test mode or sandbox. Sealed, never shown back, deleted after the drive that used it
    - `kind` 'code' | 'sandbox', required
    - `value` string: code: 6 to 64 letters, digits, dots, dashes or underscores; sandbox: the login, up to 2,000 characters

## Response `201`

Queued

- object
  - `order` Order
    - `id` string
    - `product` string: The id you order with: free, audit (an Audit Drive; a renewal answers audit with renewal_of), monthly or yearly (a Monthly drive bought before 18 Oct 2026, now retired), stack, stack3, builder, team, pay_check; findings and report: an order of the retired Findings or Full report. GET /api/me's orders keep the stored ids: drive an Audit Drive, verified_month or verified the Monthly drive, quick Findings, report a Full report
    - `report_url` string: A report delivered: its page in the dashboard
    - `status` 'requested' | 'paid' | 'queued' | 'running' | 'done' | 'failed' | 'past_due' | 'cancelled': past_due: a Monthly drive renewal failed; it is active again once paid. failed: paid, but the drive and its automatic retry failed; a person drives it again or refunds it
    - `tool_slug` string, nullable
    - `url` string, nullable
    - `followup_available` boolean
    - `followups_left` integer
    - `rivals` string[], nullable: An Audit Drive: its rivals, compared privately
    - `target_level` integer, nullable: An Audit Drive: the level the owner aims for, shown as their goal, never a promise
    - `renewal_of` string, nullable: A renewal: the Audit it renews
    - `renewal` object, nullable: A done Audit: its renewal ($199), open from 11 months after its report until 13
      - `price_cents` integer
      - `opens` string, date-time
      - `closes` string, date-time
      - `open` boolean
    - `drive_order` string, nullable: A subscription from before 10 Oct 2026 that came with a Drive: that order
    - `keep_from` string, date-time, nullable: The Monthly drive: the day it started
    - `keep_cents` integer, nullable: The Monthly drive: its price per period, excl. VAT
    - `legacy_keep` boolean: A subscription from before 10 Oct 2026: it keeps its price and terms until it ends
    - `offers_ok` boolean: A free check: the box for the monthly report and offers was ticked
    - `pay` object, nullable: What you gave so our agent buys your plan: never the value
      - `kind` 'code' | 'sandbox' | 'seat'
      - `hint` string, nullable: A code's last two characters
      - `status` 'waiting' | 'handed' | 'done' | 'removed': waiting: kept for the drive; handed: a drive has it now; done: that drive ended and it is deleted; removed: you removed it, or the order ended first
      - `at` string, date-time, nullable
      - `mailed_at` string, date-time, nullable: A seat: when we sent you the address our agent signed up with
    - `check_state` unknown
    - `check_reason` string, nullable: A free check that failed or is retrying: why, in plain words, and what to do next
    - `terms` string, nullable: The date of the terms the order was bought on (YYYY-MM-DD)
    - `business` boolean, nullable: A paid order: you confirmed you buy for your business
    - `company` string, nullable
    - `vat_id` string, nullable
    - `plan_choice` 'include' | 'self_refund' | 'none' | 'null', nullable: The owner's paid plan on an Audit Drive
    - `plan_name` string, nullable
    - `plan_cents` integer, nullable: The plan's monthly price: the drive's budget
    - `plan_line_cents` integer: What the plan line took at checkout (include)
    - `plan_spent_cents` integer, nullable: What the drive spent on the plan, net of what the product refunded
    - `plan_refunded_cents` integer: What went back of the plan line
    - `plan_status` 'waiting' | 'bought' | 'not_bought' | 'settled' | 'by_hand' | 'null', nullable
    - `plan_result` object, nullable: What the drive recorded: bought, charged, currency, used, cancel, refund, charged_after_cancel
  - `note` string

## Other responses

- `400`: Error as problem details (RFC 9457) with a machine-readable `error` and a `fix` that says what to do next
- `403`: Error as problem details (RFC 9457) with a machine-readable `error` and a `fix` that says what to do next
- `409`: Error as problem details (RFC 9457) with a machine-readable `error` and a `fix` that says what to do next
- `429`: Error as problem details (RFC 9457) with a machine-readable `error` and a `fix` that says what to do next

---

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