Emitir factura
Numera el comprobante, lo guarda y lo encola para firmarlo y enviarlo al SRI. El estado avanza solo: consúltalo o recibe un webhook. Envía un Idempotency-Key para reintentar sin duplicar.
Tu clave API: fb_sandbox_… emite en Sandbox, fb_test_… en test, el servicio de pruebas de la autoridad tributaria, y fb_live_… en live, su producción.
En: header
Encabezados
1 <= length <= 255Cuerpo de la solicitud
application/json
Tipos de TypeScript
Usa el tipo request body en TypeScript.
La fecha de emisión es siempre hoy en Ecuador: los comprobantes se transmiten al emitirse.
1 <= items1 <= itemsPlaca del vehículo (placa): del servicio de transporte comercial (tabla 33) o al que se despachó combustible (tabla 29). Sin espacios.
^[A-Z0-9-]{1,20}$Propina (propina), hasta el 10 % del subtotal sin impuestos. Suma al total.
^\d+(\.\d{1,2})?$Número de la guía de remisión que acompaña a la mercadería (guiaRemision).
^\d{3}-\d{3}-\d{9}$Factura de exportación (anexo 4). El comprador necesita dirección.
Reembolso de gastos (anexo 5): los comprobantes que se reembolsan. Calculamos sus totales.
Retenciones que declara la propia factura (retenciones, tablas 22 y 23): comercializadores de combustibles y prensa.
Factura sustitutiva de guía de remisión (anexo 9): el traslado de la mercadería que vende.
Otros rubros de terceros (anexo 8): valores que cobras por cuenta de terceros. No forman parte del total de la factura.
Comprobante comercial negociable (anexo 11): exige la dirección de la contraparte y un plazo en cada pago.
Descuento adicional sobre la base del IVA de una tarifa (descuentoAdicional), aplicado después de las líneas: el IVA de esa tarifa se calcula sobre la base menos el descuento.
IVA que se devuelve a una persona adulta mayor (valorDevolucionIva, anexo 20), por tarifa, tal como lo autorizó el servicio DIG del SRI. Se resta del total; el comprador debe identificarse con cédula.
La máquina fiscal desde la que se emite el comprobante (anexo 13). Solo si lo emite una.
[]uuid^\d{3}$^\d{3}${}Cuerpo de la respuesta
application/json
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X POST "https://example.com/v1/ec/invoices" \ -H "Content-Type: application/json" \ -d '{ "buyer": { "identification_type": "consumidor_final" }, "lines": [ { "description": "string", "quantity": "string", "unit_price": "string", "taxes": [ { "type": "iva", "rate": "iva_15" } ] } ], "payments": [ { "method": "sin_sistema_financiero" } ] }'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "country": "ec", "currency": "string", "environment": "sandbox", "status": "pending", "status_transitions": { "pending": "2019-08-24T14:15:22Z", "submitted": "2019-08-24T14:15:22Z", "authorized": "2019-08-24T14:15:22Z", "returned": "2019-08-24T14:15:22Z", "not_authorized": "2019-08-24T14:15:22Z", "annulled": "2019-08-24T14:15:22Z" }, "entity_id": "8161163a-f227-466f-bc01-090a01e80165", "number": "string", "access_key": "stringstringstringstringstringstringstringstrings", "authorization": { "number": "string", "authorized_at": "2019-08-24T14:15:22Z" }, "sri_messages": [ { "code": "string", "message": "string", "detail": "string", "type": "error" } ], "metadata": { "property1": "string", "property2": "string" }, "issued_at": "2019-08-24T14:15:22Z", "delivery_status": "sent", "emails": [ { "to": "string", "status": "sent", "sent_at": "2019-08-24T14:15:22Z", "delivered_at": "2019-08-24T14:15:22Z", "opened_at": "2019-08-24T14:15:22Z", "bounced_at": "2019-08-24T14:15:22Z", "complained_at": "2019-08-24T14:15:22Z", "bounce_type": "permanent" } ], "portal_views": 0, "portal_last_viewed_at": "2019-08-24T14:15:22Z", "channel": "api", "import_id": "13230382-dadc-41f2-963d-e123bd5c0585", "verification": "sri", "listing": { "import_id": "13230382-dadc-41f2-963d-e123bd5c0585", "file": "string", "entry": "string", "sha256": "stringstringstringstringstringstringstringstringstringstringstri", "line": 1, "authorized_at": "2019-08-24T14:15:22Z" }, "object": "invoice", "lines": [ { "code": "string", "auxiliary_code": "string", "description": "string", "unit": "string", "quantity": "string", "unit_price": "string", "discount": "string", "net": "string", "taxes": [ { "type": "iva", "rate": "iva_15", "base": "string", "value": "string" } ], "additional_info": [ { "name": "string", "value": "string" } ], "unsubsidized_price": "string" } ], "taxes": [ { "type": "iva", "rate": "iva_15", "base": "string", "value": "string", "additional_discount": "string", "refund": "string" } ], "subtotal": "string", "discount": "string", "iva": "string", "ice": "string", "irbpnr": "string", "total": "string", "subsidy": "string", "tip": "string", "issue_date": "string", "buyer": { "identification_type": "ruc", "identification": "string", "name": "string", "address": "string", "email": "string" }, "payments": [ { "method": "sin_sistema_financiero", "amount": "string", "term": { "length": 0, "unit": "days" } } ], "plate": "string", "delivery_note_number": "string", "export": { "incoterm": "string", "incoterm_place": "string", "origin_country": "string", "loading_port": "string", "destination_port": "string", "destination_country": "string", "acquisition_country": "string", "subtotal_incoterm": "string", "international_freight": "string", "international_insurance": "string", "customs_costs": "string", "other_transport_costs": "string" }, "reimbursement": { "document_type": "factura", "total": "string", "base": "string", "tax": "string", "documents": [ { "supplier": { "identification_type": "ruc", "identification": "string" }, "supplier_type": "persona_natural", "payment_country": "string", "document_type": "factura", "number": "string", "issue_date": "string", "authorization_number": "string", "taxes": [ { "type": "iva", "rate": "iva_15", "base": "string", "value": "string" } ], "compensations": [ { "code": "string", "rate": "string", "value": "string" } ] } ] }, "withholdings": [ { "type": "iva_100", "value": "string" } ], "withheld_iva": "string", "withheld_renta": "string", "substitute_delivery_note": { "origin_address": "string", "destination_address": "string", "transport_start": "string", "transport_end": "string", "carrier": { "identification_type": "ruc", "identification": "string", "name": "string" }, "plate": "string", "destinations": [ { "reason": "string", "customs_document": "string", "destination_establishment": "string", "route": "string" } ] }, "third_party_charges": [ { "concept": "string", "amount": "string" } ], "negotiable": { "notification_email": "string" }, "compensations": [ { "code": "string", "rate": "string", "value": "string" } ], "fiscal_machine": { "brand": "string", "model": "string", "serial": "string" }, "additional_info": [ { "name": "string", "value": "string" } ], "credit_balance": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z"}Registrar la anulación de factura POST
Solo registra una anulación que ya hiciste en SRI en línea; no la pide al SRI. El comprobante pasa a `annulled`, conserva sus archivos, sale del portal de tu cliente y se envía `<object>.annulled` a tus webhooks. Solo para uno `authorized`, y nunca para uno emitido a consumidor final, que el SRI no anula.
Listar facturas GET
Del más reciente al más antiguo, en el ambiente de tu clave.