Configuring Retail Fees

Recovery of fees is an important aspect of any fintech proposition: what a tenant charges their customer can differentiate their services. Eclipse has a highly flexible fees engine that supports a range of fee options.

Common fees

The tables below list the fees most tenants configure, grouped by mechanism. Example values are illustrative — set your own for each fee. Some fees are configured with the simple fees.amount.config string syntax; others need a small piece of custom Java logic attached to a wallet type or a retail billing event. The See column links to the section that explains the relevant mechanism.

Wallet funding fees

Common feeConfigurationExampleSee
Cash deposit (retail)fees.amount.config.Pay.ZA_PNP_DEPOSIT6ASelf service simple fee configuration
Wallet top-up by cardfees.amount.config.Pay.ZA_MASTERPASS_IN.CARD.SERVER2.5PSelf service simple fee configuration
Wallet top-up by EFT/bank deposit (Nedbank)fees.amount.config.Pay.GLOBAL_BANK.EFT.SERVER.ZA_Nedbank0ASelf service simple fee configuration
Wallet top-up by EFT/bank deposit (Standard Bank, normal EFT)fees.amount.config.Pay.GLOBAL_BANK.EFT.SERVER.ZA_Standardbank10ASelf service simple fee configuration
Wallet top-up by EFT/bank deposit (Standard Bank, instant/RTC)fees.amount.config.Pay.ZA_SBSA_RTC0ASelf service simple fee configuration

Wallet withdrawal fees

Common feeConfigurationExampleSee
Cash withdrawal (retail cash-out)fees.amount.config.Wdr.ZA_PNP.CASH5ASelf service simple fee configuration
Bank/EFT withdrawal payout (Nedbank)fees.amount.config.Wdr.ZA_NEDBANK_EFT.EFT5ASelf service simple fee configuration
Immediate EFT withdrawal payout (Nedbank)fees.amount.config.Wdr.ZA_NEDBANK_EFT_IMMEDIATE.EFT10ASelf service simple fee configuration
Bank/EFT withdrawal payout (Standard Bank)fees.amount.config.Wdr.ZA_SB_EFT10ASelf service simple fee configuration
Immediate EFT withdrawal payout (Standard Bank)fees.amount.config.Wdr.ZA_SB_EFT_IMMEDIATE15ASelf service simple fee configuration
PayShap withdrawal payout (Standard Bank)fees.amount.config.Wdr.ZA_SBSA_PAYSHAP2ASelf service simple fee configuration

Card transaction fees

Common feeConfigurationExampleSee
Card ATM withdrawalfees.amount.config.cwd.{domestic/foreign}5ACard specific fees
Card POS/e-commerce purchasefees.amount.config.pur.{domestic/foreign}2PCard specific fees
Card purchase with cashbackfees.amount.config.pwc.{domestic/foreign}5ACard specific fees
Card cashback (no purchase)fees.amount.config.chb.{domestic/foreign}2ACard specific fees
Card pre-authorisationfees.amount.config.pra.{domestic/foreign}0ACard specific fees
Card cash advancefees.amount.config.cad.{domestic/foreign}10ACard specific fees
ATM balance enquiryfees.amount.config.bai.{domestic/foreign}1ACard specific fees
Declined transaction feedebit.decline.transaction.feePUR-401=2ACard specific fees
FX markup on foreign card transactionsinternationalMarkUpFees3PFX markup fee

Recurring & lifecycle fees

These are configured with a small piece of custom Java logic attached to a wallet type, rather than the fees.amount.config string syntax.

Common feeConfigurationMechanismSee
Inactive/dormant wallet feedormancyNotificationGracePeriodInDays / dormancyFeeEnforcementGracePeriodInDaysgrace periods (days) + custom Java dormancy logicAdvanced fee configuration
Tiered or conditional pricing (for any fee above)the same fees.amount.config.* key as the fee it replacescustom Java logic in place of the DSL stringAdvanced fee configuration
Monthly wallet feemonthlyFeeLogicSetIdcustom Java logic (monthlyFeesLogic)Advanced fee configuration
Peer-to-peer / cross-tenant wallet transfer feesendTransferLogicSetId / receiveTransferLogicSetIdcustom Java logic (postTransferLogic)Advanced fee configuration
KYC fee on a wallet's first transactionsendTransferLogicSetId / receiveTransferLogicSetIdcustom Java logic (postTransferLogic)Advanced fee configuration
Fee augmentation / split across wallets (e.g. tax)sendTransferAugmentationLogicSetId / receiveTransferAugmentationLogicSetIdcustom Java logicAdvanced fee configuration
📘

Note:

Several rows share the same configuration attribute (sendTransferLogicSetId/receiveTransferLogicSetId) — the attribute only attaches a wallet logic set to a wallet type. What that logic set actually does (charge a P2P fee, a cross-tenant fee, a KYC fee, or something else) is determined entirely by the custom Java logic written into it.

Card lifecycle & notification fees

These are triggered by a retail billing event rather than a transaction.

Common feeConfigurationMechanismSee
Card issuance feeRetail billing event ISSUANCE_CARDcustom Java logicAdvanced fee configuration
Card replacement feeRetail billing event REPLACE_CARDcustom Java logicAdvanced fee configuration
Card PIN reset feeRetail billing event RESET_CARD_PINcustom Java logicAdvanced fee configuration
SMS notification feeRetail billing event SMScustom Java logicAdvanced fee configuration

Self service simple fee configuration

Eclipse supports a range of simple to configure fees for all withdrawal, payment and top up services. Tenant configs related to fees that can be configured through the admin portal are:

fees.wallet.config.{Wdr|Pay}.{TransactionType} - this is the wallet ID where the fees should be collected

fees.amount.config.{Wdr|Pay}.{TransactionType} - this determines the fee logic

Self service fee logic covers:

  1. Fixed cost fee - e.g. 5A
  2. Fee based on % of base amount e.g 2P
  3. A combination of fixed cost + % fee e.g. 2A,0.3P

Fees can also be rounded UP, DOWN or Bankers Round (round half-even). To specify rounding, add| where Mode is D for down, U for up and B for Bankers. E.g. 2A,0.3P|2U would mean 2 + 0.3 percent rounded up to 2 decimal places.

These can be configured directly in the admin portal or with the assistance of the EFT Corporation technical team. See the Tenant Config Reference, for full details of each fee configuration.

self service fees can also be configured based on any event generated by Eclipse with similar logic above.

fees.wallet.config.{EventType} - this is the wallet ID where the fees should be collected

fees.amount.config.{EventType} - this determines the fee logic

📘

Note:

To use event type fees, a matching entry must be created in the retail billing config for each event type. Contact your EFT Corporation account manager to configure event-based fee entries.

Card specific fees

Fees and limits can be configured for a range of transaction types:

  • pur: Purchase
  • cwd: ATM
  • pra: Pre-Auth
  • pwc: Purchase with Cashback
  • chb: Cashback
  • cad: Cash Advanced
  • bai: ATM Balance Enquiry

The following attributes can be set as tenant attributes, wallet type or wallet level.

AttributesDescription
fees.amount.config.{transaction_type}.{domestic/foreign}Fees charged for different transaction types, for domestic and foreign (international) transactions
debit.decline.transaction.feeFees are charged for different transaction types when a decline occurs
📘

Note:

Per-transaction-type limits (monthly, per-transaction, daily, and daily velocity) are also configurable for these card transaction types — see Limit Configuration for the postilion.{transaction_type}.domestic.debitCard*Limit attributes.

All corresponding transaction types require a configuration to be set for the destination wallet and fees wallet to credit when transactions are successful:

AttributesDescription
source.wallet.config.postilion.refWallet to debit when a refund (REF) is done
destination.wallet.config.postilion.{transaction_type}Wallet to credit when a transaction is successful
fees.wallet.config.postilion.{transaction_type}Wallet to credit with fees when a transaction is done

FX markup fee

For card transactions where the transaction currency differs from the wallet's currency, Eclipse can apply an additional FX markup fee on top of any standard transaction fee. This is configured with the wallet type attribute:

internationalMarkUpFees - the fee logic (using the same fixed/percentage/combined syntax as other fees) applied to cross-currency card transactions

This is a separate mechanism from fees.amount.config, and only applies when the transaction is identified as international and the transaction currency differs from both the wallet currency and the settlement currency.

Fees on reversed transactions

By default, a fee charged on a transaction is not automatically reversed if the transaction itself is reversed. To allow fee reversal, set the following wallet type attribute:

feesReversalAllowed=true

Advanced fee configuration

In addition to this, custom fee models can be configured including:

  • tiered models
  • Inter tenant and cross tenant transfers dependent on wallet types – e.g. a tenant want to charge to transfer from digital to card wallets, but not from digital to digital wallets.
  • Monthly wallet fees and activation or KYC fees.
  • Complex fee augmentation – e.g. once a fee is determined a tenant want to split it across different wallets for transaction fees and tax fees.
  • Event based charging for ad hoc events

For more details on advanced fee configuration please refer here.

Fee hierarchy

Fees can be set on the following levels:

  • Wallet
  • Wallet Type
  • Tenant

Fee Priority

When determining which fee configuration applies, Eclipse follows a priority order:
Wallet → Wallet Type → Tenant. The table below outlines the logic.

TenantWallet TypeWalletFee Based On
YesNoNoTenant
YesYesNoWallet Type
YesYesYesWallet

Permissions Required

PermissionDescription
WalletFeesRequired to create or update any wallet-level attribute starting with fees. on a wallet directly (e.g. via the admin portal or API).

Did this page help you?