Reference · Transfers
Quote a transfer
Project the totals and fee lines a transfer would produce, before committing to it.
POST/v1/transfers/quote
Authorization: Bearer ak_test_… · Application API key
semantic: quote_projection_no_reservation
This read needs refs from objects you hold; the docs' own refs live in the exhibition, not your bench. Compose it in the playground against your own world.
Key capabilities
- TransferQuoteRead
Conditional, gating specific request features; a request that uses one without it is refused:
- TransferAppFeeInstructionRequest
- TransferApplicationPaysAppFeeInstructionRequest
- TransferReceiverPaysAppFeeInstructionRequest
- TransferSplitAppFeeInstructionRequest
- TransferExternalCostGuardRequest
Request body fields
- sourceAccountRef
- sourceEndpointRef
- sourceHoldingRef
- destination
- valueUnit
- amountMinorUnits
- feeInstruction · optional
Response fields
- quoteBasisTransferRef
- totals
- lines
- externalCostEvidence
Contract notes
Sharp edges
- A quote reserves nothing. If the assessed material moves before you create the transfer, the created totals can differ from the quoted ones.
- Pass the quote back as acceptedQuote on create when you want the initiation judged against the basis you showed your user.
Wire receipt
Captured from the real gateway by the scenario suite; nothing here is composed by hand.
A quote prices the move without reserving anything; it is a projection, not a commitment.
Request
POST /v1/transfers/quote
Authorization: Bearer ak_test_…
Content-Type: application/json
{
"sourceAccountRef": "1baa9144-8a36-3fb5-bfab-395db835f1ae",
"sourceEndpointRef": "23f410d0-11b3-3cb0-aaa8-911e90aa2f2b",
"sourceHoldingRef": "fcc8c901-938d-343b-ac27-497cfa374333",
"destination": {
"kind": "internal-endpoint",
"accountRef": "281b43e7-a6c6-34b6-a488-15266d29d607",
"endpointRef": "2638f318-9348-3985-aea2-1819b9864dd0",
"holdingRef": "99869eff-193b-3006-a0cc-785174320c13"
},
"valueUnit": {
"kind": "fiat",
"currency": "NGN"
},
"amountMinorUnits": "4000"
}Response · 200
{
"status": 200,
"body": {
"value": {
"quoteBasisTransferRef": "ac474ebc-11d7-3d80-8ccf-34c60e2b1b52",
"operationId": "00000000-0000-0000-0000-00000000015f",
"sourceAccountRef": "1baa9144-8a36-3fb5-bfab-395db835f1ae",
"sourceEndpointRef": "23f410d0-11b3-3cb0-aaa8-911e90aa2f2b",
"sourceHoldingRef": "fcc8c901-938d-343b-ac27-497cfa374333",
"destination": {
"kind": "internal-endpoint",
"accountRef": "281b43e7-a6c6-34b6-a488-15266d29d607",
"endpointRef": "2638f318-9348-3985-aea2-1819b9864dd0",
"holdingRef": "99869eff-193b-3006-a0cc-785174320c13"
},
"valueUnit": {
"kind": "fiat",
"currency": "NGN"
},
"amountMinorUnits": "4000",
"requestedAt": "2026-07-11T05:20:22.251813Z",
"observedAt": "2026-07-11T05:20:22.251813Z",
"noFeeReason": "no_configured_fee",
"totals": [],
"lines": [],
"externalCostEvidence": []
},
"freshness": "Current",
"visibility": "Full",
"evidence": [
{
"receiptRef": "ac474ebc-11d7-3d80-8ccf-34c60e2b1b52",
"source": "VaeRuntime"
}
]
},
"evidence": [
{
"receiptRef": "ac474ebc-11d7-3d80-8ccf-34c60e2b1b52"
}
]
}captured 2026-07-11 · gateway 0.1.0 · Money moves · Quote the transfer
Refused requests
Refusals are stated as plainly as capabilities; these were captured live, the same way.
This key was minted without TransferQuoteRead; the platform answers with the exact permission it lacks.
Request
POST /v1/transfers/quote
Authorization: Bearer ak_test_…
Content-Type: application/json
{
"sourceAccountRef": "fd99d2c2-153a-4f79-8942-ad571cc02071",
"sourceEndpointRef": "037cf7c5-8117-4f9b-ae94-aeb9ea943b66",
"sourceHoldingRef": "15ccdc23-af46-4fb0-a3c2-6755ba2b327a",
"destination": {
"kind": "internal-endpoint",
"accountRef": "d3aae042-72c1-4fa2-84fc-5e0541e37e0d",
"endpointRef": "0cc6b300-0764-46f1-9f6a-6c47613f24d4",
"holdingRef": "3613193e-0fc1-4aae-9954-a56a7a1f4cc0"
},
"valueUnit": {
"kind": "fiat",
"currency": "NGN"
},
"amountMinorUnits": "1000"
}Response · 403
{
"status": 403,
"problem": {
"kind": "Forbidden",
"status": 403,
"code": "forbidden-PermissionDenied",
"message": "PermissionDenied",
"evidence": [
{
"receiptRef": "b9f0e40e-6ea7-38ef-b677-9b6690e67cd8"
},
{
"receiptRef": "4ce6558b-daa5-3ba0-b95e-165ba8d5f5ff"
}
]
},
"evidence": [
{
"receiptRef": "b9f0e40e-6ea7-38ef-b677-9b6690e67cd8"
},
{
"receiptRef": "4ce6558b-daa5-3ba0-b95e-165ba8d5f5ff"
}
]
}captured 2026-07-11 · gateway 0.1.0 · The gate holds · The capability gate
See also
generated from openapi.json · gateway 0.1.0 · sandbox
