> ## Documentation Index
> Fetch the complete documentation index at: https://facturas-sdk.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# ARCA Reference Constants Exported by facturas

> facturas exports stable ARCA reference codes as TypeScript constants: voucher types, VAT rates, document types, receiver VAT conditions, and currencies.

The `facturas/constants` sub-path exports a small, stable set of ARCA reference codes as typed TypeScript constants. Use them anywhere you need to reference a voucher type, VAT rate, document type, or currency without hardcoding numeric or string literals in your application code.

```ts twoslash theme={null}
import {
  ARCA_CONCEPT_TYPES,
  ARCA_CURRENCY_IDS,
  ARCA_CURRENCIES,
  ARCA_DOCUMENT_TYPES,
  ARCA_RECEIVER_VAT_CONDITIONS,
  ARCA_VAT_RATES,
  ARCA_VOUCHER_TYPES,
  ISO_CURRENCIES,
} from "facturas/constants";
```

<Note>
  These constants match the **static** ARCA reference data documented in the official catalogs. For authoritative, up-to-date lists at runtime — especially useful if ARCA adds or changes codes — use the live catalog methods on `arca.wsfe`: `getVoucherTypes()`, `getDocumentTypes()`, `getCurrencyTypes()`, and `getVatRates()`.
</Note>

***

## `ARCA_VOUCHER_TYPES`

Voucher type codes used in `voucherType` fields across the WSFE and WSMTXCA APIs.

| Key              | Value | Description       |
| ---------------- | ----- | ----------------- |
| `FACTURA_A`      | `1`   | Factura A         |
| `NOTA_DEBITO_A`  | `2`   | Nota de Débito A  |
| `NOTA_CREDITO_A` | `3`   | Nota de Crédito A |
| `FACTURA_B`      | `6`   | Factura B         |
| `NOTA_DEBITO_B`  | `7`   | Nota de Débito B  |
| `NOTA_CREDITO_B` | `8`   | Nota de Crédito B |
| `FACTURA_C`      | `11`  | Factura C         |
| `NOTA_DEBITO_C`  | `12`  | Nota de Débito C  |
| `NOTA_CREDITO_C` | `13`  | Nota de Crédito C |

```ts twoslash theme={null}
import { ARCA_VOUCHER_TYPES } from "facturas/constants";

ARCA_VOUCHER_TYPES.FACTURA_A; // 1
ARCA_VOUCHER_TYPES.FACTURA_B; // 6
ARCA_VOUCHER_TYPES.FACTURA_C; // 11
ARCA_VOUCHER_TYPES.NOTA_CREDITO_A; // 3
```

***

## `ARCA_DOCUMENT_TYPES`

Document type codes used in `documentType` fields to identify the receiver.

| Key                | Value | Description                                  |
| ------------------ | ----- | -------------------------------------------- |
| `CUIT`             | `80`  | CUIT (tax ID)                                |
| `DNI`              | `96`  | DNI (national identity document)             |
| `CONSUMIDOR_FINAL` | `99`  | Consumidor Final (anonymous retail customer) |

```ts twoslash theme={null}
import { ARCA_DOCUMENT_TYPES } from "facturas/constants";

ARCA_DOCUMENT_TYPES.CUIT;             // 80
ARCA_DOCUMENT_TYPES.DNI;              // 96
ARCA_DOCUMENT_TYPES.CONSUMIDOR_FINAL; // 99
```

<Note>
  For Factura B to consumidor final, use `documentType: ARCA_DOCUMENT_TYPES.CONSUMIDOR_FINAL` together with `documentNumber: 0`. ARCA enforces rules on which document types are valid for a given voucher class and total amount — see WSFE error `10015` in the [error handling guide](/guides/error-handling) if you hit a validation rejection.
</Note>

***

## `ARCA_RECEIVER_VAT_CONDITIONS`

Receiver VAT condition codes (condición de IVA del receptor) used in `receiverVatConditionId` fields. The high-level `issue()` facade accepts `receiverVatCondition` as a human-readable string (e.g., `"consumidor_final"`); these numeric codes are used in exact-layer `WsfeVoucherInput` and WSMTXCA requests.

| Key                     | Value | Description             |
| ----------------------- | ----- | ----------------------- |
| `RESPONSABLE_INSCRIPTO` | `1`   | Registered VAT taxpayer |
| `EXENTO`                | `4`   | VAT-exempt taxpayer     |
| `CONSUMIDOR_FINAL`      | `5`   | Final consumer          |
| `MONOTRIBUTISTA`        | `6`   | Monotributo taxpayer    |
| `IVA_NO_ALCANZADO`      | `15`  | Not subject to VAT      |

```ts twoslash theme={null}
import { ARCA_RECEIVER_VAT_CONDITIONS } from "facturas/constants";

ARCA_RECEIVER_VAT_CONDITIONS.RESPONSABLE_INSCRIPTO; // 1
ARCA_RECEIVER_VAT_CONDITIONS.EXENTO;                // 4
ARCA_RECEIVER_VAT_CONDITIONS.CONSUMIDOR_FINAL;      // 5
ARCA_RECEIVER_VAT_CONDITIONS.MONOTRIBUTISTA;        // 6
ARCA_RECEIVER_VAT_CONDITIONS.IVA_NO_ALCANZADO;      // 15
```

<Tip>
  The facade's `receiverVatCondition` accepts human-readable strings: `"responsable_inscripto"`, `"monotributo"`, `"exento"`, `"no_alcanzado"`, or `"consumidor_final"`. Use the numeric constants from `ARCA_RECEIVER_VAT_CONDITIONS` only when constructing a `WsfeVoucherInput` directly in the [exact layer](/reference/exact-layer).
</Tip>

***

## `ARCA_CONCEPT_TYPES`

Concept type codes (tipos de concepto) used in `concept` fields.

| Key                     | Value | Description           |
| ----------------------- | ----- | --------------------- |
| `PRODUCTOS`             | `1`   | Products only         |
| `SERVICIOS`             | `2`   | Services only         |
| `PRODUCTOS_Y_SERVICIOS` | `3`   | Products and services |

```ts twoslash theme={null}
import { ARCA_CONCEPT_TYPES } from "facturas/constants";

ARCA_CONCEPT_TYPES.PRODUCTOS;              // 1
ARCA_CONCEPT_TYPES.SERVICIOS;              // 2
ARCA_CONCEPT_TYPES.PRODUCTOS_Y_SERVICIOS;  // 3
```

***

## `ARCA_VAT_RATES`

VAT rate codes used in `id` fields inside `vatRates` arrays. Note that these are ARCA's **internal numeric identifiers** for each rate — they are not the percentage values themselves.

| Key        | ARCA Code | Actual Rate |
| ---------- | --------- | ----------- |
| `IVA_0`    | `3`       | 0 %         |
| `IVA_2_5`  | `9`       | 2.5 %       |
| `IVA_5`    | `8`       | 5 %         |
| `IVA_10_5` | `4`       | 10.5 %      |
| `IVA_21`   | `5`       | 21 %        |
| `IVA_27`   | `6`       | 27 %        |

```ts twoslash theme={null}
import { ARCA_VOUCHER_TYPES, ARCA_VAT_RATES } from "facturas/constants";

console.log(ARCA_VOUCHER_TYPES.FACTURA_B); // 6
console.log(ARCA_VAT_RATES.IVA_21);        // 5 (ARCA's internal code for 21%)
```

<Warning>
  `ARCA_VAT_RATES.IVA_21` is `5`, not `21`. Always use the constant keys rather than numeric literals to avoid this common confusion.
</Warning>

***

## `ARCA_CURRENCY_IDS`

Maps human-readable currency names to ARCA's internal currency identifiers. Use these in `currencyId` fields when constructing a `WsfeVoucherInput` directly.

| Key   | ARCA ID | Currency       |
| ----- | ------- | -------------- |
| `ARS` | `"PES"` | Argentine Peso |
| `USD` | `"DOL"` | US Dollar      |

```ts twoslash theme={null}
import { ARCA_CURRENCY_IDS } from "facturas/constants";

ARCA_CURRENCY_IDS.ARS; // "PES"
ARCA_CURRENCY_IDS.USD; // "DOL"
```

<Note>
  ARCA does not use ISO 4217 codes for currencies in its protocol. `"PES"` is the ARCA ID for ARS and `"DOL"` is the ARCA ID for USD. The high-level builders (`buildFacturaB`, `buildFacturaC`) accept ISO codes (`"ARS"`, `"USD"`) and translate them internally — you only need `ARCA_CURRENCY_IDS` when working at the exact layer.
</Note>

***

## `ISO_CURRENCIES`

ISO 4217 currency codes used by the high-level builders.

| Key   | Value   |
| ----- | ------- |
| `ARS` | `"ARS"` |
| `USD` | `"USD"` |

```ts twoslash theme={null}
import { ISO_CURRENCIES } from "facturas/constants";

ISO_CURRENCIES.ARS; // "ARS"
ISO_CURRENCIES.USD; // "USD"
```

***

## `ARCA_CURRENCIES` (deprecated)

A compatibility alias that maps directly to ARCA protocol IDs (`"PES"`, `"DOL"`). This export is **deprecated** — use `ARCA_CURRENCY_IDS` instead.

```ts twoslash theme={null}
import { ARCA_CURRENCIES } from "facturas/constants";

// Deprecated — prefer ARCA_CURRENCY_IDS
ARCA_CURRENCIES.PES; // "PES"
ARCA_CURRENCIES.DOL; // "DOL"
```

***

## Runtime Catalogs

The constants above cover the most common codes used throughout the SDK documentation and examples. When you need the full, authoritative list from ARCA at runtime, call the catalog methods on the `wsfe` service:

```ts twoslash theme={null}
import { createArcaClient } from "facturas";
const arca = createArcaClient({ taxId: "20123456786", certificatePem: "", privateKeyPem: "", environment: "test" });
// ---cut---
const voucherTypes   = await arca.wsfe.getVoucherTypes();
const documentTypes  = await arca.wsfe.getDocumentTypes();
const currencyTypes  = await arca.wsfe.getCurrencyTypes(); // returns ARCA IDs, not ISO codes
const vatRates       = await arca.wsfe.getVatRates();
```

<Tip>
  `getCurrencyTypes()` returns ARCA protocol identifiers like `"PES"` and `"DOL"`, not ISO 4217 codes. Keep this in mind if you display these values to end users.
</Tip>
