---
title: "Crear una plantilla"
method: POST
path: "/documents/templates"
tags: ["Plantillas"]
---

# Crear una plantilla

`POST /documents/templates`

## Request

- Base URL: `https://www.facture.ar/api`
- URL: `https://www.facture.ar/api/documents/templates`
- Auth: API key in header `x-api-key`

Una plantilla define cómo se lee y se factura un tipo de documento (CUIT, punto de venta, modo, cliente fijo, precios, instrucciones para la IA, columnas de la planilla) y, con recurrence, una factura que sale sola todos los meses.

## Request body

- TemplateInput
  - `name` string, required
  - `cuitId` string, nullable: CUIT emisor. Obligatorio en modo automático y en las recurrentes
  - `ptoVta` integer, nullable
  - `mode` 'manual' | 'automatic'
  - `concepto` 1 | 2 | 3
  - `ivaRate` 0 | 2.5 | 5 | 10.5 | 21 | 27
  - `pricesIncludeIva` boolean
  - `receiverDocType` 'CUIT' | 'CUIL' | 'DNI' | 'null', nullable: Cliente fijo: todas las facturas de la plantilla van a él
  - `receiverDocNumber` string, nullable
  - `receiverName` string, nullable
  - `receiverCondicionIva` integer, nullable
  - `receiverEmail` string, email, nullable
  - `items` object[], nullable: Líneas fijas, para las facturas recurrentes
    - `description` string, required
    - `quantity` number, required
    - `unitPrice` number, required
  - `priceList` object[], nullable: Precios para documentos que no los traen (remitos)
    - `description` string, required
    - `unitPrice` number, required
  - `instructions` string, nullable: Lo que la IA tiene que saber para leer este tipo de documento
  - `columnMapping` object, nullable: Columnas de la planilla → campos de la factura
    - `headerRow` integer
    - `columns` object: Campo → nombre de la columna. Campos: receiverName, receiverDoc, receiverEmail, receiverCondicionIva, receiverAddress, description, quantity, unitPrice, lineTotal, ivaRate, reference, date, concepto
    - `groupBy` string, nullable
    - `pricesIncludeIva` boolean
  - `paymentTermDays` integer, nullable
  - `sendEmail` boolean: Mandarle la factura al cliente por email
  - `emailCopyTo` string, email, nullable
  - `recurrence` 'monthly' | 'null', nullable: monthly: emite las líneas fijas todos los meses en dayOfMonth
  - `dayOfMonth` integer, nullable
  - `active` boolean

## Response `201`

Plantilla creada

- object
  - `template` Template
    - `id` string
    - `userId` string
    - `name` string
    - `cuitId` string, nullable: CUIT emisor. Obligatorio en modo automático y en las recurrentes
    - `ptoVta` integer, nullable
    - `mode` 'manual' | 'automatic'
    - `concepto` 1 | 2 | 3
    - `ivaRate` 0 | 2.5 | 5 | 10.5 | 21 | 27
    - `pricesIncludeIva` boolean
    - `receiverDocType` 'CUIT' | 'CUIL' | 'DNI' | 'null', nullable: Cliente fijo: todas las facturas de la plantilla van a él
    - `receiverDocNumber` string, nullable
    - `receiverName` string, nullable
    - `receiverCondicionIva` integer, nullable
    - `receiverEmail` string, email, nullable
    - `items` object[], nullable: Líneas fijas, para las facturas recurrentes
      - `description` string, required
      - `quantity` number, required
      - `unitPrice` number, required
    - `priceList` object[], nullable: Precios para documentos que no los traen (remitos)
      - `description` string, required
      - `unitPrice` number, required
    - `instructions` string, nullable: Lo que la IA tiene que saber para leer este tipo de documento
    - `columnMapping` object, nullable: Columnas de la planilla → campos de la factura
      - `headerRow` integer
      - `columns` object: Campo → nombre de la columna. Campos: receiverName, receiverDoc, receiverEmail, receiverCondicionIva, receiverAddress, description, quantity, unitPrice, lineTotal, ivaRate, reference, date, concepto
      - `groupBy` string, nullable
      - `pricesIncludeIva` boolean
    - `paymentTermDays` integer, nullable
    - `sendEmail` boolean: Mandarle la factura al cliente por email
    - `emailCopyTo` string, email, nullable
    - `recurrence` 'monthly' | 'null', nullable: monthly: emite las líneas fijas todos los meses en dayOfMonth
    - `dayOfMonth` integer, nullable
    - `active` boolean
    - `nextRunAt` string, date-time, nullable
    - `lastRunAt` string, date-time, nullable
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `400`: Datos inválidos

---

[API](https://skmtc.dev/facture/apis/facturear-api.md) · [All operations](https://skmtc.dev/facture/apis/facturear-api/llms.txt) · [OpenAPI document](https://skmtc.dev/facture/apis/facturear-api/revisions/b572c5908978?raw)
