Documento de ajuste que permite corregir o anular parcialmente una factura ya emitida. Obligatorio para devoluciones despues de 30 dias de la emision original.
Datos del sector
| Campo | Valor |
|---|
| Sector SIAT | 24 (estandar), 47 (Descuento), 48 (ICE) |
| WSDL SIAT | ServicioFacturacionDocumentoAjuste |
| Tipo interno | NOTE_CREDIT_DEBIT |
Variantes por documentSectorType
El campo opcional documentSectorType en el body selecciona la variante de la nota:
| Sector | Tipo | Cuando usarlo |
|---|
24 | Nota Credito-Debito estandar (default) | Devoluciones/ajustes normales |
47 | Nota Credito-Debito Descuento | La factura original tenia descuento adicional prorrateado por item |
48 | Nota Credito-Debito ICE | La factura original tenia productos con Impuesto al Consumo Especifico |
Nunca re-envies las lineas originales. En los tres sectores, las lineas de la factura original
(codigoDetalleTransaccion=1) se clonan desde la base de datos y espejan exacto lo registrado
en SIAT. Solo mandas los items devueltos en returnedDetails. El sector 48 es la unica excepcion:
acepta un overlay minimal en originalDetails solo para los datos ICE (nroItem + marcaIce +
montos ICE), porque la compra-venta original no los almacena. Detalle completo en
Crear Nota Credito/Debito.
Endpoint dedicado
Las notas de credito/debito se crean a partir de una factura original existente usando un endpoint dedicado:
POST /api/v1/invoices/{originalInvoiceId}/credit-note
A diferencia de otros documentos sector, las notas no se crean via POST /api/v1/invoices.
Usa el endpoint dedicado que obtiene automaticamente los datos de la factura original (cliente, CUF, montos, items).
Ver la referencia completa del endpoint en Crear Nota Credito/Debito.
Como funciona
- Envias el UUID de la factura original en la URL + los items devueltos en el body
- El sistema obtiene automaticamente los datos de la factura original
- Los items se separan en dos tablas: originales (
codigoDetalleTransaccion=1, clonados desde la BD) y devueltos (codigoDetalleTransaccion=2, del request)
- Se calculan montos automaticamente:
montoTotalOriginal, montoTotalDevuelto, montoDescuentoCreditoDebito, montoEfectivoCreditoDebito
- La nota se valida contra el SIAT via
ServicioFacturacionDocumentoAjuste
- Se genera PDF dedicado (con dos tablas: items originales + items devueltos) y se envia email
Campos del SIAT (sector 24)
Estos campos se calculan automaticamente por el sistema. Se documentan aqui como referencia del XML que se envia al SIAT:
Cabecera
| Campo XML | Descripcion |
|---|
numeroAutorizacionCuf | CUF de la factura original |
numeroFactura (original) | Numero de la factura original |
fechaEmision (original) | Fecha de emision de la factura original |
montoTotalOriginal | Suma de subtotales de items originales (antes de descuento global) |
montoTotalSujetoIva | Monto total devuelto sujeto a IVA |
montoDescuentoCreditoDebito | Descuento proporcional aplicado en la nota |
montoEfectivoCreditoDebito | 13% IVA sobre el monto devuelto |
Detalle
| Campo XML | Valor | Descripcion |
|---|
codigoDetalleTransaccion | 1 | Item de la factura original |
codigoDetalleTransaccion | 2 | Item devuelto/ajustado |
Ejemplo rapido
curl -X POST "https://sandbox.cucu.bo/api/v1/invoices/ORIGINAL_INVOICE_UUID/credit-note" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"pointOfSaleId": "660e8400-e29b-41d4-a716-446655440004",
"notaType": "CREDITO",
"paymentMethodCode": 1,
"returnedDetails": [
{
"activityEconomic": "620100",
"codeProductSin": "83141",
"description": "Devolucion parcial - Servicio de software",
"quantity": 1,
"unitMeasure": 58,
"priceUnit": 200.00
}
]
}'
const response = await fetch(
'https://sandbox.cucu.bo/api/v1/invoices/ORIGINAL_INVOICE_UUID/credit-note',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: JSON.stringify({
pointOfSaleId: '660e8400-e29b-41d4-a716-446655440004',
notaType: 'CREDITO',
paymentMethodCode: 1,
returnedDetails: [{
activityEconomic: '620100',
codeProductSin: '83141',
description: 'Devolucion parcial - Servicio de software',
quantity: 1,
unitMeasure: 58,
priceUnit: 200.00
}]
})
}
);
import requests
response = requests.post(
'https://sandbox.cucu.bo/api/v1/invoices/ORIGINAL_INVOICE_UUID/credit-note',
headers={
'Content-Type': 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
json={
'pointOfSaleId': '660e8400-e29b-41d4-a716-446655440004',
'notaType': 'CREDITO',
'paymentMethodCode': 1,
'returnedDetails': [{
'activityEconomic': '620100',
'codeProductSin': '83141',
'description': 'Devolucion parcial - Servicio de software',
'quantity': 1,
'unitMeasure': 58,
'priceUnit': 200.00
}]
}
)
Anular una nota
Para anular una nota de credito/debito emitida:
POST /api/v1/invoices/{noteId}/cancel-note?motivo=1
Ver Anular Nota Credito/Debito para la referencia completa.
La factura original debe estar en estado VALIDATED. No se puede emitir una nota sobre una factura rechazada o ya anulada.
Si la factura original usa montoGiftCard > 0, el paymentMethodCode debe incluir 27 (Gift Card). Error SIAT 1050 si se omite.