Appearance
Fees
Quote fee, tax and total before submitting an operation
POST
/api/v1/tenant/fees/quoteScope wallets:read
Read-only: nothing is charged and no operation is created. The quoteId is valid for five minutes; pass it as feeQuoteId on POST /tenant/payouts to pin the charges. A wallet outside your account is a 404, identical to a nonexistent one.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
operationType | enum | yes | The operation you are about to submit. Only wallet_credit, wallet_debit, payout_b2c and topup_c2b can be quoted. One of wallet_credit, wallet_debit, payout_b2c, topup_c2b, hold, safeguarding_fund, client_funding_deposit, settlement_sweep, wallet_closure, closed_balance_refund, ledger_adjustment, wallet_transfer. |
walletUid | string | yes | The wallet the operation will move money on, as returned by POST /tenant/customers. |
amountMinor | number | yes | Positive integer minor units (e.g. 250000 = ETB 2,500.00); the operation amount before charges. Min 1. |
currency | string | yes | ISO-4217; must equal the wallet's currency. |
railCode | string | null | no | The payment provider's code the operation will use, when it has one (payout, top-up). At most 64 characters. |
Example (generated from the schema)
json
{
"operationType": "wallet_credit",
"walletUid": "01J9Z3K5X8QW2R4T6V8Y0B1C3D",
"amountMinor": 1,
"currency": "ETB"
}Response · 200
| Field | Type | Description |
|---|---|---|
quoteId | string | Pass as feeQuoteId on POST /tenant/payouts to pin these charges while the quote is valid. |
operationType | enum | One of wallet_credit, wallet_debit, payout_b2c, topup_c2b, hold, safeguarding_fund, client_funding_deposit, settlement_sweep, wallet_closure, closed_balance_refund, ledger_adjustment, wallet_transfer. |
walletUid | string | |
currency | string | |
amountMinor | number | Minor units — the amount quoted, as sent. |
feeMinor | number | Minor units — the flat / percentage components. |
taxMinor | number | Minor units — the vat components. |
totalMinor | number | Minor units — amountMinor + feeMinor + taxMinor, what the wallet is debited. |
breakdown | object[] | |
breakdown[].label | string | The component's label in the fee rule. |
breakdown[].type | enum | One of flat, percentage, vat. |
breakdown[].amountMinor | number | Minor units; a component that rounds to zero is listed at 0. |
breakdown[].refundable | boolean | Whether a failed payout refunds this component. |
breakdown[].appliesToLabel | string | null | For vat, the label of the component it applies to. |
ruleVersion | object | null | The fee rule version the quote was priced under; null for a zero-fee operation. |
ruleVersion.uid | string | |
ruleVersion.ruleCode | string | |
ruleVersion.versionNo | number | |
railCode | string | null | The payment provider's code, as sent; null when none was sent. |
validUntil | string | Instant the quote stops being honoured — five minutes from issue. |
Example (generated from the schema)
json
{
"quoteId": "string",
"operationType": "wallet_credit",
"walletUid": "01J9Z3K5X8QW2R4T6V8Y0B1C3D",
"currency": "ETB",
"amountMinor": 0,
"feeMinor": 0,
"taxMinor": 0,
"totalMinor": 0,
"breakdown": [
{
"label": "string",
"type": "flat",
"amountMinor": 0,
"refundable": true,
"appliesToLabel": "string"
}
],
"ruleVersion": {
"uid": "01J9Z3K5X8QW2R4T6V8Y0B1C3D",
"ruleCode": "string",
"versionNo": 0
},
"railCode": "string",
"validUntil": "string"
}Errors
400 401 403 404 429 500 503 — one body shape for all of them, see Errors.