Supported Currencies

Learn about currency support, exchange rates, multi-currency payments, and settlement options.

Primary Currencies

Inkress currently supports the following currencies for payments and payouts:

Jamaican Dollar

Primary

Code: JMD

Symbol: $

Decimals: 2 (cents)

Example: $1,250.50

Payment Methods:

  • Credit/Debit Cards (Visa, Mastercard)
  • Bank Transfers (Local)
  • Digital Wallets

United States Dollar

Supported

Code: USD

Symbol: $

Decimals: 2 (cents)

Example: $12.50

Payment Methods:

  • Credit/Debit Cards (International)
  • ACH Transfers
  • Digital Wallets (PayPal, Stripe)

Setting Payment Currency

When creating a payment link or order, specify the currency using the currency_code field:

const response = await admin.paymentLink.create({
  title: "Premium Subscription",
  total: 99.00,  // Amount in dollars and cents (JMD 99.00)
  currency_code: "JMD",  // or "USD"
  description: "Monthly premium plan"
});

⚠️ Amount Format

Provide amounts in dollars and cents. For example, $99.00 JMD should be passed as 99.00.

Amount Formatting Best Practices

Store as Decimals

Store and transmit amounts as decimals:

// ✓ Good - using decimals
const amount = 25.50;  // $25.50

Display to Users

Format the decimal amount when displaying to users:

function formatCurrency(amount: number, currency: string): string {
  
  const formatters = {
    JMD: new Intl.NumberFormat('en-JM', {
      style: 'currency',
      currency: 'JMD'
    }),
    USD: new Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: 'USD'
    })
  };
  
  return formatters[currency].format(amount);
}

// Usage
formatCurrency(99.00, 'JMD');  // "$99.00"
formatCurrency(25.50, 'USD');  // "$25.50"

User Input Handling

Parse user input to a float before sending to the API:

function parseCurrencyInput(input: string): number {
  // Remove currency symbols and commas
  const cleaned = input.replace(/[$,]/g, '');
  
  // Parse as float
  const dollars = parseFloat(cleaned);
  
  if (isNaN(dollars)) {
    throw new Error('Invalid amount');
  }
  
  return dollars;
}

// Usage
parseCurrencyInput("$99.99");    // 99.99
parseCurrencyInput("1,250.50");  // 1250.50

Multi-Currency Payments

Merchants can accept payments in multiple currencies, but each payment link must specify a single currency. Customers see prices in that currency throughout the checkout flow.

Example: Serving International Customers

// Create separate payment links for different currencies
const jmdLink = await admin.paymentLink.create({
  title: "Premium Plan",
  total: 9900,
  currency_code: "JMD"
});

const usdLink = await admin.paymentLink.create({
  title: "Premium Plan", 
  total: 6500,  // ~$65 USD equivalent
  currency_code: "USD"
});

// Show appropriate link based on customer location
function getPaymentLink(countryCode: string) {
  return countryCode === 'US' ? usdLink : jmdLink;
}

Exchange Rates

Inkress does not automatically convert between currencies. If you need to support multiple currencies, you must:

  1. Fetch current exchange rates from a service (e.g., exchangerate-api.com)
  2. Calculate equivalent amounts in each currency
  3. Create separate payment links for each currency
  4. Display appropriate links to customers based on their preference

Example Implementation

async function getExchangeRate(from: string, to: string): Promise<number> {
  const response = await fetch(
    `https://api.exchangerate-api.com/v4/latest/${from}`
  );
  const data = await response.json();
  return data.rates[to];
}

async function createMultiCurrencyLinks(
  baseAmount: number, 
  baseCurrency: string
) {
  const links = [];
  
  // Create JMD link
  links.push(await admin.paymentLink.create({
    title: "Premium Plan",
    total: baseCurrency === 'JMD' ? baseAmount : 
      Math.round(baseAmount * await getExchangeRate(baseCurrency, 'JMD')),
    currency_code: "JMD"
  }));
  
  // Create USD link
  links.push(await admin.paymentLink.create({
    title: "Premium Plan",
    total: baseCurrency === 'USD' ? baseAmount : 
      Math.round(baseAmount * await getExchangeRate(baseCurrency, 'USD')),
    currency_code: "USD"
  }));
  
  return links;
}

Settlement & Payouts

Your merchant account has a primary settlement currency (usually JMD). Payments received in different currencies are handled as follows:

Same Currency Settlement

If you receive payments in JMD and your settlement currency is JMD, no conversion occurs. Funds go directly to your available balance.

Cross-Currency Settlement

If you receive payments in USD but your settlement currency is JMD, the funds are converted at the daily exchange rate (minus a 1% conversion fee).

Payment:           $100.00 USD
Exchange Rate:     1 USD = 155 JMD
Gross:             JMD 15,500
Conversion Fee:    JMD   -155 (1%)
Transaction Fee:   JMD   -310 (2%)
────────────────────────────────
Net to Balance:    JMD 15,035

Payout Currency

Payouts are always processed in your settlement currency. You cannot request payouts in a different currency than your account's settlement currency.

Fee Structure

Transaction fees are calculated as follows: (4% + $0.25) + GCT. Inkress may add additional charges depending on your subscription plan.

Fee Calculator

Enter an amount to calculate fees

Requesting Additional Currencies

We're actively expanding our currency support. If you need to accept payments in a currency not currently supported, please contact our sales team.

Currencies Under Consideration:

EUR - Euro
GBP - British Pound
CAD - Canadian Dollar
TTD - Trinidad & Tobago Dollar
BBD - Barbadian Dollar
XCD - Eastern Caribbean Dollar

Enterprise customers: Custom currency support and preferential exchange rates are available. Contact us to learn more.