Skip to content

Fees

What a charge or payout would cost, before you create it.

Endpoint What it does
POST /v1/fees/quote Quote the fees on a charge or payout

Try any of them in the API tester.

POST /v1/fees/quote

Prices a charge or a payout without creating it, so you can show the fee or decide whether to go ahead. Nothing is written and no money moves.

The figures are computed by the same routing and pricing a real charge or payout runs: your plan or negotiated rate, minimum and maximum fees, tax, commission and fee_bearer all apply. A charge created straight after with the same amount, currency, channel, institution and fee_bearer carries the same fee, customer_amount and merchant_amount; a payout, the same fee and debited.

A QUOTE IS NOT A RESERVATION. A transaction is priced when it is created, by the rules in force then, and quoted_at says when this one was priced.

Name the network or bank when you know it: the quote is then routed exactly as the transaction would be.

Requires collection.create to quote a collection and payout.create to quote a payout. A quote is refused for the same reasons, with the same error codes, as the transaction itself: an unsupported currency or channel is 422, a combination with no pricing is 409 unpriced_combination, a channel your account is not enabled for (live keys) is 403 capability_disabled, and no available partner is 503 no_route_available, which is worth retrying.

Authentication: a secret key (server-side only) with the scope collection.create, or a secret key (server-side only) with the scope payout.create.

Field Type Required Allowed values and limits What it is
amount integer yes min 1; e.g. 10000 In minor units, meaning what amount means on the operation being priced: what a charge asks for, or what a payout’s recipient receives. 10000 is GHS 100.00.
bank string no at most 30 characters Optional. The bank’s code, as on a charge or payout.
bank_id string (uuid) no Optional. An alternative to bank; send one, not both.
channel string yes One of: mobile_money, bank, card The channel the transaction would use. card is for collections only.
currency string yes exactly 3 characters; e.g. GHS ISO 4217 code of amount. Supported currencies are listed at /v1/reference/currencies.
direction string yes One of: collection, payout collection to price a charge (POST /v1/charges), payout to price a payout (POST /v1/payouts).
fee_bearer string no One of: merchant, customer Collections only, and only if your account permits per-transaction choice, exactly as on POST /v1/charges. Omit it to get your account’s configured bearer.
momo_network string no at most 30 characters; e.g. mtn Optional. The network’s code, as on a charge or payout. Send it when you know it: the transaction is then routed, and priced, exactly as one to that network would be.
momo_network_id string (uuid) no Optional. An alternative to momo_network; send one, not both.
Terminal window
curl -X POST https://sandbox.paysigna.com/v1/fees/quote \
-H "Authorization: Bearer sk_test_…" \
-H "Content-Type: application/json" \
-d '{
"amount": 10000,
"channel": "mobile_money",
"currency": "GHS",
"direction": "collection",
"momo_network": "mtn"
}'
Field Type What it is
amount integer The amount you sent, in minor units.
channel string The channel priced.
currency string ISO 4217 code of every amount in this quote.
customer_amount integer Collections only. What the customer would be charged, including any fee they bear.
debited integer Payouts only. What would be taken from your balance: the amount plus the fee.
direction string What was priced. One of: collection, payout
environment string The environment priced: that of the API key you used. A test key quotes what a test charge would be charged. One of: test, live
fee object
fee.bearer string Who pays the fees: merchant (deducted from merchant_amount, or added to debited on a payout) or customer (added to customer_amount). One of: merchant, customer
fee.commission integer Commission you accepted for a company that referred you, in minor units. Follows bearer, like platform. Always 0 on a payout.
fee.platform integer PaySigna’s fee, in minor units.
fee.tax integer Tax on the fee, in minor units.
fee.total integer platform + tax + commission: everything you or your customer pay on top of, or out of, amount.
merchant_amount integer Collections only. What would be credited to your balance.
object string
quoted_at string (date-time) When this was priced. A quote is not a reservation or a promise: a transaction is priced when it is created, by the rules in force then. Re-quote if your pricing may have changed.
  • 400: the request is malformed
  • 401: the key is missing, wrong or revoked
  • 403: the key lacks the scope, or your account may not do this
  • 409: it conflicts with the current state, or the idempotency key was used for a different request
  • 422: a field is invalid; errors names it
  • 429: too many requests; wait for Retry-After
  • 500: Internal Server Error
  • 503: the payment partner is unreachable; safe to retry

Every error is a JSON problem with a stable code. See Errors.