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
| Capability | Status | API Reference |
|---|---|---|
| Operator dashboard: summary, issuance volumes, activity feed | Returns static placeholder data. Do not build on these figures. | GET /api/dashboard/summary, GET /api/dashboard/issuance, GET /api/dashboard/activity |
| Reserve attestation | Figures 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 snapshot | Returns static placeholder data. | GET /api/reserves/attestation/snapshot |
Not available on the client API
| Capability | What this means for your integration |
|---|---|
| Connection to your core banking system | The 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 platform | The 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 rules | Policy 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 reads | GET /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 history | The 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 locks | No 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 break | Outstanding breaks can be read with GET /api/transactions/breaks. No operation resolves or updates one. |
| General smart-contract administration and FX swaps | The 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 catalogue | The 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 outcomes | POST /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 submission | Balances 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 log | GET /api/transactions filters by state, accountRef and txType only. |
| Per-event-type webhook payload schemas | The data field of a webhook event is not yet described per event type. |
| Machine client authentication | Machine 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 verification | Verification 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
| Value | Where | Status |
|---|---|---|
RECEIVED | Operation state | Retired. Operations submitted before it was retired may still report it. |
FREEZE, UNFREEZE | Operation txType | Available through POST /api/accounts/{accountRef}/controls; rejected by POST /api/transactions. Confirm authorised roles during onboarding. |
DEPLOY | Operation txType | Available through POST /api/contracts; rejected by POST /api/transactions. |
HELD | Operation state | Parked at the insufficient-balance gate, distinct from AWAITING_APPROVAL. |
TRANSACTION | Automation triggerType | Accepted 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. |
API | Approval request sourceType | Reserved. Not written today. |
DEACTIVATED | User status | No 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
- Submit a token operation ·
POST
Errors and edge cases
- An operation for more than the account holds returns
202and later ends inFAILED. Treat onlyCONFIRMEDas 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'sLOCKoperations with GET /api/transactions filtered byaccountRefandtxType=LOCK, and read each one.
Related pages
Updated 2 days ago

