Limitations

What the API does not do today, what returns static data, and what differs between the sandbox and production.

Who this is for

Evaluators and integration teams who need to know, before they design, which capabilities are not available to client applications today. Every item comes from the API Reference. Nothing on this page is a commitment to a date.

Static or placeholder data

CapabilityStatusAPI Reference
Operator dashboard: summary, issuance volumes, activity feedReturns static placeholder data. Do not build on these figures.GET /api/dashboard/summary, GET /api/dashboard/issuance, GET /api/dashboard/activity
Reserve attestationFigures are static until a core banking integration supplies them. Amounts are returned as JSON numbers, unlike the decimal strings used elsewhere.GET /api/reserves/attestation
Reserve attestation snapshotReturns static placeholder data.GET /api/reserves/attestation/snapshot

Not available on the client API

CapabilityWhat this means for your integration
Connection to your core banking systemThe platform does not post to or read from your core banking system, and it does not coordinate the cash leg with the token leg. Your systems post both legs, submit operations and reconcile outcomes. See Issue and redeem.
KYC and AML screening inside the platformThe platform does not screen customers or payments. Your bank screens in its own systems before it calls the API.
Cumulative limits, time-of-day windows and screening results in policy rulesPolicy rules test the amount, currency or asset of a single operation. They cannot yet test running totals, the time of day or screening results. See Policy, approvals and audit.
Bulk or point-in-time balance readsGET /api/accounts/{accountRef}/balances returns one account's current balance. There is no bulk read and no balance as at a past time.
Tamper-evident audit historyThe audit history is append-only. Hash-chained records and a write-once store held by the bank are not yet available. See Audit and evidence.
Policy simulation (dry run)There is no external endpoint that tests a draft policy against a sample operation. Test policy changes with isolated accounts and controlled operations in a non-production environment; activation is not a dry run.
Listing an account's locksNo endpoint lists locks. The lockId is returned only in the response to the LOCK submission and by GET /api/transactions/{transactionId}. Store it when you create the lock.
Resolving a breakOutstanding breaks can be read with GET /api/transactions/breaks. No operation resolves or updates one.
General smart-contract administration and FX swapsThe contract repository describes role grants, upgrades, token-wide pause, allowlisting and FXSwap, but the external HTTP contract exposes no corresponding customer endpoints. Use the supported deployment, account-control and token-operation workflows.
PayScript payment-action catalogueThe public contracts describe script import, parameters, triggers and execution requests, but do not publish the complete supported payment-action names and argument signatures. Obtain an approved action reference before writing payment code.
Automation run outcomesPOST /api/automations/{automationId}/executions accepts a run with 202. No client endpoint returns the run's steps or outcome, and no webhook event reports it.
Balance check at submissionBalances are not checked when an operation is submitted. An operation for more than the account holds is accepted and then fails during settlement.
Date-range filter on the operation logGET /api/transactions filters by state, accountRef and txType only.
Per-event-type webhook payload schemasThe data field of a webhook event is not yet described per event type.
Machine client authenticationMachine clients use the identity provider's OAuth 2.0 client-credentials grant. The token endpoint and credential issuance depend on your deployment; confirm them during onboarding. See Authentication.
JWS_ES256 webhook verificationVerification requires the trusted issuer and key-set configuration for your environment. Staging has a documented key set; a universal production location and automatic signing-key rotation are not provided. Use HMAC_SHA256 where supported, or configure and verify JWS before accepting events.

Operation vocabulary and submission routes

ValueWhereStatus
RECEIVEDOperation stateRetired. Operations submitted before it was retired may still report it.
FREEZE, UNFREEZEOperation txTypeAvailable through POST /api/accounts/{accountRef}/controls; rejected by POST /api/transactions. Confirm authorised roles during onboarding.
DEPLOYOperation txTypeAvailable through POST /api/contracts; rejected by POST /api/transactions.
HELDOperation stateParked at the insufficient-balance gate, distinct from AWAITING_APPROVAL.
TRANSACTIONAutomation triggerTypeAccepted by the script schema, but the public contract does not establish that this trigger is executed. Validate it in your assigned environment before relying on it.
APIApproval request sourceTypeReserved. Not written today.
DEACTIVATEDUser statusNo endpoint sets it.

Policy-response recovery

The settlement service's configured policy-response timeout is not currently enforced. An operation can remain POLICY_PENDING if no decision arrives, and recovery requires an operator. Alert on overdue operations and reconcile their status before considering any replacement.

Sandbox compared with production

Record which network, custody, signing, policy, approval and webhook components are enabled in your sandbox. A successful authentication request does not verify the settlement path.
Use the sandbox for functional tests. Confirm production timing, limits and retention separately; sandbox observations are not production commitments.
The examples follow the published 1.0.0 contract. Pin the version assigned to your environment and confirm the production version before release.

Evaluation arrangements to agree

Cross-institution settlement, cross-border corridors, correspondent legs and securities delivery-versus-payment are not established as sandbox workflows by this customer API. Ask your Quant contact for the current supported evaluation scope.

Screening remains a bank-side responsibility. Live reserve attestation requires a separately agreed core-banking connection; current report figures are static. Reset is operator-assisted, and a hosted event receiver must be agreed rather than assumed. Confirm any sandbox-specific approval expiry, automation timing or retry settings in the handover pack; observations do not establish production timings.

Worked example

A lock's identifier is available only from the submission response or a read of the operation. Store params.lockId from this response. It is the value a later RELEASE or CANCEL must name.

POST /api/transactions HTTP/1.1
Host: api.qfp.quantnetwork.net
Authorization: Bearer <access token>
API-Version: 1.0.0
Content-Type: application/json
Idempotency-Key: 9c4d2f18-73ba-4e6c-8f05-2d17ab903e64

{
  "txType": "LOCK",
  "assetId": "GBP",
  "accountRef": "ACC-0001",
  "counterpartyRef": "ACC-0002",
  "amount": "100.00",
  "params": {
    "expiry": "2027-01-01T00:00:00Z",
    "lockRef": "INV-88421"
  }
}
HTTP/1.1 202 Accepted
Content-Type: application/json

{
  "transactionId": "9c4d2f18-73ba-4e6c-8f05-2d17ab903e64",
  "txType": "LOCK",
  "assetId": "GBP",
  "accountRef": "ACC-0001",
  "customerRef": "CUST-0001",
  "counterpartyRef": "ACC-0002",
  "amount": "100.00",
  "params": {
    "expiry": "2027-01-01T00:00:00Z",
    "lockRef": "INV-88421",
    "lockId": "b28f1a4c-9d3e-4f27-8a56-1e0c7b9d42a1"
  },
  "state": "POLICY_PENDING",
  "createdAt": "2026-08-06T09:29:10.285Z",
  "updatedAt": "2026-08-06T09:29:10.285Z"
}

View in API Reference

Errors and edge cases

  • An operation for more than the account holds returns 202 and later ends in FAILED. Treat only CONFIRMED as settled. See Operations and their lifecycle.
  • Filtering by a value the lifecycle does not produce returns an empty page, which does not indicate an error.
  • If you lose a lockId, list the account's LOCK operations with GET /api/transactions filtered by accountRef and txType=LOCK, and read each one.

Related pages


Did this page help you?