Custom Pay-in Fees
Overview
Custom pay-in fees allow merchants to add additional fee line items to purchase checkouts. These fees appear as separate line items to the customer during checkout and are added to the subtotal before payment processing.
Common use cases include:
- Regional taxes: Apply country-specific VAT or sales tax (e.g., 19% Germany VAT, 20% UK VAT)
- Service fees: Add platform or convenience fees
- Regulatory fees: Include fees that must be tracked separately from the base amount
Pay-in fees are added to the subtotal and processed as part of the total transaction. The merchant receives the full amount (subtotal + fees) in their settlement.
Configuration Methods
There are three ways to configure custom pay-in fees:
Fees passed via SDK or JWT take precedence over merchant dashboard configuration. If you pass customPayInFees via the SDK or JWT, the dashboard settings will be ignored for that transaction.
Configure Fees in Merchant Dashboard
Use the dashboard to set default fees that apply to all checkouts.
Configure Fee Details
For each fee, configure:
- Line Item Label: The text displayed to the customer (max 30 characters). Example: “Service Fee” or “VAT”
- Fee Type: Choose between a fixed dollar amount or a percentage of the subtotal
- Fee Amount: The fee value (in dollars for fixed fees, or percentage for percentage-based fees)
The preview shows how fees will display on a $100 subtotal. Fixed fees appear as their configured amount, while percentage fees are calculated based on the subtotal.
Configure Fees via SDK
For dynamic fee application (e.g., applying different VAT rates based on customer country), pass fees directly to the Coinflow SDK.
Fee Configuration Structure
Each fee requires the following configuration:
React Example
The fee values shown above (VAT rates, service fee amounts) are examples only and do not reflect actual values for your integration. Consult with your tax advisor for applicable rates and contact the Coinflow integrations team if you need assistance configuring fees for your specific use case.
Configure Fees via JWT
For server-to-server integrations, you can include customPayInFees in a JWT token. This is the most secure approach as it prevents client-side tampering with fee values.
When tokenizing your checkout parameters, include the customPayInFees array in your request:
Then pass the returned checkoutJwtToken to the Coinflow SDK or Checkout API:
When using the SDK without JWT tokenization, pass customPayInFees directly as a prop (see Configure Fees via SDK). For production environments with sensitive fee configurations, we recommend using JWT tokens to prevent tampering.
How Fees Are Calculated
Fees are calculated and displayed in the checkout UI as follows:
Calculation Example
For a $100.00 subtotal with:
- A fixed $2.00 service fee
- A 19% VAT
Percentage fees are calculated based on the original subtotal, not the running total. Multiple fees do not compound on each other.
Customer Experience
During checkout, customers see the fee breakdown as separate line items:
- Subtotal - The base purchase amount
- Custom Fee(s) - Each configured fee appears with its label and amount
- Service Fees - Coinflow processing fees (if applicable)
- Total - The final amount charged
This transparent breakdown helps customers understand exactly what they’re paying for.
Best Practices
Use Clear, Descriptive Labels
Choose line item labels that clearly communicate what the fee is for. Examples:
- “Service Fee” or “Platform Fee” for general fees
- “VAT (19%)” or “Sales Tax” for tax-related fees
- “Convenience Fee” for payment processing surcharges
Consider Regional Requirements
Some jurisdictions require specific fee disclosures or have regulations about surcharging. Ensure your fee configuration complies with local laws.
Test Before Going Live
Use the sandbox environment to verify fees display correctly and calculate as expected before enabling in production.

