Pricing overview

Get clear insights into Klarna’s pricing with final transaction rates, detailed fee breakdowns, and the Price Plans API for accurate cost management and reconciliation.
9 min read

How pricing works

When a transaction is confirmed, Klarna issues rate details specific to the transaction in what is referred to as a "promise". These rate details appear in the confirm_payment request API response and are final. The application of these fees depends on the number of captures and the captured amount, as both variable and fixed fees are applied per capture.
Integration requirement
It is important not to share the rate provided with Partners as a final amount since it is subject to adjustments based on the actual captured amount and quantity, and it reflects your buy_rates as an Acquiring partner.
Should retrieval of these rates be necessary, you can access them using the read price_plan requestAPI. To view the broader rates across a Partners price plan, you should use the GET a price plan request. This ensures accurate and up-to-date rate application in all transactions and calculations. The rates provided in the response to the Authorize a payment transactionAPI are only intended for estimation purposes, and should not be stored or used for forecasting or reconciliation.

Definitions and Calculations

Effective rates

These are linked to a specific price plan identified by a price_plan_id. Rate details for a price plan can be accessed through the Partner management API using this ID. Effective rates consider factors like the issuing country, MCC, sales channel (physical or online store), and payment program. The fixed and variable costs shared on confirmation are applied to a transaction on a per capture basis.

Microtransaction cap

The microtransaction cap is a limit applied to ensure that the total fee, including both the variable and fixed fee components, does not exceed a predefined percentage of the transaction value. This feature is designed to protect merchant margins on lower-value transactions by capping the maximum fee that can be charged per transaction. The specific cap may vary by country and/or merchant category code (MCC) as outlined in your agreement.

Discounts

These are adjustments applied to a given transaction based on certain criteria or promotions. Discounts reduce transaction fees based on certain criteria or promotions. The effective rate communicated accounts for any applied discounts.

Rate communication

These occur within the response to the Authorize a payment transactionAPI and (once authorized) the read payment requestAPI, rate details are disclosed. The payment_pricing object shows the details of the costs associated with transaction, with the detailed rate amounts calculated based on these details:
FeeDefinition
applicable_rate.fixed_feeFixed fee charged per capture.  Fixed fee includes fee amount with a precision of 2 minor units and currency of the fee.
applicable_rate.variable_feePercentage fee charged per capture with the precision of 2. E.g: 1.7% is transmitted as 170
applied_fee_componentsList of applied fee components. It includes a fixed fee amount or incentive applied with a precision of 2 minor units and currency of the component applied. It also includes a percentage fee charged or incentive applied per capture. It can be of following type # TRANSACTION_FEE: It is the fee charged as per price plan. # CROSS_BORDER_FEE: Fee applied for the transaction across two regions. # BUY_RATE_INCENTIVE: Incentives applied on the buy rate. # SELL_RATE_INCENTIVE: Incentives applied on the sell rate.
evaluation_parametersResponse includes a list of parameters and their values that were used to determine the applicable rate. The evaluation parameters include a price_plan_id, the payment_program_id, customer country, partner country,, merchant_category_code, pricing_payment_category and timestamp of evaluation.
evaluation_parameters.price_plan_idIt is an id of the price-plan used to evaluate the rate for the transaction. This id can be used to read the broader rates using Price Plan APIs
evaluation_parameters.payment_program_idPayment_program_id refers to the payment program used for this transaction.
evaluation_parameters.customer_countryRegistered country of the customer doing the transaction.
evaluation_parameters.partner_country;Registered country of the partner doing the transaction.
evaluation_parameters.pricing_payment_categoryPricing payment category for the transaction.
evaluation_parameters.evaluated_atThe time at which the rate for the transaction was evaluated.
pricing_country_groupComing soon. The country or Rest of World market grouping whose rate Klarna used to price the transaction. See Pricing country and resolution.
pricing_country_resolutionComing soon. Which pricing model determined pricing_country_group. See Pricing country and resolution.
Example:
For a captured transaction completed in USD, with a fixed fee of $1.04 and a variable rate of 1.39%, the below response would be returned. In addition, there is a transaction fee of $1.00 and a variable rate of 1.20%. There is also a cross border fee of $0.05 and a variable rate of 0.29%. There are no sell rate incentives applied on the fee. There is also a buy rate incentive applied of -$0.01 and a variable rate of -0.10% This rate should be considered the “applied rate” and is adjusted according to incentives or caps applied.
JSON
1 2 3 4 5 6 7 8 9 10
"payment_pricing": { "applicable_rate": { "fixed_fee": { "amount": 104, "currency": "USD" }, "variable_fee": { "percentage": 139 }, "unit": "CAPTURE"

Pricing country and resolution

Coming soon
Klarna doesn't return pricing_country_group and pricing_country_resolution yet. Don't build against them until Klarna announces availability.
Some transactions are priced under a different country than the one where the Partner is registered. For airline merchant category codes (MCCs), for example, Klarna can price the transaction under the customer's country, so no cross-border fee applies. evaluation_parameters.partner_country keeps reporting where the Partner is registered, so it doesn't tell you which country's rate applied. Use pricing_country_group and pricing_country_resolution to reconcile the transaction instead.
Your contract defines whether you're on Partner Market Pricing or Customer Market Pricing, and you reconcile on that basis. dynamic_partner_country_pricing is the exception, so Klarna returns these fields to tell you which lookup applied.
Klarna sets both fields and you never send them. Klarna returns them together for every transaction priced after they become available. Earlier transactions don't include them, so keep reconciling those under the pricing model in your contract.
pricing_country_group is the key that matches the corresponding rate entry that priced the transaction: in your Price Plan, as returned by listPricePlanRatesAPI, or among your Bespoke Rates, as returned by listBespokeRatesAPI. Compare the value as is with whichever of partner_country or partner_country_group is set on that entry for Partner Market Pricing, or with customer_country for Customer Market Pricing. Treat the value as an opaque string and don't parse it. It holds either of the following:
  • An ISO 3166-1 alpha-2 country code in uppercase, such as GB.
  • A Rest of World market grouping, such as ROW1 or ROW2, which groups Partner countries that have no country-specific rate of their own. Rest of World market groupings occur only with partner_country_pricing.
Rest of World market groupings are unrelated to evaluation_parameters.customer_pricing_region. The ROW value of that field is the fallback for customer billing countries that don't map to a specific pricing region.
pricing_country_resolution is an open enum, so Klarna may add values later. Handle values you don't recognize without failing. The documented values are:
ValueDefinition
partner_country_pricingKlarna applied Partner Market Pricing (PMP) and looked up the rate by partner_country, or by the Rest of World market grouping that partner_country belongs to when it has no country-specific rate.
customer_country_pricingKlarna applied Customer Market Pricing (CMP) and looked up the rate by customer_country.
dynamic_partner_country_pricingKlarna applied Partner Market Pricing (PMP), but looked up the rate by the customer's country instead of partner_country. The transaction is priced as domestic, so no cross-border fee applies and there's no CROSS_BORDER_FEE component. Look up the rate the same way when you reconcile.
Example:
For a GB customer buying a flight from an airline whose Partner is registered in the US, Klarna prices the transaction under GB. The response has a single TRANSACTION_FEE component with a variable rate of 1.39% and no CROSS_BORDER_FEE component, even though customer_country and partner_country differ.
JSON
1 2 3 4 5 6 7 8 9 10
"payment_pricing": { "applicable_rate": { "fixed_fee": { "amount": 0, "currency": "GBP" }, "variable_fee": { "percentage": 139 }, "unit": "CAPTURE"

Payment programs and identifiers

Each payment program is associated with a unique payment_program_id, which should be the primary identifier used by partners to reference and reconcile programs. Program names are provided as descriptive elements but may vary over time as Klarna expands or updates offerings. This makes program IDs the only stable reference for any program-related processing.

Retrieving program rate information

For rate details associated with a specific program, partners should use the Price Plans APIAPI. This API provides a way to read the price plan. It provides rates based on mcc, payment_program_id, country, currency, etc. Partners can query using 1 or more filter parameters to query required rate details.
Confirming program rates:
  • Query the Price Plans API with the price_plan_id and payment_program_id to receive the applicable fixed and variable rates for each program.
  • Rates retrieved via the Price Plans API should be considered dynamic and should not be stored on your end, as they may vary.
  • If the payment_program_id field is null or empty, the rate applies to all Payment Program Ids. For example, cross-border rates may not have a payment_program_id. Sample response for a cross-border rate without a payment_program_id:
JSON
1 2 3 4 5 6 7 8 9 10
"rates": [ { "partner_country": "SE", "customer_country": "GB", "unit": "CAPTURE", "rate": { "variable_fee": { "percentage": 29 } },

Consumer FX

Whenever the transaction currency and issuing currency do not match, Klarna will do FX conversion for the applicable rates. This means that applicable rate's fixed fee will be converted using the current market rates. The specified exchange_rate, will be mentioned in the API response under evaluation_parameters.
API & SDK references
API
Read a Price Plan
Authorize a payment transaction.
Read the state of a Payment Request
Klarna Partner Management API
SupportPartner support•Service Status
Cookies|Terms & Conditions|Copyright Klarna AB 2026
Jump to section...