Liquidaciones de Compra
Liquidaciones de Compra
Section titled “Liquidaciones de Compra”Dominio: https://test-api-factura.edw-dev.com
Dominio: https://api-financiero.e-dinky.com
Las liquidaciones de compra son documentos electrónicos que se emiten cuando se adquieren bienes o servicios de personas naturales no obligadas a llevar contabilidad, personas del exterior sin establecimiento permanente en Ecuador, o en casos específicos donde el comprador debe asumir la obligación de facturar.
Información General
Section titled “Información General”- Código SRI:
03
- Tipo de documento: Liquidación de Compra
- Uso: Compras a no obligados a facturar, importaciones, servicios del exterior
- Proveedor requerido: Sí
- Documento de soporte: Opcional
- Emisión automática: Opcional
Endpoint
Section titled “Endpoint”POST /api/v1/documents/create
Headers Requeridos
Section titled “Headers Requeridos”Content-Type: application/jsonAccept: application/jsonAuthorization: Bearer {token}
Parámetros Específicos
Section titled “Parámetros Específicos”Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
sri_code_document | string | Sí | Debe ser "03" para liquidaciones de compra |
send_to_emit | boolean | No | Si se debe emitir automáticamente al SRI |
supplier | object | Sí | Información del proveedor |
document | object | Sí | Información del documento |
items | array | Sí | Array de productos/servicios adquiridos |
payments | array | No | Formas de pago |
aditional_fields | array | No | Campos adicionales |
Estructura del Documento
Section titled “Estructura del Documento”{ "date": "2024-01-15", "establishment": "001", "point_of_emission": "001", "currency": "DOLAR", "exchange_rate": 1.0}
Casos de Uso Comunes
Section titled “Casos de Uso Comunes”Caso | Descripción | Proveedor Típico |
---|---|---|
Persona natural no obligada | Compras a personas naturales | Agricultor, artesano |
Servicios del exterior | Servicios prestados desde el exterior | Consultoría internacional |
Importaciones | Bienes importados | Proveedor extranjero |
Servicios profesionales | Honorarios profesionales | Profesional independiente |
Transporte | Servicios de transporte | Transportista independiente |
Ejemplos de Implementación
Section titled “Ejemplos de Implementación”Liquidación de Compra Simple
Section titled “Liquidación de Compra Simple”Solicitud
Section titled “Solicitud”{ "sri_code_document": "03", "send_to_emit": true, "supplier": { "identification_number": "0987654321", "name": "María", "lastname": "Agricultora", "identification_type": "CEDULA", "address": "Sector Rural, Imbabura" }, "document": { "date": "2024-01-15", "establishment": "001", "point_of_emission": "001", "currency": "DOLAR", "exchange_rate": 1.0 }, "items": [ { "code": "AGRI-001", "description": "Papas frescas", "rate": 0.50, "quantity": 100, "unit": "KG", "subtotal": 50.00, "taxes": [ { "code": "2", "percentaje_code": "2", "percentaje_tax": 12, "total_tax": 6.00 } ] } ], "payments": [ { "payment_method": "01", "total": 56.00 } ]}
Respuesta Exitosa (201)
Section titled “Respuesta Exitosa (201)”{ "message": "Documento creado exitosamente", "status": "CREATED", "payload": { "id": 123456793, "environment": "PROD", "number": 1, "date": "2024-01-15", "subtotal": "50.00", "tax_amount": "6.00", "total": "56.00", "type": "purchase_settlement", "supplier": { "id": 987654324, "full_name": "María Agricultora", "identification_type": "cedula", "identification_number": "0987654321" }, "sri": { "access_key": "1501202403012345678900110010010000000011234567890", "status": "AUTORIZADO", "sequential_number": "000000001", "establishment": "001", "point_emission": "001", "document_number": "001-001-000000001", "type_document": "LIQUIDACION COMPRA", "code_document": "03" }, "items": [ { "position": 1, "code": "AGRI-001", "description": "Papas frescas", "rate": "0.50", "quantity": "100.00", "unit": "KG", "subtotal": "50.00", "total_tax": "6.00", "total": "56.00" } ], "payments": [ { "payment_method": "01", "payment_method_description": "Sin utilización del sistema financiero", "total": "56.00" } ] }}
Liquidación de Compra con Servicios del Exterior
Section titled “Liquidación de Compra con Servicios del Exterior”Solicitud
Section titled “Solicitud”{ "sri_code_document": "03", "supplier": { "identification_number": "9999999999999", "name": "Consultora", "lastname": "Internacional LLC", "identification_type": "PASAPORTE", "address": "Miami, Florida, USA" }, "document": { "date": "2024-10-09", "sri_establishment": "001", "sri_point_emi": "004", "currency": "DOLAR", "exchange_rate": 1.0 }, "items": [ { "code": "SERV-EXT-001", "description": "Consultoría en sistemas", "rate": 2000.00, "quantity": 1, "unit": "SERV", "subtotal": 2000.00, "taxes": [ { "code": "2", "percentaje_code": "2", "percentaje_tax": 12, "total_tax": 240.00 }, { "code": "5", "percentaje_code": "4580", "percentaje_tax": 5, "total_tax": 100.00 } ] } ], "payments": [ { "payment_method": "20", "total": 2340.00 } ], "aditional_fields": [ { "key": "Contrato", "value": "CONT-2024-001", "type": "custom" }, { "key": "Pais_Origen", "value": "Estados Unidos", "type": "sri" } ]}
Respuesta con Servicios del Exterior (201)
Section titled “Respuesta con Servicios del Exterior (201)”{ "message": "Documento creado", "status": "CREATED", "payload": { "id": 1339329974, "environment": "TEST", "number": 5, "date": "2024-10-09", "subtotal": "2000.00", "tax_amount": "340.00", "total": "2340.00", "status": "draft", "type": "purchase_settlement", "supplier": { "id": 61247348, "full_name": "Consultora Internacional LLC", "identification_type": "pasaporte", "identification_number": "9999999999999" }, "sri": { "establishment": "001", "point_emi": "004", "type_document": "LIQUIDACION COMPRA", "title_document": "Liquidación de compra", "code_document": "03" }, "items": [ { "position": 1, "code": "SERV-EXT-001", "description": "Consultoría en sistemas", "rate": "2000.00", "quantity": "1.00", "unit": "SERV", "subtotal": "2000.00", "total_tax": "340.00", "total": "2340.00", "taxes": [ { "type": "IVA", "name": "12%", "code": "2", "percentaje_code": "2", "rate_before_tax": "2000.00", "percentaje_tax": "12.00", "total_tax": "240.00", "rate_after_tax": "2240.00" }, { "type": "ISD", "name": "5%", "code": "5", "percentaje_code": "4580", "rate_before_tax": "2000.00", "percentaje_tax": "5.00", "total_tax": "100.00", "rate_after_tax": "2100.00" } ] } ], "payments": [ { "payment_method": "20", "payment_method_description": "Otros con utilización del sistema financiero", "total": "2340.00" } ], "taxes": [ { "tax_type": "IVA", "tax_name": "12%", "tax_rate": "240.00", "tax_subtotal": "2000.00", "tax_code": "2", "tax_code_sri": "2" }, { "tax_type": "ISD", "tax_name": "5%", "tax_rate": "100.00", "tax_subtotal": "2000.00", "tax_code": "5", "tax_code_sri": "4580" } ], "additional_info": { "contract": "CONT-2024-001", "origin_country": "Estados Unidos" } }}
Ejemplos de Código
Section titled “Ejemplos de Código”curl -X POST "https://dev-facturacion.e-dinky.test/api/v1/documents/create" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "sri_code_document": "03", "send_to_emit": true, "supplier": { "identification_number": "0987654321", "name": "María", "lastname": "Agricultora", "identification_type": "CEDULA", "email": "[email protected]", "address": "Sector Rural, Imbabura" }, "document": { "date": "2024-01-15", "establishment": "001", "point_of_emission": "001", "currency": "DOLAR", "exchange_rate": 1.0 }, "items": [ { "code": "AGRI-001", "description": "Papas frescas", "rate": 0.50, "quantity": 100, "unit": "KG", "subtotal": 50.00, "taxes": [ { "code": "2", "percentaje_code": "2", "percentaje_tax": 12, "total_tax": 6.00 } ] } ], "payments": [ { "payment_method": "01", "total": 56.00 } ] }'
<?php
use Illuminate\Support\Facades\Http;
$token = 'your-api-token';
$response = Http::withHeaders([ 'Content-Type' => 'application/json', 'Accept' => 'application/json', 'Authorization' => 'Bearer ' . $token,])->post('https://dev-facturacion.e-dinky.test/api/v1/documents/create', [ 'sri_code_document' => '03', 'send_to_emit' => true, 'supplier' => [ 'identification_number' => '0987654321', 'name' => 'María', 'lastname' => 'Agricultora', 'identification_type' => 'CEDULA', 'address' => 'Sector Rural, Imbabura' ], 'document' => [ 'date' => '2024-01-15', 'establishment' => '001', 'point_of_emission' => '001', 'currency' => 'DOLAR', 'exchange_rate' => 1.0 ], 'items' => [ [ 'code' => 'AGRI-001', 'description' => 'Papas frescas', 'rate' => 0.50, 'quantity' => 100, 'unit' => 'KG', 'subtotal' => 50.00, 'taxes' => [ [ 'code' => '2', 'percentaje_code' => '2', 'percentaje_tax' => 12, 'total_tax' => 6.00 ] ] ] ], 'payments' => [ [ 'payment_method' => '01', 'total' => 56.00 ] ]]);
if ($response->successful()) { $document = $response->json(); echo "Liquidación de compra creada: " . $document['payload']['id']; echo "Número de documento: " . $document['payload']['sri']['document_number']; echo "Proveedor: " . $document['payload']['supplier']['full_name']; echo "Total: $" . $document['payload']['total'];} else { echo "Error: " . $response->body();}
const axios = require('axios');
const createPurchaseSettlement = async () => { const token = 'your-api-token';
const config = { method: 'post', url: 'https://dev-facturacion.e-dinky.test/api/v1/documents/create', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': `Bearer ${token}` }, data: { sri_code_document: '03', send_to_emit: true, supplier: { identification_number: '0987654321', name: 'María', lastname: 'Agricultora', identification_type: 'CEDULA', address: 'Sector Rural, Imbabura' }, document: { date: '2024-01-15', establishment: '001', point_of_emission: '001', currency: 'DOLAR', exchange_rate: 1.0 }, items: [ { code: 'AGRI-001', description: 'Papas frescas', rate: 0.50, quantity: 100, unit: 'KG', subtotal: 50.00, taxes: [ { code: '2', percentaje_code: '2', percentaje_tax: 12, total_tax: 6.00 } ] } ], payments: [ { payment_method: '01', total: 56.00 } ] } };
try { const response = await axios(config); console.log('Liquidación de compra creada:', response.data.payload.id); console.log('Número de documento:', response.data.payload.sri.document_number); console.log('Proveedor:', response.data.payload.supplier.full_name); console.log('Total: $', response.data.payload.total); return response.data; } catch (error) { console.error('Error:', error.response?.data || error.message); throw error; }};
// UsocreatePurchaseSettlement() .then(result => console.log('Éxito:', result)) .catch(error => console.error('Error:', error));
Tipos de Liquidaciones de Compra
Section titled “Tipos de Liquidaciones de Compra”1. Compras a Personas Naturales No Obligadas
Section titled “1. Compras a Personas Naturales No Obligadas”- Proveedor: Persona natural sin obligación de facturar
- Casos: Agricultores, artesanos, pequeños productores
- Identificación: Cédula de identidad
- Características: Compras locales, productos primarios
2. Servicios del Exterior
Section titled “2. Servicios del Exterior”- Proveedor: Persona o empresa extranjera
- Casos: Consultoría, software, servicios digitales
- Identificación: Pasaporte o identificación extranjera
- Características: Puede incluir ISD, retenciones especiales
3. Importaciones
Section titled “3. Importaciones”- Proveedor: Exportador extranjero
- Casos: Mercaderías importadas
- Identificación: Según país de origen
- Características: Incluye aranceles, IVA importación
4. Servicios Profesionales
Section titled “4. Servicios Profesionales”- Proveedor: Profesional independiente
- Casos: Honorarios profesionales
- Identificación: Cédula o RUC
- Características: Sujeto a retenciones
5. Transporte
Section titled “5. Transporte”- Proveedor: Transportista independiente
- Casos: Servicios de transporte
- Identificación: Cédula
- Características: Tarifas especiales de retención
Impuestos Aplicables
Section titled “Impuestos Aplicables”IVA (Impuesto al Valor Agregado)
Section titled “IVA (Impuesto al Valor Agregado)”- Tarifa 0%: Productos básicos, exportaciones
- Tarifa 12%: Servicios, productos gravados
- Tarifa 15%: Servicios específicos (según normativa)
ISD (Impuesto a la Salida de Divisas)
Section titled “ISD (Impuesto a la Salida de Divisas)”- Tarifa 5%: Pagos al exterior
- Aplicación: Servicios del exterior, importaciones
- Exenciones: Según normativa vigente
ICE (Impuesto a los Consumos Especiales)
Section titled “ICE (Impuesto a los Consumos Especiales)”- Aplicación: Productos específicos
- Tarifas: Según tabla del SRI
- Casos: Bebidas, cigarrillos, vehículos
Validaciones Específicas
Section titled “Validaciones Específicas”Proveedor (Supplier)
Section titled “Proveedor (Supplier)”- Identificación: Debe ser válida según tipo
- Tipo: CEDULA, RUC, PASAPORTE
- Residencia: Especificar si es del exterior
- Email: Requerido para notificaciones
- Códigos: Deben existir en catálogo
- Descripciones: Claras y específicas
- Precios: Coherentes con mercado
- Impuestos: Aplicación correcta según tipo
- Métodos: Válidos según SRI
- Totales: Deben coincidir con documento
- Moneda: Especificar si es extranjera
- Tipo de cambio: Requerido para moneda extranjera
Totales
Section titled “Totales”- Subtotal: Suma correcta de items
- Impuestos: Cálculo exacto según tarifas
- Total: Validación matemática precisa
Códigos de Respuesta
Section titled “Códigos de Respuesta”Código | Descripción | Acción |
---|---|---|
201 | Liquidación creada exitosamente | Continuar con el flujo |
400 | Datos inválidos | Revisar formato de datos |
401 | Token inválido | Renovar autenticación |
422 | Error de validación | Corregir datos según errores |
500 | Error del servidor | Reintentar más tarde |
Errores Comunes
Section titled “Errores Comunes”Error de Validación (422)
Section titled “Error de Validación (422)”{ "message": "Error de validación", "status": "UNPROCESSABLE_ENTITY", "errors": { "supplier.identification_number": [ "La identificación del proveedor no es válida" ], "items.0.taxes": [ "Los impuestos son requeridos" ], "payments.0.total": [ "El total del pago no coincide con el documento" ] }}
Soluciones
Section titled “Soluciones”-
Identificación del proveedor inválida
- Verificar formato según tipo
- Confirmar dígito verificador
- Revisar longitud correcta
-
Impuestos requeridos
- Especificar IVA aplicable
- Incluir ISD si es del exterior
- Calcular correctamente los montos
-
Total de pagos incorrecto
- Verificar suma de pagos
- Confirmar que coincida con total
- Revisar métodos de pago
Mejores Prácticas
Section titled “Mejores Prácticas”1. Validación de Proveedores
Section titled “1. Validación de Proveedores”// Validar tipo de proveedor antes de crear liquidación$validateSupplier = function($supplier) { // Verificar si es persona natural no obligada if ($supplier['identification_type'] === 'CEDULA') { $isObligated = $this->checkIfObligatedToIssueInvoices($supplier['identification_number']); if ($isObligated) { throw new SupplierObligatedToInvoiceException(); } }
// Verificar si es del exterior if ($supplier['identification_type'] === 'PASAPORTE') { $this->validateForeignSupplier($supplier); }};
2. Cálculo de Impuestos
Section titled “2. Cálculo de Impuestos”// Calcular impuestos automáticamente según tipo de proveedorconst calculateTaxes = (items, supplierType, isFromAbroad) => { return items.map(item => { const taxes = [];
// IVA if (item.iva_applicable) { taxes.push({ code: '2', percentaje_code: '2', percentaje_tax: 12, total_tax: item.subtotal * 0.12 }); }
// ISD para servicios del exterior if (isFromAbroad && item.type === 'service') { taxes.push({ code: '5', percentaje_code: '4580', percentaje_tax: 5, total_tax: item.subtotal * 0.05 }); }
return { ...item, taxes }; });};
3. Gestión de Monedas
Section titled “3. Gestión de Monedas”// Manejar diferentes monedas y tipos de cambio$handleCurrency = function($document, $items) { if ($document['currency'] !== 'DOLAR') { $exchangeRate = $this->getExchangeRate($document['currency'], $document['date']); $document['exchange_rate'] = $exchangeRate;
// Convertir montos a dólares foreach ($items as &$item) { $item['rate_usd'] = $item['rate'] / $exchangeRate; $item['subtotal_usd'] = $item['subtotal'] / $exchangeRate; } }
return [$document, $items];};
4. Documentación de Soporte
Section titled “4. Documentación de Soporte”// Mantener documentación de soporte adecuadaconst createPurchaseSettlement = (data) => { return { ...data, support_documentation: { contract: data.contract_number, purchase_order: data.purchase_order, delivery_note: data.delivery_note, quality_certificate: data.quality_certificate } };};
Flujo Recomendado
Section titled “Flujo Recomendado”-
Verificar elegibilidad del proveedor
- Confirmar que no está obligado a facturar
- Validar identificación y datos
- Verificar si es del exterior
-
Determinar impuestos aplicables
- Identificar tipo de bien/servicio
- Calcular IVA según tarifa
- Incluir ISD si aplica
- Considerar ICE si corresponde
-
Preparar documentación
- Reunir documentos de soporte
- Validar precios y cantidades
- Confirmar formas de pago
-
Crear liquidación
- Enviar solicitud POST
- Verificar respuesta
- Manejar errores específicos
-
Procesar resultado
- Actualizar inventario si aplica
- Registrar en contabilidad
- Preparar retenciones si corresponde
- Notificar al proveedor
Consideraciones Fiscales
Section titled “Consideraciones Fiscales”Obligaciones del Comprador
Section titled “Obligaciones del Comprador”- Emisión: Obligatorio emitir liquidación
- Retenciones: Aplicar retenciones según normativa
- Declaración: Incluir en declaraciones de IVA
- Archivo: Mantener documentación de soporte
Derechos del Comprador
Section titled “Derechos del Comprador”- Crédito tributario: IVA pagado es crédito tributario
- Deducibilidad: Gastos deducibles según normativa
- Compensación: Compensar con impuestos por pagar
Obligaciones del Proveedor
Section titled “Obligaciones del Proveedor”- Recepción: Recibir copia de la liquidación
- Declaración: Declarar ingresos si está obligado
- Retenciones: Aceptar retenciones aplicadas
Impacto Contable
Section titled “Impacto Contable”En el Comprador (Emisor)
Section titled “En el Comprador (Emisor)”- Inventario/Gastos: Registro del bien/servicio adquirido
- IVA: Crédito tributario por IVA pagado
- Cuentas por pagar: Obligación con el proveedor
- Retenciones: Pasivo con el SRI si aplica
En el Proveedor
Section titled “En el Proveedor”- Ingresos: Registro del ingreso por venta
- Cuentas por cobrar: Derecho de cobro
- Retenciones: Crédito tributario si aplica
- IVA: Débito fiscal si está obligado
Casos de Uso Específicos
Section titled “Casos de Uso Específicos”1. Compra Agrícola
Section titled “1. Compra Agrícola”{ "supplier": { "identification_type": "CEDULA", "name": "Juan", "lastname": "Agricultor" }, "items": [ { "description": "Maíz amarillo", "rate": 0.40, "quantity": 1000, "unit": "KG" } ]}
2. Servicio del Exterior
Section titled “2. Servicio del Exterior”{ "supplier": { "identification_type": "PASAPORTE", "name": "Tech", "lastname": "Solutions Inc", "address": "California, USA" }, "items": [ { "description": "Licencia de software", "rate": 1200.00, "taxes": [ {"code": "2", "percentaje_tax": 12}, {"code": "5", "percentaje_tax": 5} ] } ]}
3. Servicios Profesionales
Section titled “3. Servicios Profesionales”{ "supplier": { "identification_type": "CEDULA", "name": "Ana", "lastname": "Consultora" }, "items": [ { "description": "Consultoría legal", "rate": 800.00, "taxes": [ {"code": "2", "percentaje_tax": 12} ] } ]}
Notas Importantes
Section titled “Notas Importantes”- 📋 Obligación legal: Obligatorio para compras a no obligados a facturar
- ⚖️ Cumplimiento fiscal: Debe cumplir normativa tributaria
- 🔗 Trazabilidad: Permite seguimiento completo de la compra
- ⏰ Emisión oportuna: Debe emitirse al momento de la compra
- 📧 Notificaciones: El proveedor recibe notificación
- 💾 Impacto contable: Afecta automáticamente la contabilidad
- 🔄 Estados sincronizados: El estado se actualiza automáticamente
- 📊 Reportes fiscales: Genera reportes para declaraciones
- 🚫 No modificable: Una vez autorizada, no se puede modificar
- 💰 Crédito tributario: Genera crédito tributario de IVA
- 🌍 Servicios del exterior: Manejo especial para proveedores extranjeros
- 🏛️ Retenciones: Puede generar obligaciones de retención