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
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
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.50Display 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.50Multi-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:
- Fetch current exchange rates from a service (e.g., exchangerate-api.com)
- Calculate equivalent amounts in each currency
- Create separate payment links for each currency
- 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,035Payout 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
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:
Enterprise customers: Custom currency support and preferential exchange rates are available. Contact us to learn more.