Currency


Una moneda de una Company (o de una Branch concreta).

  • enabled: si la moneda puede usarse para procesar pagos.
  • iso: identificador de la moneda.
  • symbol: símbolo de la moneda.
  • conversion_factor: factor para convertir el precio desde la moneda de related_iso hacia iso (p. ej. 1 VES = 75000 * USD).
  • related_iso: moneda desde la cual se hace la conversión. Si is_local o is_international, related_iso debe coincidir con la moneda local; en los demás casos, con el iso de la moneda internacional.
  • decimals_count: cantidad de decimales a mostrar.
  • format: formato de visualización, donde $ es el símbolo y 0.00 el monto.
  • decimal_point / thousands_separator / use_thousands_separator: separadores de visualización.
  • is_local: la moneda es local (la usada por defecto para los productos).
  • is_international: la moneda es la base para convertir las monedas no locales.
  • auto_sync / auto_sync_provider: si el conversion_factor se actualiza automáticamente y con qué proveedor (legacy, bcv, ext, today).

Estructura de Datos

Atributo Tipo Descripción
id int
enabled bool Si la moneda puede usarse para procesar pagos
iso string Identificador ISO de la moneda
symbol string Símbolo de la moneda
conversion_factor float Factor de conversión desde related_iso hacia iso
related_iso string Moneda desde la que se hace la conversión
decimals_count int Cantidad de decimales a mostrar
format string Formato de visualización ($ = símbolo, 0.00 = monto)
decimal_point string Carácter separador de decimales
use_thousands_separator bool Si se separan los miles al mostrar
thousands_separator string Carácter separador de miles
is_local bool Si es la moneda local (por defecto para los productos)
is_international bool Si es la moneda base para convertir las no locales
created_at datetime\|null
updated_at datetime\|null
company_id int {@link Company} dueña de la moneda
is_custom bool Si la moneda fue definida a medida (no proviene del catálogo)
branch_id int\|null {@link Branch} dueña de la moneda; nulo si es de la company
auto_sync bool Si el conversion_factor se actualiza automáticamente
auto_sync_provider string Proveedor de la tasa automática (legacy, bcv, ext, today)
allLogs Collection<int, \App\ApiLog>
branch Branch\|null {@link Branch} dueña de la moneda
company Company {@link Company} dueña de la moneda
available bool Si la moneda está disponible para usarse
company_match Currency\|null Moneda equivalente a nivel de company (para monedas de sucursal)
inter Currency\|null Moneda internacional del ámbito de esta moneda
local Currency\|null Moneda local del ámbito de esta moneda
related_iso_error bool Si el related_iso actual no es el esperado
related_iso_expected string related_iso que debería tener según is_local / is_international
use_conversion bool Si esta moneda requiere conversión (no es la base)
logs Collection<int, \App\ApiLog>
{
    "id": 1,
    "enabled": true,
    "iso": "USD",
    "symbol": "$",
    "conversion_factor": 1,
    "related_iso": "USD",
    "decimals_count": 2,
    "format": "$ 0.00",
    "decimal_point": ".",
    "use_thousands_separator": true,
    "thousands_separator": ",",
    "is_local": true,
    "is_international": true,
    "created_at": "2020-04-17 01:07:30",
    "updated_at": "2025-03-27 13:27:03",
    "company_id": 1,
    "is_custom": true,
    "branch_id": null,
    "auto_sync": false,
    "auto_sync_provider": "legacy",
    "use_conversion": false,
    "available": true,
    "related_iso_expected": "USD",
    "related_iso_error": false
}

Endpoints

Insertar Currency

Insertar Currency de Branch

Crear moneda

Crea una Currency para la company o para una Branch. Nace deshabilitada (enabled = false). Para una moneda de sucursal debe existir su equivalente a nivel de company.

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/currencies Authorization
{
    "iso": "required|max:8|string",
    "symbol": "required|max:4|string",
    "conversion_factor": "numeric|min:0.00001",
    "decimals_count": "integer|min:0|max:2",
    "format": {
        "string": true,
        "regex": "/^(\$.*0.00)|(0.00.*\$)$/"
    },
    "decimal_point": "string|min:1|max:1",
    "use_thousands_separator": "boolean",
    "thousands_separator": "string|min:1|max:1",
    "is_custom": "boolean",
    "auto_sync": "boolean",
    "auto_sync_provider": "string|in:legacy,ext,bcv,today"
}

Errores de negocio

Código HTTP Cuándo ocurre
ER409 409 Ya existe una moneda con ese iso a nivel de company.

Insertar Currency de Branch

Crear moneda

Crea una Currency para la company o para una Branch. Nace deshabilitada (enabled = false). Para una moneda de sucursal debe existir su equivalente a nivel de company.

Método URI Cabeceras
POST /companies/{companyId}/branches/{branchId}/currencies Authorization
{
    "iso": "required|max:8|string",
    "symbol": "required|max:4|string",
    "conversion_factor": "numeric|min:0.00001",
    "decimals_count": "integer|min:0|max:2",
    "format": {
        "string": true,
        "regex": "/^(\$.*0.00)|(0.00.*\$)$/"
    },
    "decimal_point": "string|min:1|max:1",
    "use_thousands_separator": "boolean",
    "thousands_separator": "string|min:1|max:1",
    "is_custom": "boolean",
    "auto_sync": "boolean",
    "auto_sync_provider": "string|in:legacy,ext,bcv,today"
}

Errores de negocio

Código HTTP Cuándo ocurre
ER409 409 Ya existe una moneda con ese iso a nivel de company.

Listar Currency

Listar Currency de Branch

{info} Soporta: Paginación Filters Carga dinámica

Listar monedas

Devuelve las Currency de la company o, si se pasa branchId, las de esa Branch.

Método URI Cabeceras
GET /companies/{companyId}/branches/{branchId}/currencies N/A

Listar Currency de Branch

{info} Soporta: Paginación Filters Carga dinámica

Listar monedas

Devuelve las Currency de la company o, si se pasa branchId, las de esa Branch.

Método URI Cabeceras
GET /companies/{companyId}/branches/{branchId}/currencies N/A

Mostrar Currency

{info} Soporta: Carga dinámica

Mostrar moneda

Devuelve la Currency por su id.

Método URI Cabeceras
GET /companies/{companyId}/currencies/{currencyId} N/A

Actualizar Currency

Actualizar moneda

Modifica el formato de visualización, el conversion_factor, related_iso, symbol, auto_sync / auto_sync_provider y demás campos editables de la Currency.

Método URI Cabeceras
PATCH /companies/{companyId}/currencies/{currencyId} Authorization
{
    "related_iso": "required|max:8|string",
    "symbol": "max:4|string",
    "conversion_factor": "numeric|min:0.00001",
    "decimals_count": "integer|min:0|max:2",
    "format": {
        "string": true,
        "regex": "/^(\$.*0.00)|(0.00.*\$)$/"
    },
    "decimal_point": "string|min:1|max:1",
    "use_thousands_separator": "boolean",
    "thousands_separator": "string|min:1|max:1",
    "is_custom": "boolean",
    "auto_sync": "boolean",
    "auto_sync_provider": "string|in:legacy,ext,bcv,today"
}

Eliminar Currency

Eliminar moneda

Borra la Currency.

Método URI Cabeceras
DELETE /companies/{companyId}/currencies/{currencyId} Authorization

Errores de negocio

Código HTTP Cuándo ocurre
EA197 400 La moneda está en uso (formas de pago, pasarelas o como local/internacional de una sucursal).

Acciones de Currency

Convertir monto entre monedas

Convierte un monto entre dos ISO de moneda en el ámbito de la Branch indicada.

Método URI Cabeceras
GET /companies/{companyId}/branches/{branchId}/currency-convert N/A
{
    "currency_iso_from": "required|string|min:3|max:8",
    "currency_iso_to": "required|string|min:3|max:8",
    "amount_e2": "required|integer|min:0"
}

Errores de negocio

Código HTTP Cuándo ocurre
EA104 400 Alguna de las monedas indicadas no existe.

Habilitar moneda

Pone enabled = true: la moneda pasa a poder usarse para procesar pagos.

Método URI Cabeceras
POST /companies/{companyId}/currencies/{currencyId}/set-enabled Authorization

Errores de negocio

Código HTTP Cuándo ocurre
EA196 400 La moneda ya está habilitada.

Deshabilitar moneda

Pone enabled = false. No se permite si la moneda está en uso.

Método URI Cabeceras
POST /companies/{companyId}/currencies/{currencyId}/set-disabled Authorization

Errores de negocio

Código HTTP Cuándo ocurre
EA195 400 La moneda no está habilitada.
EA197 400 La moneda está en uso.

Marcar moneda como local

Promueve la Currency a moneda local (la usada por defecto para los productos). Requiere estar habilitada y tener una related_iso coherente.

Método URI Cabeceras
POST /companies/{companyId}/currencies/{currencyId}/set-local Authorization

Errores de negocio

Código HTTP Cuándo ocurre
EA193 400 La moneda ya es local.
EA195 400 La moneda no está habilitada.
EA191 400 La related_iso no es una moneda local.
EA103 400 La moneda relacionada no existe.

Marcar moneda como internacional

Promueve la Currency a moneda internacional (la base para convertir las monedas no locales). No aplica a monedas de sucursal.

Método URI Cabeceras
POST /companies/{companyId}/currencies/{currencyId}/set-international Authorization

Errores de negocio

Código HTTP Cuándo ocurre
EA194 400 La moneda ya es internacional.
EA192 400 La related_iso no es una moneda internacional.
EA103 400 La moneda relacionada no existe.

Relaciones