Skip to main content
Each transaction can include a transaction fee, banking fee, and network fee. Your fee profile controls what the customer pays. Your invoicing profile controls what you owe MoonPay Enterprise.

What to Show Your Customer

Show the customer only the fees deducted from their money. Fees settled later are between you and MoonPay Enterprise.

Before payment: market Autoramp

When your customer opens their virtual account, show what a deposit costs on each rail. A USD virtual account accepts several rails, and each rail can carry a different banking fee. Read the Autoramp with GET /api/autoramps/{id} to get its fee_profile_id and rails:
Autoramp
Then read that fee profile with GET /api/fee-profiles?fee_profile_ids={fee_profile_id} for the banking fee on each incoming rail:
Fee profile
Then preview the transaction and network fees for an amount. Pass the Autoramp’s fee_profile_id so the preview uses the same pricing:
Request
Quote preview
The preview prices a USD deposit as ACH, so take the banking fee for each rail from the fee profile. Divide fee.transaction_fee by amount_in to show it as a percentage. Your customer sees:
Market Autoramps price each deposit when it arrives, so show the rate as an estimate.

Before payment: quote-based Autoramp

A quote locks the amount, rate, and fees. Show the quote as it is. Your customer must send exactly amount_in: deposits that match no active quote are returned to sender. See Quotes. Request a quote for the customer’s Autoramp with GET /api/autoramps/{autoramp_id}/quote:
Request
Quote
Attach it with POST /api/autoramps/{autoramp_id}/quotes. Your customer sees:
With Return, the quote is valid only while the rate is locked. With Slippage, a deposit after the lock executes at the market rate if it is within slippage_tolerance_in_bips, so the amounts can differ from the quote. See Expiry policies.

After payment: the completed transaction

When the transaction completes, show what was deducted from fee_breakdown: A 1,000 USD ACH deposit to the same virtual account returns this from GET /api/autoramp-transactions:
Transaction
Your customer sees:
A transaction from a quote has the same fields and carries the quote_id. When the deposit arrives while the rate is locked, exchange_rate, destination_amount, and fee_breakdown match the quote.
Transaction
The examples are trimmed to the fields this section uses.

Do not show to customer

These fields either repeat a fee or hold fees settled later. Fees settled later don’t change what the customer pays. They are settled between you and MoonPay Enterprise on your monthly invoice, so use them for your own accounting.
  • total_fee and the transaction’s top-level fee. They include fees settled later, so they overstate what the customer paid.
  • partner_fee. It is already part of transaction_fee.
  • iron_fee, when iron_fee_settlement is settledLater.
  • Entries in network_fees_with_settlement with settlement set to settledLater, such as gas you subsidize.
  • Banking fees from your invoicing fee profile. They are not in the API response. Find them on your monthly invoice and in the transaction details on the dashboard.

Fee Fields

Quote and transaction responses return the following fee fields: Banking and network fees from your transactional fee profile that are settled later remain available in network_fees_with_settlement, together with their settlement method.
Banking fees on your invoicing fee profile are not in these fields. If you do not charge the customer for a rail, network_fees_with_settlement still lists it with a 0 amount (for example WireOut), so you can see which rail the transaction used.

Fee Profiles

MoonPay Enterprise uses two fee profile types:
  • The invoicing fee profile contains the fees you owe MoonPay Enterprise. We configure this profile based on your agreement.
  • A transactional fee profile contains the fees you charge your customers. You can create multiple profiles and assign them to different customers or Autoramps.
When you create a transactional fee profile with POST /api/fee-profiles, its Iron fee settings are inherited from your invoicing fee profile. The API does not let you change the Iron fee, its settlement method, the minimum fee, or whether network fees are enabled. Contact MoonPay Enterprise to change these invoicing settings.

Settlement Methods

Fee settlement has two possible values:
  • deductedImmediately: The fee is deducted from the transaction amount. The customer receives the net amount.
  • settledLater: The fee is not deducted from the transaction. It is added to your monthly invoice.
Partner fees created with transaction_fee_bips are configured for immediate deduction. You choose network_fee_settlement when you create the transactional fee profile. MoonPay Enterprise configures the Iron fee settlement method on your invoicing profile.

Monthly Invoicing

The transaction_fee collected from your customer is netted against the iron_fee you owe MoonPay Enterprise. For percentage-based fees calculated on the same transaction amount: Banking fees, network fees, minimum commitments, and other contracted charges are settled separately and also appear on the monthly invoice when applicable.

Deducted and Invoiced Fees on the Dashboard

The transaction details on the dashboard show two cards:
  • Deducted Fees: what came out of the customer’s money on this transaction.
  • Invoiced Fees: what this transaction adds to your monthly invoice.
A fee that appears in both cards is not charged twice. Invoiced Fees shows only what is left after the amount already deducted from the customer. If a rail costs you 1.00 USD and your customer paid 0.50 USD for it, the dashboard shows 0.50 USD deducted and 0.50 USD invoiced. If your customer paid nothing for the rail, the full 1.00 USD is invoiced.