Nota de Crédito Electrónica

Esta sección describe los endpoints necesarios para crear notas de crédito electrónicas en el sistema de facturación electrónica de El Salvador.

Crear Nota de Crédito Electrónica

POST /api/v1/creditnotes

Crea y emite una nota de crédito electrónica

Este endpoint permite crear y emitir una nota de crédito electrónica que cumple con los requisitos del Ministerio de Hacienda. Las notas de crédito siempre deben hacer referencia a documentos fiscales existentes.

Ejemplo de Solicitud

Request

{
    "items": [
        {
            "type": 1,
            "description": "Venta gravada",
            "quantity": 1,
            "unit_measure": 59,
            "unit_price": 1000.00,
            "taxed_sale": 1000.00,
            "exempt_sale": 0,
            "non_subject_sale": 0,
            "taxes": [
                "20"
            ],
            "related_doc" : "DE4BD411-DEBF-4EB8-B..."
        }
    ],
    "receiver": {
        "nrc": "0000",
        "nit": "00000000000000",
        "name": "CLIENTE DE PRUEBA",
        "commercial_name": "EJEMPLO S.A de S.V",
        "activity_code": "47190",
        "activity_description": "ACTIVIDADES JURÍDICAS Y CONTABLES",
        "address": {
            "department": "06",
            "municipality": "22",
            "complement": "Dirección de Prueba 1, N° 1234"
        },
        "phone": "21212828",
        "email": "cliente@gmail.com"
    },
    "summary": {
        "operation_condition": 1,
        "total_taxed": 1000.00,
        "iva_retention": 10,
        "sub_total_sales": 1000.00,
        "sub_total": 1000.00,
        "total_operation": 1120.00,
        "taxes": [
            {
                "code": "20",
                "description": "IVA 13%",
                "value": 130.00
            }
        ]
    },
    "extension": {
        "delivery_name": "Juan Pérez",
        "delivery_document": "06141809931020",
        "receiver_name": "María López",
        "receiver_document": "06142509882011",
        "observation": "Entrega en oficina central"
    },
    "related_docs": [
        {
            "document_type": "03",
            "generation_type": 2,
            "document_number": "DE4BD411-DEBF-4..."
        }
    ],

    // Nota, estos campos si NO seran ocupados, no es necesario enviarlos, los muestra acá unicamente como referencia
    "appendixes": null,
    "third_party_sale": null,
    "other_docs": null

}
                

Ejemplo de Respuesta

Response

{
    "success": true,
    "reception_stamp": "202534D1BECF3321453...",
    "qr_link": "https://admin.factura.gob.sv/consultaPublica?ambiente=00&codGen=5367521F-DD80-4B6B-9...&fechaEmi=FECHA-DE-EMISION",
    "data": {
        "identificacion": {
            "version": 3,
            "ambiente": "00",
            "tipoDte": "05",
            "numeroControl": "DTE-05-C0020000-000000000000001",
            "codigoGeneracion": "5367521F-DD80-4B6B-9...",
            "tipoModelo": 1,
            "tipoOperacion": 1,
            "tipoContingencia": null,
            "motivoContin": null,
            "fecEmi": "2025-04-16",
            "horEmi": "17:54:19",
            "tipoMoneda": "USD"
        },
        "emisor": {
            "nit": "00000000000000",
            "nrc": "0000000",
            "nombre": "EMPRESA DE PRUEBAS SA DE CV 2",
            "codActividad": "00000",
            "descActividad": "Venta al por mayor de otros productos",
            "tipoEstablecimiento": "01",
            "direccion": {
                "departamento": "06",
                "municipio": "20",
                "complemento": "BOULEVARD SANTA ELENA SUR, SANTA TECLA"
            },
            "telefono": "21212828",
            "correo": "facturacion@empresa.com.sv",
            "nombreComercial": "EJEMPLO"
        },
        "receptor": {
            "nombre": "CLIENTE DE PRUEBA",
            "nrc": "0000",
            "nit": "00000000000000",
            "codActividad": "00000",
            "descActividad": "ACTIVIDADES JURÍDICAS Y CONTABLES",
            "direccion": {
                "departamento": "06",
                "municipio": "22",
                "complemento": "Dirección de Prueba 1, N° 1234"
            },
            "telefono": "21212828",
            "correo": "cliente@gmail.com",
            "nombreComercial": "EJEMPLO S.A de S.V"
        },
        "cuerpoDocumento": [
            {
                "numItem": 1,
                "tipoItem": 1,
                "numeroDocumento": "DE4BD411-DEBF-4EB8-B...",
                "codigo": null,
                "codTributo": null,
                "descripcion": "Venta gravada",
                "cantidad": 1,
                "uniMedida": 59,
                "precioUni": 1000,
                "montoDescu": 0,
                "ventaNoSuj": 0,
                "ventaExenta": 0,
                "ventaGravada": 1000,
                "tributos": [
                    "20"
                ]
            }
        ],
        "resumen": {
            "totalNoSuj": 0,
            "totalExenta": 0,
            "totalGravada": 1000,
            "subTotalVentas": 1000,
            "descuNoSuj": 0,
            "descuExenta": 0,
            "descuGravada": 0,
            "totalDescu": 0,
            "tributos": [
                {
                    "codigo": "20",
                    "descripcion": "IVA 13%",
                    "valor": 130
                }
            ],
            "subTotal": 1000,
            "ivaRete1": 10,
            "ivaPerci1": 0,
            "reteRenta": 0,
            "montoTotalOperacion": 1120,
            "totalLetras": "UN MIL CIENTO VEINTE 00/100",
            "condicionOperacion": 1
        },
        "documentoRelacionado": [
            {
                "tipoDocumento": "03",
                "tipoGeneracion": 2,
                "numeroDocumento": "DE4BD411-DEBF-4EB8-B...",
                "fechaEmision": "2025-04-16"
            }
        ],
        "ventaTercero": null,
        "extension": {
            "nombEntrega": "Juan Pérez",
            "docuEntrega": "06141809931020",
            "nombRecibe": "María López",
            "docuRecibe": "06142509882011",
            "observaciones": "Entrega en oficina central"
        },
        "apendice": [
            {
                "campo": "Datos del documento",
                "etiqueta": "Sello de recepción",
                "valor": "202534D1BECF33214..."
            }
        ]
    }
}
                

Campos principales

Los campos necesarios para crear una nota de crédito electrónica

items

Requerido
array
Lista de productos o servicios que componen la nota de crédito

items[].type

Requerido
integer
Tipo de ítem (1: Producto, 2: Servicio, 3: Ambos, 4: Impuesto)

items[].code

Opcional
string
Código del producto o servicio (1-25 caracteres)

items[].description

Requerido
string
Descripción del ítem (1-1000 caracteres)

items[].quantity

Requerido
number
Cantidad del ítem (debe ser mayor que 0 y <= 99999999999.99)

items[].unit_measure

Requerido
integer
Unidad de medida (1-99, debe ser 99 para tipo 4)

items[].unit_price

Requerido
number
Precio unitario (debe ser mayor o igual a 0, mayor que 0 si hay venta gravada)

items[].discount

Requerido
number
Monto de descuento para el ítem (0-100)
Predeterminado: 0

items[].related_doc

Requerido
string
Número del documento relacionado que se está rectificando

items[].taxed_sale

Opcional
number
Venta gravada (debe ser mayor o igual a 0, no puede mezclarse con otros tipos)
Predeterminado: 0

items[].exempt_sale

Opcional
number
Venta exenta (debe ser mayor o igual a 0, no puede mezclarse con otros tipos)
Predeterminado: 0

items[].non_subject_sale

Opcional
number
Venta no sujeta (debe ser mayor o igual a 0, no puede mezclarse con otros tipos)
Predeterminado: 0

items[].tax_code

Opcional
string
Código de impuesto

items[].taxes

Opcional
array
Lista de impuestos aplicables al ítem (obligatorio con venta gravada)

receiver

Requerido
object
Información del receptor o cliente (debe coincidir con el documento original)

receiver.name

Requerido
string
Nombre del receptor

receiver.address

Requerido
object
Dirección del receptor

receiver.address.department

Requerido
string
Código de departamento del receptor

receiver.address.municipality

Requerido
string
Código de municipio del receptor

receiver.address.complement

Requerido
string
Complemento de la dirección del receptor

receiver.nit

Opcional
string
NIT del receptor (obligatorio si el documento relacionado es un CCF)

receiver.nrc

Opcional
string
NRC del receptor (obligatorio si el documento relacionado es un CCF)

receiver.activity_code

Opcional
string
Código de actividad económica (obligatorio si el documento relacionado es un CCF)

receiver.activity_description

Opcional
string
Descripción de actividad económica (obligatorio si el documento relacionado es un CCF)

receiver.commercial_name

Opcional
string
Nombre comercial (obligatorio si el documento relacionado es un CCF)

receiver.email

Opcional
string
Correo electrónico del receptor

receiver.phone

Opcional
string
Teléfono del receptor (8-30 caracteres)

related_docs

Requerido
object
Documentos relacionados que se están rectificando

related_docs.items

Requerido
array
Lista de documentos relacionados

related_docs.items[].document_type

Requerido
string
Tipo de documento (03: CCF, 14: Factura Sujeto Excluido)

related_docs.items[].generation_type

Requerido
integer
Tipo de generación (1: Normal, 2: Contingencia)

related_docs.items[].document_number

Requerido
string
Número del documento relacionado

related_docs.items[].emission_date

Requerido
string
Fecha de emisión del documento relacionado (formato YYYY-MM-DD)

summary

Requerido
object
Resumen de totales de la nota de crédito

summary.total_taxed

Requerido
number
Total de ventas gravadas

summary.total_exempt

Requerido
number
Total de ventas exentas

summary.total_non_subject

Requerido
number
Total de ventas no sujetas

summary.sub_total_sales

Requerido
number
Subtotal de ventas (suma de total_taxed + total_exempt + total_non_subject)

summary.taxed_discount

Requerido
number
Descuento sobre ventas gravadas

summary.exempt_discount

Requerido
number
Descuento sobre ventas exentas

summary.non_subject_discount

Requerido
number
Descuento sobre ventas no sujetas

summary.total_discount

Requerido
number
Total de descuentos

summary.sub_total

Requerido
number
Subtotal (sub_total_sales - descuentos)

summary.operation_condition

Requerido
integer
Condición de operación (1: Contado, 2: Crédito, 3: Otro)

summary.taxes

Opcional
array
Impuestos aplicados a la nota de crédito

summary.iva_retention

Requerido
number
Retención de IVA
Predeterminado: 0

summary.income_retention

Requerido
number
Retención de renta
Predeterminado: 0

summary.iva_perception

Requerido
number
Percepción de IVA (si > 0, debe ser 1% del total_taxed)
Predeterminado: 0

summary.total_operation

Requerido
number
Total de la operación (considerando impuestos, retenciones y percepciones)
Indica campo obligatorio

Validaciones específicas para Nota de Crédito

  • Documentos Relacionados Obligatorios: A diferencia de otros documentos fiscales, las notas de crédito siempre deben tener al menos un documento relacionado.
  • Referencia en Ítems: Todos los ítems deben tener un related_doc que referencie a un document_number en la sección related_docs.
  • Los ítems solo pueden tener un tipo de venta (gravada, exenta o no sujeta)
  • Si hay taxed_sale > 0 (venta gravada):
    • unit_price debe ser mayor que 0
    • Debe existir al menos un impuesto (IVA) en el array taxes
  • Para ítems tipo 4 (Impuesto), unit_measure debe ser 99 y solo se permite el código de impuesto IVA (20)
  • El receiver debe coincidir con el receptor del documento original que se está rectificando
  • Si el documento relacionado es un Comprobante de Crédito Fiscal (CCF), los campos nit, nrc, activity_code, activity_description y commercial_name del receptor son obligatorios
  • El cálculo de impuestos debe considerar los descuentos aplicados

Campos Opcionales

Estos campos complementan la información principal de la factura electrónica, permitiendo casos de uso más específicos.

1. Extension (Extensión)

La extensión contiene información sobre entrega y recepción de bienes o servicios.

Ejemplo de extensión requerida

{
  "extension": {
    "delivery_name": "string",
    "delivery_document": "string",
    "receiver_name": "string",
    "receiver_document": "string",
    "observation": "string"
  }
}

Campos del objeto extension

La extensión es obligatoria cuando el monto total es mayor o igual a $1,095.00

delivery_name

Requerido
string
Nombre de quien entrega (1-100 caracteres)

delivery_document

Requerido
string
Documento de quien entrega (1-25 caracteres, DUI o NIT por ejemplo)

receiver_name

Requerido
string
Nombre de quien recibe (1-100 caracteres)

receiver_document

Requerido
string
Documento de quien recibe (1-25 caracteres, DUI o NIT por ejemplo)

observation

Opcional
string
Observaciones adicionales (máx. 3000 caracteres)
Indica campo obligatorio

Nota

A diferencia de factura y CCF, la extensión de Nota de Crédito no posee el campo vehicule_plate

2. Appendixes (Apéndices)

Los apéndices son campos adicionales que proporcionan información complementaria al documento principal.

Estructura de Apéndices

"appendixes": [
    {
      "field": "string",
      "label": "string",
      "value": "string"
    },
]

Campos de Apéndices

Validaciones para el objeto appendixes

field

Requerido
string
Nombre del campo adicional (2-25 caracteres)

label

Requerido
string
Etiqueta o título del campo (3-50 caracteres)

value

Requerido
string
Valor del campo (1-150 caracteres)
Indica campo obligatorio

Consideraciones importantes:

  • Los apéndices son opcionales en la factura electrónica.
  • Si se incluyen, todos los campos son obligatorios.
  • El sistema puede agregar automáticamente un apéndice conteniendo el "sello de recepción".

3. Other Documents (Otros Documentos)

Los otros documentos incluyen documentos asociados a la operación, como documentos de transporte o médicos.

Estructura de Otros Documentos

"other_docs": [
        {
            "document_code": 0,
            "description": "string",
            "detail": "string",
            "doctor": {
                "name": "string",
                "nit": "string",
                "identification": "string",
                "service_type": 0
            }
        }
    ]

Campos de Otros Documentos

Validaciones para el objeto other_docs

document_code

Requerido
integer
Código del documento (1-4)

description

Opcional
string
Descripción del documento. Obligatorio si document_code ≠ 3

detail

Opcional
string
Detalle del documento. Obligatorio si document_code ≠ 3

doctor

Opcional
object
Información del médico. Obligatorio si document_code = 3
Indica campo obligatorio

Campos del objeto doctor

Validaciones para el objeto doctor dentro de other_docs

name

Requerido
string
Nombre del médico (1-100 caracteres)

service_type

Requerido
integer
Tipo de servicio médico (1-6)

nit

Opcional
string
NIT del médico. Requerido si identification no se proporciona

identification

Opcional
string
Identificación del médico. Requerido si nit no se proporciona
Indica campo obligatorio

Códigos de Documentos:

  1. Documento de Emisor
  2. Documento de Receptor
  3. Documento Médico
  4. Documento de Transporte

Consideraciones importantes:

  • La sección es opcional, pero si se incluye, debe contener entre 1 y 10 documentos.
  • Validaciones específicas:
    • description: 1-100 caracteres
    • detail: 1-300 caracteres
  • Cuando document_code = 3 (Documento Médico), el objeto doctor es obligatorio y los campos description y detail deben estar ausentes.
  • Para los otros códigos, description y detail son obligatorios y doctor debe estar ausente.
  • En doctor, debe proporcionarse o bien nit o bien identification, pero no ambos.

4. Third Party Sale (Venta a Terceros)

Representa ventas realizadas por cuenta de un tercero.

Estructura de Venta a Terceros

"third_party_sale": {
  "name": "string",
  "nit": "string"
}

Campos de Venta a Terceros

Validaciones para el objeto third_party_sale

nit

Requerido
string
NIT del tercero (formato NIT válido)

name

Requerido
string
Nombre del tercero
Indica campo obligatorio

Consideraciones importantes:

  • La sección es opcional.
  • Si se incluye, todos sus campos son obligatorios.
  • Cuando existe venta a terceros, todos los ítems deben tener su campo related_doc con referencia a un documento relacionado.
  • No se pueden mezclar ventas propias con ventas a terceros en el mismo documento.