This page requires JavaScript to display.

Does this action fit the mandate?

POST /mandates/{id}/check · Mandates · version 2026-09-14

Call this before every action. Scope, ceiling and validity are evaluated together.

You get allowed true or false, with the reason when it is false. allowed: false is a successful call, not an error — the rail did its job. Inspect reason.

This endpoint does not move money. Your system or your PSP settles, or stops.

Base URL

https://api.sidaxis.com/v1 in production, https://sandbox.api.sidaxis.com/v1 in sandbox.

Parameters

NameInTypeRequiredDescription
AuthorizationheaderstringrequiredBearer sk_live_… in production, sk_test_… in sandbox.
Sidaxis-VersionheaderstringoptionalDated version. Pin it in production.
Idempotency-KeyheaderstringoptionalRetrying with the same key never double-consumes a ceiling.
idpathstringrequiredThe mandate being checked.

Request body

FieldTypeRequiredDescription
operationenumrequiredWhat the agent is about to do. Must be in the mandate's scope.
amountnumberoptionalRequired when the ceiling is an amount. Checked against remaining.
currencystringoptionalMust match the ceiling's currency. No conversion is performed.
counterpartystringoptionalChecked against ceiling.counterparties when that list is set.

Example request

{
  "operation": "payment",
  "amount": 240,
  "currency": "USD",
  "counterparty": "acme_ltd"
}

Responses

200 — Refused

Over the ceiling. A successful call: the rail answered, and nothing was consumed or billed.

{
  "allowed": false,
  "reason": "ceiling_exceeded",
  "remaining": 160
}

200 — Allowed

Within the mandate. The receipt records that the answer was given.

{
  "allowed": true,
  "reason": null,
  "remaining": 160,
  "receipt": {
    "id": "rcpt_9f41c7b2",
    "anchor": "0x7c3d91a4f8e2",
    "url": "https://verify.sidaxis.com/r/9f41c7b2"
  }
}

Refusal reasons

ceiling_exceeded, scope_mismatch, mandate_expired, mandate_revoked, counterparty_not_permitted. See errors and refusals.

Errors

not_found, rate_limited. See errors and refusals.

Notes

Never branch on the HTTP status to decide whether an action is permitted. Branch on allowed.

Median under 40 ms in every region.

A refused check is not billed and consumes nothing.

Idempotent: retrying with the same Idempotency-Key returns the original answer.

See also

Unpacking...