Record the annulment of invoice
Only records an annulment you already made in the SRI's online portal; it does not request it from the SRI. The document goes to annulled, keeps its files, leaves your customer's portal and <object>.annulled is sent to your webhooks. Only for an authorized one, and never for one issued to a consumidor_final buyer, which the SRI does not annul.
Your API key, which acts for the one business it was created for: fb_sandbox_… issues in sandbox, fb_test_… in test, the tax authority's testing service, and fb_live_… in live.
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
The date the SRI annulled it, as it appears in the SRI's online portal. Not before the issue date and not in the future.
dateWhy it was annulled, for your records.
1 <= length <= 300Response Body
application/json
application/problem+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/497f6eca-6276-4993-bfeb-53cbbbba6f08/annul" \ -H "Content-Type: application/json" \ -d '{ "annulled_on": "2019-08-24" }'{ "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", "cause": "string", "remedy": "string" } ], "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"}Download the RIDE (PDF) GET
The printed representation, on A4. In `sandbox` and `test` it carries a watermark: it has no tax validity.
Issue invoice POST
An invoice ("factura") records a sale. Its body needs the `buyer` (identified by `ruc`, `cedula`, `pasaporte` or `exterior`, or `consumidor_final` for a sale of at most USD 50), the `lines`, each with its taxes (one `iva`, and an `ice` or `irbpnr` where they apply), and the `payments`, which add up to the total (a single payment may leave out its amount). Fiscalbase computes every total from the lines. Look up codes with `GET /v1/ec/catalogs/{table}` (`payment_methods`, `iva_rates`, `ice`). To cancel or reduce an invoice later, issue a credit note; to add charges, a debit note. Issuing numbers the document, stores it and queues it to be signed and sent to the SRI, all at once: the issue date is today in Ecuador. The status then advances on its own (`pending`, `submitted`, then `authorized`, `returned` or `not_authorized`): send `wait` to answer once the SRI decides, or retrieve it or receive a webhook. A refused document says why in `sri_messages`, each with its `remedy`. Check the body first with `POST /v1/ec/invoices/preview`, which spends no number, and pass its `preview_id` to issue exactly what was previewed. Send an `Idempotency-Key` to retry without duplicating.