Fees

Learn about how to monetize payment flows with Moov.

There are two types of fees in Moov’s platform:

  • Facilitator fees: Per-transfer fees you can charge your customers, allowing you to make money off of payments
  • Moov fee: Fees charged to your platform account for processing payments using Moov"

Note that for card transfers in particular, the Moov fee can impact how you choose to set up your facilitator fee.

Facilitator fees

Moov makes it easy for you to monetize your payment flows by collecting a facilitator fee when creating a transfer. This fee can be applied to any type of transfer, and the amount specified will be deducted from the transfer so that the destination receives the transfer amount net of fees. The fee amount is credited to your wallet once the transfer is completed.

Moov charges a fee to your platform to process most payments. Depending on the transfer type, the Moov fee may be incurred at the time of the payment. Using the facilitatorFee field in the transfer request gives you the option to:

  • Implement your own customer-facing fee structure
  • Pass along your costs

Transfer types with the card-payment payment method as the source will incur interchange fees that are not finalized by the card network until the transfer is complete. If you choose to cover the transfer costs, fees will be debited from your wallet when the transfer completes to cover the cost of interchange and any additional, agreed upon Moov fee.

Charging fees on transfers

To collect a fee, you can utilize the facilitatorFee field on transfer creation. There are a few different options when specifying the fee amount:

  • total - charge the destination a flat fee for the transfer.
    • For example: if the transfer amount is $100 and the total facilitator fee is $5, the net amount received by the destination is $95, and you will receive $5 in your wallet.
  • markup - pass on the Moov fee you incur at the time of transfer. You can either pass on your exact cost, setting markup to 0, or indicate an additional amount you want to collect on top of your cost.
    • For example: If the transfer amount is $100, the Moov fee is $3, and markup is set to $2, the destination will receive $100 - Moov fee - markup = $95. The net amount of money that will land in the destination is determined once the transfer is complete, since the actual Moov fee may be determined after the response from the payment network.
  • If the facilitatorFee field is left blank, Moov will apply a default fee of $0 and the destination will receive the gross amount of the transfer.

Fee guidelines

  • The total fee amount cannot exceed the transfer amount.
  • If there is no facilitator fee specified in the transfer and Moov charges a fee at the time of transfer (currently only on card payments), Moov will debit your wallet the amount of the Moov fee.
  • If your wallet does not have enough funds to cover the fees, the debits will result in a negative wallet balance.

Implementing fees via the API

Flat fee example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
curl -X POST https://api.moov.io/transfers \
  -H 'Authorization: Bearer {token}' \
  --data-raw '{
	"amount": {
		"currency": "usd",
		"value": 10000
	},
	"source": {},
	"destination": {},
	"facilitatorFee": {
		"total": 400, // oneOf markup or total
	}
}'

Markup fee example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
curl -X POST https://api.moov.io/transfers \
  -H 'Authorization: Bearer {token}' \
  --data-raw '{
	"amount": {
		"currency": "usd",
		"value": 10000
	},
	"source": {},
	"destination": {},
	"facilitatorFee": {
		"markup": 100, // oneOf markup or total
	}
}'

Retrieve fees charged on a transfer

Once a transfer is successfully created, Moov automatically creates subsequent transactions representing the associated fees on that transfer. These fees will not be charged until the transfer successfully reaches the destination. In the event of a failed payment, no fees will be charged.

Flat fee example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
curl -X GET https://api.moov.io/transfers \
  -H 'Authorization: Bearer {token}' \
  --data-raw '{
{
	"amount": {
		"currency": "usd",
		"value": 10000
	},
	"source": {},
	"destination": {},
	"facilitatorFee": { // note that markup is omitEmpty
     "total": 200 
  },

	"moovFee": 200 // omitEmpty
}'

Markup example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
curl -X GET https://api.moov.io/transfers \
  -H 'Authorization: Bearer {token}' \
  --data-raw '{
{
	"amount": {
		"currency": "usd",
		"value": 10000
	},
	"source": {},
	"destination": {
		~~"amount": 9800 // (original amount - facilitatorFee.total)~~
	},
	"facilitatorFee": {
     "markup": 100,
     "total": 200 // based on what we calculate (i.e. markup + moov-fee of 100)
  },
	"moovFee": 100 // omitEMPTY
}'

Flow of funds

Funds flow for no facilitator fee

No specified fee

Funds flow with a specified facilitator fee

Specified fee