Laravel-commerce makes selling in multiple currencies is quite simple.

Setting the price according to the currency

The getPrice method [which you implement on your Purchasable model] has a $currency parameter, so you are free to use any logic you want to return the correct price according to the currency.

 public function getPrice($currency = null): int {
   if ($currency == 'USD') {
     return $this->price_usd;
   } else if ($currency == 'GBP') {
     return $this->price_gbp;

The default currency

You can set the default currency of you store in the config:

return [
  // default currency
  'currency' => 'USD',

Changing the currency of the cart

You can change the currency of the cart like so:


This will automatically trigger a recalculateTotals() with the new currency.

You can't change the currency after the order is marked as completed. If you do, we'll throw an OrderAlreadyComplete exception.