Skip to main content
Use this guide when the issuing business is configured for Colombian invoicing. The customer and invoice routes are shared with Mexico. The Colombian provider maps the data to DIAN documents through Factus. Start with the shared customer fields. For a domestic recipient, add address.country: "COL" and the identification details below. Changing the customer’s country does not configure the issuing business.

Before you start

Complete Colombia issuer setup. Confirm the selected team, provider credentials, numbering configuration, and test environment with the owner. The public team API does not expose the provider selection. A saved Colombian customer does not configure the issuer.

Customer identification

These fields are accepted on a saved customer and on an embedded invoice customer. They are optional in the shared input schema; supplying a contact does not guarantee that its information is sufficient for DIAN issuance. Supply the recipient’s actual classification instead of relying on fallbacks. The mapper removes R-99-PN when it is combined with an O-* responsibility. See the customer API reference for the full accepted document-code list.

Fiscal responsibility codes

These are the five values accepted by the API. Use the recipient’s actual registered responsibilities; a default is not a determination of their tax status. DIAN’s validation FAQ, question 1 explains this five-code list. Consult its current technical documentation and regulations for the applicable requirements. fiscal_responsibilities and tribute_code are separate fields: do not infer IVA responsibility solely from R-99-PN.

Invoice compatibility fields

The public POST /invoices/income validator still requires these fields for Colombia:
Send the public API code "03" for a bank transfer. Although the Colombian provider uses "47", the current income and draft request validators do not accept "47" as payment_form. Provider payloads and public API requests have different schemas.
For foreign-currency invoices, supply an explicit valid rate in COP per one unit of the invoice currency. If omitted, the public issuance path attempts a rate lookup, which can fail. Invalid foreign-currency rates, including 1, can be rejected before the request reaches Factus. The provider adapter rounds an accepted rate to two decimals. Do not rely on omitted or invalid rates producing an invoice with unchanged amounts.

Credit invoices and item fields

The provider requires a due date for a credit invoice. Its adapter reads payment_due_date, but that field is not exposed by the current public income or draft request schema. The Mexico PPD and payment-complement recipe is therefore not a verified Colombian credit-invoice workflow. The public item schema exposes description, quantity, unit_price, product_key, unit_key, and taxes. The Colombian adapter uses the product key as an item reference fallback; it does not use the Mexican unit_key as its DIAN unit code. Provider-only fields such as unit_measure_code are not exposed by this public item schema. Do not copy a direct Factus item payload into a gigstack request. tax_system and Mexican SAT catalogs do not replace Colombian identification, responsibility, or municipality codes.

Issuer setup and verification

The issuing team needs its Colombian provider credentials and numbering configuration for the selected environment. Its test and live configurations are separate. This page was checked against the public request schemas and Colombian provider mappings on October 8, 2026. It has not been exercised end to end with a Colombian test issuer. The existing staging verification covers the Mexican examples; it does not prove Colombian issuance, credit notes, or cancellation behavior.

First immediate-payment invoice

Case: a Colombian test issuer invoices one service for COP 100,000 plus illustrative 19% IVA, paid immediately by bank transfer. The intended total is COP 119,000. Use the classification and taxes appropriate to your actual transaction.
The requests below were reviewed against the public validators and Colombian provider mapping. They have not been executed with a Colombian test issuer. The expected response fields are source-reviewed, not captured test results. Test recipient data must come from your approved provider test setup; no universal Colombian fixture is assumed.

1. Create the Colombian test recipient

Use Bash with curl and jq. Set GIGSTACK_BASE_URL and GIGSTACK_API_KEY with the quickstart environment commands, then check the environment and key distinction. Supply CO_TEST_NIT without the verification digit, CO_TEST_LEGAL_NAME, and a unique CO_CUSTOMER_REFERENCE locally from your approved test setup. The example models a domestic legal entity, IVA responsible, with no listed special fiscal responsibility, located in Bogotá (11001). Adjust those classifications and location to the recipient before submitting.
Expect 201 for a new customer or 200 when the search reuses one. Inspect the returned recipient details before continuing: search.update: false does not refresh an existing record. Mexico SAT validation fields do not establish DIAN validity.

2. Prepare and review the invoice

Set CO_ORDER_REFERENCE to the stable reference for this one invoice. use: "G03" below is only a compatibility string accepted by the shared API; the Colombia adapter does not transmit it as a DIAN fiscal classification. Likewise, product_key provides an item reference fallback; its Mexican classification meaning does not apply here.
Review the customer, amount, currency, tax treatment, team, and test mode. PUE selects immediate payment in the adapter. This request records an invoice; it does not collect the bank transfer or register a payment record.

3. Issue only after review and authorization

POST /invoices/income issues immediately through the configured provider.
The source-defined success response is HTTP 200 with data.uuid. Preserve that value as an opaque identifier: the Colombian adapter derives it from the provider’s CUFE, CUDE, or document number; do not require a Mexican UUID format. Verify the stored recipient, COP currency, intended totals, and status: "valid". If any check fails, retain the response and investigate before another issuance attempt.

Recover after a timeout

Keep the same business reference. Look up the original invoice by the exact idempotency_key filter; do not add metadata filters to this lookup:
For a matching result, compare the intended CLIENT_ID, test mode, COP currency and COP 119,000 total before treating it as your completed invoice. Save its uuid and read that invoice again. A different customer or amount is a reference conflict to investigate. Zero matches does not prove issuance failed. The provider may have issued a document before gigstack persisted it. Do not assume the Mexican PAC retry guarantees establish identical Colombian provider behavior. For an ambiguous result, ask support@gigstack.io to reconcile the provider document, providing the team, environment/mode, business reference, request time and redacted error. Never include the API key or provider credentials. Colombian annulment produces a credit note and can leave the original invoice valid. Do not apply the Mexican cancellation completion check to Colombia. Colombian credit and annulment flows remain outside the end-to-end verification described here.