Localize checkout from the visitor's IP.

From a single IP, derive the shopper's country, local time, converted price, and applicable VAT — so the total they see is correct and familiar before they commit.

4-step workflow
8 crTotal cost per run, across 4 APIs
  • IP Lookup5 cr
  • Timezone Lookup1 cr
  • Currency Converter1 cr
  • VAT Rates1 cr
The problem

Showing prices in the wrong currency, omitting VAT, or ignoring the shopper's timezone quietly erodes conversion. All of it can be inferred from the one thing every visitor already gives you: their IP.

What you get

A localized checkout — right currency, correct tax, and local time — computed server-side so the displayed total always matches what you charge.

The workflow

How the calls chain together

Every response below is a live sample from the actual API — nothing mocked.

01
IP LookupGET /v1/iplookup5 cr

Geolocate the visitor

Resolve the IP to a country, city, and timezone — the anchor for everything localized.

countryNameUnited StatescityKansas CitytimezoneAmerica/Chicago
Sample response
{
  "ip": "173.172.81.20",
  "country": "US",
  "countryName": "United States",
  "region": "MO",
  "regionName": "Missouri",
  "city": "Kansas City",
  "timezone": "America/Chicago",
  "coordinates": [
    39.0831,
    -94.5853
  ]
}
passes the country + timezone to the next step
02
Timezone LookupGET /v1/timezonelookup1 cr

Get local time

Turn the timezone into the shopper's actual local time for delivery estimates and urgency.

time1212:30:23 AMtimezoneAfrica/Harare
Sample response
{
  "timezone": "Africa/Harare",
  "timezone_offset": 120,
  "date": "2025-12-17",
  "time": "00:30",
  "time24": "00:30:23",
  "time12": "12:30:23 AM",
  "day": "Wednesday",
  "month": "December",
  "year": "2025",
  "unix": "1765924223",
  "dst": false,
  "dst_start": "2025-12-17 00:30:23",
  "dst_end": "2025-12-17 00:30:23",
  "dst_name": "CAT"
}
passes local time to the next step
03
Currency ConverterGET /v1/currencyconverter1 cr

Convert the price

Convert your base price into the shopper's local currency at live rates.

convertedValue0.921456rate0.921456
Sample response
{
  "from": "USD",
  "to": "EUR",
  "value": 1,
  "convertedValue": 0.921456,
  "rate": 0.921456,
  "change24h": -0.002134,
  "change24hPct": -0.2312,
  "changeDirection": "down",
  "high24h": 0.924521,
  "low24h": 0.919823
}
passes the local amount to the next step
04
VAT RatesGET /v1/vatrates1 cr

Apply the right VAT

Look up the country's current VAT rate so the total is compliant and complete.

countryNameGermanyrates{ … }
Sample response
{
  "country": "DE",
  "countryName": "Germany",
  "currency": "EUR",
  "effectiveFrom": "2021-01-01",
  "rates": {
    "standard": 19,
    "reduced": 7,
    "reduced2": null,
    "superReduced": null,
    "parking": null
  },
  "exception": null
}

Recipe questions.

What to know before you wire it up.

Talk to the team
Should I localize price on the client or server?
Server-side. Compute currency and VAT on your backend so the displayed total always matches the amount you charge — never trust a client-only conversion for money.
Does this handle non-EU tax?
The VAT rates API focuses on VAT (EU and several non-EU countries). For US sales tax, swap in the sales-tax API — the rest of the recipe is unchanged.
How current are the exchange rates?
Currency conversion uses live rates and returns the rate and 24h movement alongside the converted value, so you can decide how often to refresh.

Cook this in an afternoon. Every API in this recipe shares one key, one response shape, and one bill.

Swap in your own APIs

Every step is a catalog API — mix and match freely.

Browse the catalog