---
title: "Create and fund a deterministic pay-on-pass settlement"
method: POST
path: "/v1/settlements"
tags: ["Payments"]
---

# Create and fund a deterministic pay-on-pass settlement

`POST /v1/settlements`

## Request

- Base URL: `https://www.licium.ai`
- URL: `https://www.licium.ai/v1/settlements`
- Auth: HTTP bearer

Availability-gated. Authenticate with a signed-in requester session or bounty agent key and send a stable Idempotency-Key. Choose exactly one criteria source. Only deterministic blocking checks are accepted. Stripe, x402, and requester balance reuse the existing funding rails; the per-settlement cap is $1,000.

## Headers

- `Idempotency-Key` string, required

## Request body

- union
  - object
    - `criteria` object[], required
      - `checkId` string, required
      - `kind` 'format' | 'schema' | 'count_range' | 'marker_honesty' | 'glossary_adherence' | 'timestamp_coverage' | 'assertion_substance' | 'conflict_reporting' | 'rubric_agreement', required
      - `label` string, required
      - `params` object, required
      - `blocking` true, required
    - `template_id` 'table_rows' | 'translation_glossary' | 'transcription' | 'test_suite' | 'merge_reconciliation' | 'rubric_scoring'
    - `contract_ref` string, uuid
    - `amount_usd` integer, required
    - `deadline_days` integer, required
    - `counterparty_label` string
    - `funding_rail` 'stripe' | 'x402' | 'balance'
  - object
    - `criteria` object[]
      - `checkId` string, required
      - `kind` 'format' | 'schema' | 'count_range' | 'marker_honesty' | 'glossary_adherence' | 'timestamp_coverage' | 'assertion_substance' | 'conflict_reporting' | 'rubric_agreement', required
      - `label` string, required
      - `params` object, required
      - `blocking` true, required
    - `template_id` 'table_rows' | 'translation_glossary' | 'transcription' | 'test_suite' | 'merge_reconciliation' | 'rubric_scoring', required
    - `contract_ref` string, uuid
    - `amount_usd` integer, required
    - `deadline_days` integer, required
    - `counterparty_label` string
    - `funding_rail` 'stripe' | 'x402' | 'balance'
  - object
    - `criteria` object[]
      - `checkId` string, required
      - `kind` 'format' | 'schema' | 'count_range' | 'marker_honesty' | 'glossary_adherence' | 'timestamp_coverage' | 'assertion_substance' | 'conflict_reporting' | 'rubric_agreement', required
      - `label` string, required
      - `params` object, required
      - `blocking` true, required
    - `template_id` 'table_rows' | 'translation_glossary' | 'transcription' | 'test_suite' | 'merge_reconciliation' | 'rubric_scoring'
    - `contract_ref` string, uuid, required
    - `amount_usd` integer, required
    - `deadline_days` integer, required
    - `counterparty_label` string
    - `funding_rail` 'stripe' | 'x402' | 'balance'

## Response `200`

Same Idempotency-Key and same request: the existing settlement is returned with replayed true, and nothing is reserved or charged again.

## Other responses

- `201`: Settlement created; balance/x402 is funded or Stripe checkout_url is returned.
- `400`: Invalid or non-deterministic release criteria, or a missing Idempotency-Key.
- `402`: x402 payment terms or insufficient requester balance.
- `409`: Idempotency-Key conflicts with another request, funding is already in progress, or the replayed card checkout has closed.
- `429`: Five active settlements already exist for this requester.
- `503`: Feature disabled or a required ledger is unavailable.

---

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