Mono Colombia

Fees

The fees you charge your subaccounts on a payin, and how to override them per template or intent.

A fee is what you charge your own subaccount for a payin: a fixed amount, a percentage, or both, deducted from the money credited when the payment arrives. It is your revenue on the collection, not a cost imposed on you — you set the numbers, Mono applies them on the ledger automatically and reports what was charged per payin in calculated_fees.

Set them once at the program level and they apply to every payin; override them per template or per intent when a campaign, a customer, or a single payment needs different numbers.

The three fee types

TypeCharged forActive today
payinReceiving the payment. Applied when the payin is credited to the subaccount.Yes
payin_payer_spreadThe FX conversion on the payer leg (payer currency → template currency).No — needs multi-currency collection.
payin_subaccount_spreadThe FX conversion on the delivery leg (template currency → subaccount currency).No — needs multi-currency collection.

With Bre-B collecting only COP today, the two spread types exist in the contract but are never charged: every calculated_fees you see will contain the payin type only. The spreads become your margin on the conversion once a payment is collected in one currency and accounted in another.

Where fees are configured

Your default fees live in your program configuration, per method: a fixed amount per currency plus a percentage, applied to every payin of that method. They are set up with Mono when payins is enabled for your program. See Methods for everything the program configures.

Overriding fees per template or intent

payin_data.fee_override lets a template — or an individual intent — replace your program default for its own payins:

{
  "payin_data": {
    "fee_override": [
      {
        "type": "payin",
        "fixed": { "amount": 50000, "currency": "COP" },
        "percentage": "0.01",
        "tx_description": "Collection fee — premium campaign"
      }
    ]
  }
}

Three rules govern overrides:

  1. Every fixed amount must be denominated in the currency of the template's subaccount, and be >= 0.
  2. The override replaces the default as a whole per fee type — there is no partial merge. An intent's override wins over its template's.
  3. The values are frozen on each payin at creation: changing a template's override later does not alter the fees of payins already created.

Reading what was charged

Each payin reports what it charged in calculated_fees, keyed by fee type. That is the field to reconcile against: subaccount_amount is already net of it, so the end user sees the amount after your fee, and the difference is what you kept.

Next steps

On this page