Skip to main content
This guide covers how to charge your users in their local currency. When you create an order with a local currency, the quote, the checkout, and the card charge are all denominated in the selected currency.

Available Currencies

*EUR, GBP, AUD, and COP are not available for US residents.

Legend:
  • Supported
  • Available, but not self-serve. Contact us to request it for your project.
If you are interested in a local currency that is not listed, contact Crossmint to confirm support.

Create the Order in the Selected Currency

From your server, pass the selected currency in payment.currency. With exact-in, amount is expressed in the payment currency, so "100" with "currency": "eur" means 100 EUR.
Recommended: pre-select the default currency from the user’s country of residence if your app already knows it, or from their IP address otherwise, and add a currency selector to your UI so the user can change it.
The response contains order.payment.currency: "eur" and a quote priced in EUR, for example order.quote.totalPrice: { "amount": "100", "currency": "eur" }. The amount of stablecoin the user receives is in order.lineItems[0].quote.quantityRange. If the user changes the currency after the order exists, update it from your server with a PATCH to /api/2022-06-09/orders/{orderId} and the new payment.currency, authenticated with your server-side API key. See Edit Order.
Onramp orders cannot be updated from the client side. Update requests authenticated with the order clientSecret are rejected. Use your server-side API key.

Render the Checkout in the Same Currency

Set payment.fiat.defaultCurrency on the checkout component to the currency you used to create the order. The checkout compares this value with the order currency and, if they differ, tries to update the order to match defaultCurrency. Because onramp orders cannot be updated from the client side, that request fails and the checkout shows an error to the user. The SDK default is usd, so always set it explicitly on a EUR order.

Verify the Currency

Fetch the order with Get Order and confirm that payment.currency and quote.totalPrice.currency are both "eur". In the checkout, the price and the card charge are shown in EUR.

Troubleshooting

payment.fiat.defaultCurrency on the checkout component does not match the currency of the order. The checkout tries to update the order from the client side, which is not allowed for onramp orders. Pass the same value you used in payment.currency when creating the order.
You are updating an onramp order with the order clientSecret. Send the PATCH from your server with your server-side API key.
The currency is not enabled for your project. The error response lists the currencies you can use in parameters.supportedCurrencies. To enable a non-self-serve currency (gbp, aud, cop), contact Crossmint.

Next Steps

Add Payment Methods

Enable cards, Apple Pay, and Google Pay for onramp

Import User KYC Data

Reuse the country of residence you already collected

Create Order

Full reference for the onramp order payload