Handling Payout Fees

Overview

When initiating a payout via the Payout API, you can control how fees are distributed between the merchant and the payout recipient using the feePaymentMode field.

feePaymentMode is an enum parameter that determines who bears each type of fee for a given payout. There are two types of fees involved in every payout:

  1. Processing fee (processingFee) — Confirmo's PSP fee
  2. Network fee (computedNetworkFee) — the blockchain transaction fee

Available modes

MERCHANT — Merchant pays all fees (default)

  • The merchant is charged the full requested amount plus all fees. The recipient receives exactly the requested amount.

RECIPIENT — Recipient pays all fees

  • The merchant is only debited the requested amount. Both the processing fee and network fee are deducted from the amount sent to the recipient.

NETWORK_FEE_RECIPIENT — Split fees

  • The merchant pays the processing fee, while the network (blockchain) fee is deducted from the amount sent to the recipient. This mode is useful when merchants want to absorb the predictable PSP cost but pass on the variable blockchain fee to the end user.

API Response

After a payout is created, the following fields in the API response reflect how fees were applied:

debitAmount: Total amount deducted from the merchant's Confirmo balance

processingFee: Confirmo PSP fee

computedNetworkFee: Blockchain network fee

fee: Total fee (processingFee + networkFee) — always shown regardless of mode

Reconciling fee payment modes with API response

MERCHANT: debitAmount = requestedAmount + processingFee + networkFee

  • Sent amount = requested amount in payout

RECIPIENT: debitAmount = requestedAmount

  • Sent amount = requested amount in payout - processingFee - networkFee

NETWORK_FEE_RECIPIENT: debitAmount = requestedAmount + processingFee

  • Sent amount = requested amount in payout - networkFee
💡

The feePaymentMode field replaces the legacy treatAsGrossAmount boolean. Both fields are still supported, but we recommend using feePaymentMode going forward as it offers more granular control. If both fields are sent in the same request, feePaymentMode takes precedence.



What’s Next