Data model
Fee and limit settings are stored in thefees_limits table, represented by the FeesLimit model:
fees_limits table columns
Transaction types
Fees and limits are configured independently for each transaction type:| Tab in UI | Internal name | Requires payment method |
|---|---|---|
deposit | Deposit | Yes |
withdrawal | Withdrawal | Yes |
transfer | Transferred | No |
exchange | Exchange_From | No |
request_payment | Request_Received | No |
Navigating to fees & limits
Fees and limits are configured per currency. Start at Settings > Currencies (/admin/settings/currency), then open a currency’s settings.
The fees/limits page URL follows this pattern:
deposit, withdrawal, transfer, exchange, request_payment
How fees are calculated
For each transaction, Doss applies both fee components:0 independently. Setting charge_fixed = 0 and charge_percentage = 0 makes the transaction free.
Configuring deposit and withdrawal fees
Deposit and withdrawal fees are set per payment method. The form lists every active payment method available for the currency type (fiat or crypto), loaded from the platform-wide payment method settings.Open the fee settings
Go to
/admin/settings/feeslimit/deposit/{currency_id} or /admin/settings/feeslimit/withdrawal/{currency_id}.Fill in values for each payment method
For each listed payment method, set:
- Charge percentage — percentage fee applied to the transaction amount
- Charge fixed — flat fee charged per transaction
- Min limit — minimum allowed transaction amount (cannot be blank; defaults to
1.00) - Max limit — maximum allowed transaction amount (leave blank for no upper limit)
- Has transaction — whether this payment method should be active for live transactions
For the default currency,
has_transaction is automatically set to Yes regardless of the checkbox value.Configuring transfer, exchange, and request payment fees
These transaction types use a single fee record per currency (no payment method dimension).Open the fee settings
Go to
/admin/settings/feeslimit/transfer/{currency_id}, /admin/settings/feeslimit/exchange/{currency_id}, or /admin/settings/feeslimit/request_payment/{currency_id}.Fiat vs crypto settings
The available payment methods shown in the fee configuration form differ by currency type:- Fiat currencies — payment methods drawn from
getPaymoneySettings('payment_methods')['web']['fiat']['deposit'](or['withdrawal']) - Crypto currencies — payment methods drawn from
getPaymoneySettings('payment_methods')['web']['crypto']['deposit'](or['withdrawal'])
decimal_format_amount preference (typically 2), while crypto uses decimal_format_amount_crypto (typically 8).
Per-merchant-group fee overrides
Merchant groups allow per-group fee customisation. When a merchant’s group changes, fees can be adjusted automatically. Navigate to Settings > Merchant groups (/admin/settings/merchant-group) to create and edit groups, then use the POST /admin/merchants/change-fee-with-group-change endpoint to apply the group’s fee rules to the merchant.
Fetching fee details via AJAX
Two AJAX endpoints support the fee settings UI:| Endpoint | Purpose |
|---|---|
POST /admin/settings/get-feeslimit-details | Retrieve current fee records for a currency + transaction type |
POST /admin/settings/get-specific-currency-details | Retrieve currency details along with its fee records |
status (200 on success, 401 if not found) and the feeslimit data.