Fees
The charges around your money movements — what you charge your users, what Mono charges you, and where to see both.
A fee is a charge attached to a money movement: a payout, a payin or a transfer between subaccounts. Some fees are yours — the price you charge your own users or customers for using your product, debited from their subaccounts and credited to you. Others are Mono's — the price of using the platform, debited from your own accounts. Every fee is recorded next to the operation that triggered it, with the rule that priced it and the exact amount, so you can always reconcile what was charged and why.
How much a fee costs is not hard-coded: it is decided by a fee policy, a pricing rule you manage per kind of fee and per group of accounts. This page explains fees themselves; Fee policies explains how you set the prices.
Two sides: your fees and Mono's fees
Fees you charge (owner: tenant) | Fees Mono charges you (owner: mono) | |
|---|---|---|
| Who pays | Your users or customers, from their subaccounts | You, from your own accounts |
| Who receives | You | Mono |
| Who sets the price | You, through your fee policies | Mono, as agreed in your commercial terms |
| Where you see them | calculated_fees on the operation, and the fees listing | The fees listing with owner=mono |
Both sides use the same fee types and the same mechanics. The only difference is who pays whom.
Fee types
Each fee has a type that says what it is charged for. The types available today, and the service that triggers each one:
| Fee type | Service | Charged when | Charged by |
|---|---|---|---|
bank_transfer | Payouts | A payout to a bank account is created. | You and Mono |
bank_transfer_gmf | Payouts | A payout to a bank account is created, to pass on the GMF — Colombia's tax on financial movements, 0.4% (the "4 × 1000"). | You and Mono |
payin | Payins | A payin is credited to the subaccount. | You |
account_to_account_fx | Ledger transfers | A transfer between two subaccounts in different currencies is made. A fixed charge for the conversion. | You |
account_to_account_fx_spread | Ledger transfers | The same transfer. Your margin on the exchange rate, embedded in the rate applied. | You |
A fee type also fixes how the fee can be charged — see How a fee is charged — and which properties of the operation its pricing rules can look at — see Conditions.
How a fee is charged
Every fee carries a processing_type and a processing_subtype that describe when and how it lands in the ledger:
| Processing | Meaning |
|---|---|
inline / add_posting | Charged as its own movement inside the operation's transaction. The most common case: the fee appears next to the payout, payin or transfer that caused it. |
inline / upcharge | Added on top of the operation's amount. Used by account_to_account_fx_spread, where the margin is embedded in the exchange rate. |
inline / deduct | Taken out of the operation's amount, so the receiving side gets the amount minus the fee. |
inline / new_tx | Charged right away, in a transaction of its own. |
deferred / new_tx | Charged later, in a transaction of its own. |
Each fee type supports specific combinations; a fee policy picks among them. See the fee types table in Fee policies.
Lifecycle of a fee
A fee follows the operation that triggered it:
| State | Meaning |
|---|---|
created | Priced when the operation was created; nothing charged yet. |
pending | Waiting for the operation to move forward. |
held | The amount is reserved on the account until the operation settles. |
approved | Charged. |
declined | The operation failed before the charge; the fee was never charged. |
reversed | Charged, then returned — for example because the operation itself was reversed. |
Where fees show up
- On the operation. Payouts, payins and ledger transfers return the fees they charged in
calculated_fees, keyed by fee type, with the amount of each one. That is the field to reconcile against per operation. - In the fees listing.
GET /v1/core/feeslists every fee charged on your accounts — yours and Mono's — with the policy and the rule that priced it, its state and the operation that triggered it. Filter by owner, type, state, account, policy, origin or date range. - Overrides. Some operations let you replace the policy's price for that single operation:
fee_overrideon payins andoverride_feeson ledger transfers. The fee then reportsoverridden: true, andoverridden_fieldstells what you sent.
Amounts
Fee amounts, like every amount in the Core API, are expressed in the smallest unit of the currency: 900000 cents in COP is 9.000,00 COP. Percentages are decimal fractions sent as strings: "0.004" is 0.4%.
Next steps
- Fee policies — how to set the price of each fee, and for whom.
- Conditions — the properties and operators your pricing rules can use.
- Fees API reference — the endpoints to list fees and manage policies.