Payment Methods and Costs

Which payout methods your payees can receive money on, what each one costs, and how fee caps split fees between you and the payee.

A payment method is how a payee receives money: a bank account, a debit card, PayPal and others. The payee chooses it during onboarding; you decide which methods are offered and how much of the fee you cover. This page lists the methods, shows how to read their cost, and explains how fees are split.

Before you start

  • The methods available to your payees are enabled on your account by Payment Labs.
  • Reading costs needs the read permission.

The payout methods

typeMethod
bank-transfer-1 to bank-transfer-5Bank transfer. The variants cover different countries, currencies and banking networks; the payee's bank country and currency decide which ones they can use.
push-to-debit-card-1Instant payout to a debit card.
prepaid-debit-card-1A prepaid debit card issued to the payee.
e-gift-card-1An electronic gift card.
paypalPayPal.
venmoVenmo.
wallet-1-<name>A mobile wallet in the payee's country, for example wallet-1-gcash or wallet-1-mpesa.
virtual-payment-1Used for virtual payments. Payees never choose it.

Treat the list as open: new methods are added over time. Your code should accept a type it does not know.

Who picks what:

  • The payee chooses their payout method. You cannot choose it on a payment.
  • You restrict the methods for a batch with allowedPaymentMethods (see Batches). Payees are only offered methods that the batch allows and that support their country and currency.
  • If a payee's method cannot take a payment, the payment waits in WAITING_PAYMENT_METHOD and the payee is asked to pick another. See Payment Statuses.

Step 1: Read your costs

Get Payment Methods Cost returns the price of each method enabled on your account.

curl "https://api-sandbox.paymentlabs.io/payors/me/payment-methods?destinationCountry=MX&destinationCurrency=MXN" \
  -H "Authorization: Bearer $TOKEN"
{
  "bank-transfer-1": {
    "local": { "cost": 2.5, "initialCap": 2.5, "retryCap": 2.5, "price": { "flat": 2.5 } },
    "wire-fx": { "cost": 15, "initialCap": 15, "retryCap": 15, "price": { "flat": 15 } }
  },
  "paypal": { "cost": "2% + 1.50", "initialCap": 5, "retryCap": 5, "price": { "percent": 0.02, "fixed": 1.5 } }
}
Query parameterEffect
noneEvery method enabled on your account.
destinationCountryOnly methods available in that country (two-letter ISO code), grouped by currency: { "MXN": { ... }, "USD": { ... } }.
destinationCountry and destinationCurrencyOnly methods for that country and currency, not grouped. destinationCurrency needs destinationCountry.

Each method maps to a cost entry. Bank transfers are broken down by corridor:

CorridorMeaning
achUS domestic transfer.
wireInternational wire, same currency.
wire-fxInternational wire with currency conversion.
localLocal transfer in the payee's country.

Each entry has:

FieldMeaning
costThe transfer fee per payout, as a decimal amount in USD. For percentage pricing it is a text such as "2% + 1.50".
priceThe same price in structured form: flat, or percent (a fraction, 0.02 = 2%) with optional fixed, minFee and maxFee. Use it instead of parsing cost. Absent when the price cannot be stated.
initialCapThe most you pay of this fee on a first attempt, in USD. The payee pays the rest.
retryCapThe most you pay when a returned payment is sent again, in USD.

How fees work

A payment can carry two kinds of fee:

  • Service fee: a per-payment fee charged when you create the payment, shown as chargedServiceFee. It is refunded if you cancel the payment within its grace period (refundedServiceFee).
  • Transfer fee: the cost of the payout method, calculated when the payment is sent. It is split between you and the payee by the fee cap.

To see the exact split for one payment before you send it, call Submit Payment Dry Run (see Creating and Submitting Payments). After the payment is sent, totalPayorFees, totalPayeeFees and totalFxLosses on the payment show what was charged, as integers in the payment currency's minor units (1250 is 12.50). They are returned only by Search Payments. totalPayeeFees is every fee deducted from the payee. For the breakdown per attempt, List Payee Payments returns each attempt's payeePaymentFee, payeeServiceFee and payeeIdentityVerificationFee, with the exchange rate (fxRate) and the amount the payee received (resultingSourceAmount, destinationAmount).

Fee caps

The fee cap is the most you pay toward a payment's transfer fee. Anything above it is deducted from what the payee receives. A cap of 0 means the payee pays the whole fee; a cap at or above the fee means you pay all of it.

The cap for a payment is chosen in this order:

  1. The feeCap you send when you submit (a decimal string in the payment's currency, for example "5.00").
  2. The cap configured on your account for the payee's payout method (the initialCap and retryCap that Get Payment Methods Cost reports).
  3. Your account's default cap, which can differ by payment category and between first attempts and resends.

When a returned payment is sent again, the exchange rate and fees can differ from the first attempt. fxDifferenceCoverage decides who covers that difference (payor or payee). See Payment Statuses.

Errors and edge cases

ErrorMeaningWhat to do
400 INVALID_REQUESTdestinationCurrency was sent without destinationCountry.Add the country.
400 INTERNAL_SERVER_ERROR, 500 INTERNAL_SERVER_ERRORPricing could not be loaded for your account.Retry later. If it persists, contact Payment Labs.
404 NOT_FOUNDYour account could not be found.Check the credential you are using.

Next steps


What’s Next

Next: Batches.

Did this page help you?