Skip to main content

Overview

The Region Module manages geographic regions and their configurations including currencies, countries, tax settings, and payment/fulfillment provider availability. Regions are essential for multi-market commerce. Key Features:
  • Multi-region support
  • Currency configuration per region
  • Country associations
  • Tax settings and rates
  • Payment provider availability
  • Fulfillment provider availability
  • Automatic tax calculation settings

When to Use

Use the Region Module when you need to:
  • Support multiple geographic markets
  • Configure different currencies per market
  • Manage country-specific settings
  • Set region tax configurations
  • Control payment provider availability
  • Control fulfillment options per region
  • Handle multi-currency commerce

Data Models

Region

Represents a geographic market with specific settings.
string
required
Unique region identifier
string
required
Region name (e.g., “North America”, “Europe”)
string
required
Default currency code (three-letter ISO)
boolean
Whether to calculate taxes automatically (default: true)
boolean
Whether gift cards are taxable (default: true)
number
Default tax rate percentage
string
Tax code for external tax providers
Country[]
Countries in this region
string[]
Available payment provider IDs
object
Additional custom data

Country

Represents a country within a region.
string
required
Unique country identifier
string
required
Two-letter ISO country code (e.g., “US”, “GB”)
string
required
Three-letter ISO country code (e.g., “USA”, “GBR”)
number
required
Numeric country code
string
required
Country name
string
required
Display name for the country
string
ID of the associated region

Service Interface

The Region Module service is available at @medusajs/medusa/region.

Create Region

Create a new region.
CreateRegionDTO | CreateRegionDTO[]
required
Region data
string
required
Region name
string
required
Default currency (three-letter ISO code)
boolean
Enable automatic tax calculation
number
Default tax rate percentage
string[]
Country codes (two-letter ISO)
string[]
Available payment provider IDs
RegionDTO | RegionDTO[]
The created region(s)

Retrieve Region

Get a region with its configuration.
string
required
The ID of the region to retrieve
FindConfig
Configuration for the query
string[]
Relations to load (e.g., ["countries"])
RegionDTO
The retrieved region

List Regions

List all regions.

Update Region

Modify region configuration.
string
required
ID of the region to update
UpdateRegionDTO
required
Fields to update
string
Region name
string
Currency code
boolean
Automatic tax calculation
number
Tax rate percentage
string[]
Payment provider IDs

Add Countries to Region

Associate countries with a region.

Remove Countries from Region

Disassociate countries from a region.

List Countries

Retrieve available countries.

Integration Examples

With Cart Module

Set cart region.

With Pricing Module

Region-based pricing.

With Payment Module

Configure payment providers per region.

With Fulfillment Module

Region-specific fulfillment.

With Tax Module

Region tax configuration.

Multi-Region Setup

Example Configuration

Best Practices

  1. Region Design: Structure regions based on:
    • Currency zones (Euro zone, USD zone, etc.)
    • Tax jurisdictions
    • Fulfillment/shipping areas
    • Payment provider availability
  2. Currency Codes: Always use lowercase three-letter ISO currency codes (“usd”, “eur”, “gbp”).
  3. Country Associations: Each country should belong to only one region. Carefully plan country-to-region mappings.
  4. Tax Configuration:
    • Set automatic_taxes: true for regions with simple tax calculations
    • Set automatic_taxes: false for complex tax scenarios requiring external providers
  5. Payment Providers: Only list payment providers that:
    • Support the region’s currency
    • Are legally available in the region’s countries
    • Have been properly configured in your Medusa instance
  6. Default Region: Create a default region for your primary market to handle cases where region detection fails.