---
title: Multimoneda y conversion
section: payment
slug: multicurrency
description: "Gestionar multiples monedas en PrestaShop: tasas de cambio, formateo, precios por moneda y modulos de pago multimoneda."
keywords: prestashop multimoneda moneda conversion tasa cambio EUR USD GBP precios formateo
last_updated: 2024-12-01
source_url: "https://ayudaprestashop.es/payment/multicurrency"
---

# Multimoneda y conversion

> Gestionar multiples monedas en PrestaShop: tasas de cambio, formateo, precios por moneda y modulos de pago multimoneda.

Si vendes a nivel internacional, necesitas ofrecer precios en la moneda local del cliente. PrestaShop soporta multiples monedas con conversion automatica o precios fijos por moneda.

## Configurar monedas

*Gestionar monedas programaticamente*

```php
<?php

// ── Obtener moneda actual del contexto ──
$currency = Context::getContext()->currency;
echo $currency->iso_code; // EUR
echo $currency->sign;     // €
echo $currency->name;     // Euro

// ── Obtener todas las monedas activas ──
$currencies = Currency::getCurrencies();
// [['id_currency' => 1, 'name' => 'Euro', 'iso_code' => 'EUR', ...], ...]

// ── Convertir precio a otra moneda ──
$priceEUR = 29.99;
$priceUSD = Tools::convertPrice($priceEUR, Currency::getIdByIsoCode('USD'));
// Usa la tasa de cambio configurada

// ── Conversion inversa (de otra moneda a la base) ──
$priceBase = Tools::convertPrice($priceUSD, Currency::getIdByIsoCode('USD'), false);
// false = conversion inversa

// ── Formatear precio con moneda ──
$formatted = Tools::displayPrice($priceEUR, $currency);
// "29,99 €" (segun locale y moneda)

// ── Obtener tasa de cambio ──
$usd = new Currency(Currency::getIdByIsoCode('USD'));
echo $usd->conversion_rate; // 1.08 (respecto a moneda base)
```

## Tasas de cambio

*Actualizar tasas de cambio*

```text
DESDE EL BO
- Localizacion → Monedas
- Clic en "Actualizar tasas de cambio"
- Usa el servicio del Banco Central Europeo (ECB)

MEDIANTE CRON (recomendado)
- Automatizar actualizacion diaria:
  php bin/console prestashop:update-currencies

MANUALMENTE
- Localizacion → Monedas → Editar USD
- Tasa de cambio: 1.08 (1 EUR = 1.08 USD)

PRECIOS FIJOS POR MONEDA
- En ficha producto → Precios → Precios especificos
- Crear precio especifico para moneda USD
- Fijar precio exacto: $32.99 (sin conversion)
- Util para precios psicologicos (29.99 vs 29.37)
```

## Precios por moneda en modulos

*Manejar multimoneda en un modulo*

```php
<?php

// ── En hooks que muestran precios, SIEMPRE convertir ──
public function hookDisplayProductAdditionalInfo(array $params): string
{
    $product = $params['product'];
    $currency = Context::getContext()->currency;

    // El precio del producto ya viene en la moneda actual si
    // se obtiene via Product::getPrice() o desde $product['price']
    $price = $product['price']; // Ya convertido

    // Si calculas precios custom, convertir manualmente:
    $customPriceEUR = 5.00; // Tu precio base siempre en moneda base
    $customPrice = Tools::convertPrice($customPriceEUR, $currency);
    $formatted   = Tools::displayPrice($customPrice, $currency);

    $this->context->smarty->assign([
        'extra_fee' => $formatted,
    ]);
    return $this->display(__FILE__, 'extra-fee.tpl');
}

// ── En el WebService, los precios siempre van en moneda base ──
// La conversion se hace en el front

// ── En el carrito ──
$cart = Context::getContext()->cart;
$total = $cart->getOrderTotal(true, Cart::BOTH);
// Ya en la moneda del contexto actual
```

## Conversion y redondeo

*Configurar redondeo*

```text
Preferencias → General → Redondeo

MODO DE REDONDEO
- Redondeo al valor superior: 10.555 → 10.56
- Redondeo al valor inferior: 10.555 → 10.55
- Redondeo clasico: 10.555 → 10.56 (mitades hacia arriba)
- Redondeo bancario: 10.555 → 10.56, 10.545 → 10.54

APLICAR REDONDEO
- Por articulo: redondea precio de cada linea
- Por linea: redondea despues de multiplicar por cantidad
- Por total: redondea solo el total final

PRECISION DECIMAL
- EUR: 2 decimales (29.99)
- JPY: 0 decimales (2999)
- BHD: 3 decimales (29.990)
- Se configura por moneda en Localizacion → Monedas
```


---

*Fuente: [https://ayudaprestashop.es/payment/multicurrency](https://ayudaprestashop.es/payment/multicurrency). Version Markdown generada automaticamente para consumo por LLMs.*
