Skip to main content

Dynamic sell-rates

Rootline's API offers dynamic pricing capabilities that allow you to adjust your platform fee (sell-rate) based on the specific characteristics and costs (buy-rate) of each payment. Learn how to implement flexible pricing configuration to optimize your revenue while maintaining competitive pricing for your customers.

Understanding buy-rate variability

Buy-rates for payments, also known as payment processing costs vary significantly across:

  • Payment methods (cards, online banking methods, digital wallets);
  • Card types (consumer vs. commercial);
  • Geographic regions (domestic vs. cross-border);
  • Funding types (debit vs. credit);
  • Authentication methods (3DS vs. non-3DS).

For example, commercial cards typically incur higher interchange fees than consumer cards, and cross-border transactions often cost more than domestic ones. To understand more about payment method specifics, please read the dedicated payment method pages like Cards.

Determine your platform fee (sell-rate)

The sell-rate is what you charge your sellers, which should cover both your buy-rate at Rootline (cost price) and your desired margin.

  • Analyze your payment mix and their costs: payment methods used, geographic patterns, type of cards etc.
  • Determine your sell-rate approach: a single rate for all payments vs. a dynamic, method specific and buy-rate dependent fee.

Process the payment and provide the fee later

Most platforms decide to go for a dynamic pricing strategy with sell-rates based on the characteristics of the payment and the payment method used. Rootline offers you a way to process the payment first, and apply your fees after it has been authorized.

To get to know the characteristics of the payment, read the payment response after it is authorized.

GET /payments/pmt_pFJdPDzn97ASbwJQnydJQ
{
"id": "pmt_pFJdPDzn97ASbwJQnydJQ",
"object": "payment",
"created_at": "2025-02-21T11:06:40.610140Z",
"account_id": "acc_5BTNdeSEmsHml77iazsI0r",
"reference": "your-reference",
"amount": {
"currency": "EUR",
"quantity": "10.00"
},
"payment_rails": {
"payment_method": "mastercard",
"card_summary": {
"bin": "550720",
"last_four_digits": "6478",
"funding_type": "credit",
"card_category": "consumer",
"regionalities": [
"domestic"
],
"issuing_country_code": "NL"
},
"three_d_s_server_data": {
"trans_status": "Y",
"authentication_value": "AQIDBAUGBwgJCgsMDQ4PEBESExQ",
"ds_trans_id": "12345678"
}
},
"checkout_status": "succeeded",
"authorizations": [...],
"authentications": [...],
"return_url": "https://rootline.com/pmt_pFJdPDzn97ASbwJQnydJQ",
"splits": [
{
"account_id": "hotel-account-id",
"amount": {
"currency": "EUR",
"quantity": "10.00"
},
"reference": "your-reference",
"id": "pmt_pFJdPDzn97ASbwJQnydJR"
}
],
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
}

In this example you now know that the payment was authorized with a Mastercard domestic consumer card. Say your platform fee for this combination of characteristics is set to € 0.25 + 2%, then you can update the payment accordingly:

info

At this moment only flat rate fees are supported. In this scenario you can provide two flat rate fees: € 0.25 + € 0.20 (2% over € 10.00), or make it one single fee of € 0.45.

PATCH /payments/pmt_pFJdPDzn97ASbwJQnydJQ
curl 'http://payment-api.staging.rootline.com/v1/payments' \
--request PATCH \
--header 'content-type: application/json' \
--header 'x-api-key: [paste-your-api-key]' \
--header 'rootline-version: 2024-04-23' \
--data '{
"reference": "your-reference",
"splits": [
{
"id": "pmt_pFJdPDzn97ASbwJQnydJR",
"fees": [
{
"flat_rate": {
"amount": {
"quantity": "0.25",
"currency": "EUR"
}
}
},
{
"flat_rate": {
"amount": {
"quantity": "0.20",
"currency": "EUR"
}
}
}
]
}
]
}'

To inform you about the updated payment, Rootline will send you a payment.updated event.

Important

There is a 7 hour time limit starting after the payment is authorized to updating the payment.