v2.0

GoRules Version 2 is here - redesigned, now with managed cloud.GoRules Version 2 is here!

Watch the launch videoWatch

Dynamic FX Rate Pricing System

Tiered foreign exchange rate system that offers preferential rates for premium products, enhancing margins on luxury items while maintaining competitiveness.

Solution

This dynamic foreign exchange rate system optimizes pricing for cross-border sales by assigning different FX rates based on product value tiers. Premium and luxury items benefit from more favorable conversion rates, protecting margins on high-value merchandise while maintaining competitive pricing in target markets. The system first categorizes products into four distinct tiers based on base price thresholds, then applies the appropriate currency conversion rate.

For each product category, the system assigns specific FX rates and optional discounts customized by currency pair, with premium products receiving the most advantageous rates. Lower-priced standard items use baseline exchange rates. This approach rewards customers purchasing high-value items while ensuring profitability across diverse product catalogs and international markets. The system includes transparent messaging to explain the benefit being applied to each transaction.

How it works

The decision graph implements a two-stage evaluation process:

  1. Product Categorization: The first decision table analyzes the product's base price and assigns it to one of four categories: premium (≥$10,000), luxury (≥$5,000), mid-range (≥$1,000), or standard (all others).

  2. FX Rate Determination: The second decision table uses three key inputs - product category, base currency, and target currency - to determine the appropriate exchange rate parameters.

  3. Rate Application: For each category-currency combination, the system applies:

    • A specific FX rate tailored to the product's value tier
    • An optional discount percentage for preferred categories
    • A descriptive message explaining the rate benefit
  4. Result Generation: The system combines all this information into a structured response containing the applicable FX rate details for the transaction.

Where teams use it

  • Global e-commerce platforms with varied product catalogs
  • Luxury retail with international shipping
  • Marketplace platforms supporting cross-border transactions
  • Travel booking systems with dynamic currency conversion
  • International wholesale procurement systems
  • Subscription services with tiered international pricing

Inside the decision model

Dynamic FX Rate Pricing System ships as a JDM decision graph with 3 nodes, 2 decision tables and 13 rules. Download it, load it into GoRules, and run it as-is on Zen Engine.

Decision graph3 nodes · read-only
input requesttable determineProductCategorytable determineFXRateAdjustment
01

Request

input

One product plus a currency pair make up the request: product.basePrice drives the tiering, baseCurrency and targetCurrency select the rate row, and quantity with customerTier travel along for context.

Sample requestJSON
{
  "product": {
    "id": "PRD-12345",
    "name": "Luxury Watch",
    "basePrice": 8500
  },
  "baseCurrency": "USD",
  "targetCurrency": "EUR",
  "quantity": 1,
  "customerTier": "gold"
}
02

Determine Product Category

table

Price bands assign the tier with a first hit policy on product.basePrice: 10000 and above is 'premium', 5000 and above is 'luxury', 1000 and above is 'mid-range', and the blank fallback row labels everything else 'standard', writing the result to product.category.

Descending thresholds under first hit mean the highest band a price clears always wins, which keeps the four rows unambiguous without upper bounds. The round 1000/5000/10000 cutoffs are a sensible business segmentation rather than any external standard, and doing the tiering once here keeps the FX table from repeating price logic across every currency pair.

Decision tablefirst hit policy
Product Priceproduct.basePriceProduct Categoryproduct.category
>= 10000'premium'
>= 5000'luxury'
>= 1000'mid-range'
-'standard'
03

Determine Fx Rate Adjustment

table

Rates come from matching product.category with baseCurrency 'USD' and targetCurrency 'EUR' or 'GBP' under a first hit policy: 'premium' converts at 0.90 to EUR and 0.78 to GBP with a 0.02 discount, 'luxury' at 0.91 and 0.79 with 0.015, 'mid-range' at 0.92 and 0.80 with 0.01, and 'standard' at 0.93 and 0.81 with no discount. The blank fallback row applies a 1.0 rate with the message 'Default base rate applied', and since passThrough is off the response is just fxDetails.rate, discount, and message.

The gap between 0.90 and 0.93 per dollar is where the FX spread lives, and giving high-value tiers the lower conversion figure plus an explicit discount means premium buyers pay the smallest currency markup, echoing how FX providers tier their spreads by transaction size. Funding that concession from premium and luxury margins is a deliberate trade to stay price-competitive on big-ticket cross-border orders, while the 1.0 fallback keeps unsupported pairs safe and the per-row messages make the applied benefit explainable at checkout.

Decision tablefirst hit policy
Categoryproduct.categoryBase CurrencybaseCurrencyTarget CurrencytargetCurrencyFX RatefxDetails.rateDiscountfxDetails.discountMessagefxDetails.message
'premium''USD''EUR'0.900.02'Premium products receive our most favorable rate'
'premium''USD''GBP'0.780.02'Premium products receive our most favorable rate'
'luxury''USD''EUR'0.910.015'Luxury products receive favorable rates'
'luxury''USD''GBP'0.790.015'Luxury products receive favorable rates'
'mid-range''USD''EUR'0.920.01'Mid-range products receive standard rates'
'mid-range''USD''GBP'0.800.01'Mid-range products receive standard rates'

+3 more rows in the downloadable template

Make this template
your own.

Load Dynamic FX Rate Pricing System into GoRules, adjust the rules to your policy, and ship it behind your own API.