Aller au contenu

Imprimer votre facture

C’est vous qui imprimez la facture, pas nous. Dès que normalisation_status vaut normalised, la réponse contient tout ce qu’une facture légale doit porter. Voici les champs d’impression, en un seul endroit. Ce sont les mêmes sur la lecture d’une facture, sur une page de liste et dans l’événement de règlement.

Identité du document

Champ Ce qu’il faut imprimer
number Le numéro de la facture. Texte opaque : imprimez-le tel quel.
type FV vente, FA avoir, EA avoir d’exportation.
code_def_dgi Le code de la DGI (Code DEF).
qr_code Les données à encoder dans le QR code, exactement comme données : RDCDEF01;<NIM>;<signature>;<NIF>;<date-heure>.
counters Les compteurs de la DGI, par exemple 484/601 FV.
dgi_date_time La date et l’heure à imprimer : le texte même de la DGI (« DEF Heure »), par exemple 05/11/2026 09:12:57. Imprimez-le sans le modifier ; ne le reformatez pas, ne le remplacez pas par normalised_at ni par created_at.
invoice_date La date de la facture.
nid, isf Le NID de l’e-MCF et l’ISF (RPA-CLD-01). isf est fixé quand la facture part à la DGI : le 202 et invoice.pending ne l’ont pas.
external_reference, sale_time Les vôtres, restitués comme envoyés.

Montants

Champ Ce que c’est
currency, exchange_rate, exchange_rate_date La devise. Le taux et sa date n’apparaissent que sur une facture en devise étrangère.
price_mode ttc ou ht.
vat_liable false : la facture n’imprime aucune TVA.
total_ht, total_vat, total_ttc, total_tax_specific Les totaux.
tax_breakdown Une ligne par groupe de taxation : group, rate, base_ht, vat_amount, tax_specific_amount, total_ttc.
payments [{ method, amount }].

Les montants s’impriment tels que stockés. N’additionnez pas les lignes vous-mêmes et ne recalculez pas la TVA : la DGI calcule au niveau du groupe de taxation, et un total recalculé ligne à ligne peut s’écarter de quelques centimes de ce que la DGI a accepté. Sur un avoir, tous les montants sont négatifs (totaux, ventilation, quantités et totaux des lignes), comme on les imprime sur un avoir.

Les parties

Champ Ce que c’est
issuer { name, nif, rccm, id_nat, pos_name, pos_address, pos_phone, pos_email } : le vendeur tel qu’il a été figé à la normalisation. Imprimez cela, pas les données du jour de l’entreprise.
client { name, type, nif, phone, address } tel que figé. « Client Comptant » quand aucun client n’a été donné.
operator_name Le caissier, figé.

Les lignes (lines)

[{ index, code, description, item_type, quantity, unit, unit_price, tax_group, tax_sub_type, tax_rate, tax_specific_value, tax_specific_amount, discount_type, discount_percent, discount_amount, price_modification_label, modified_unit_price, total }]

Vous en avez besoin parce que vous ne pouvez pas les déduire de ce que vous avez envoyé : le groupe qu’a donné un défaut, le taux du jour, le libellé de la remise (price_modification_label, par exemple « Remise 20 % »), le total de la ligne. total est TTC ou HT selon price_mode ; modified_unit_price est le prix unitaire après remise et n’est présent qu’avec une remise. Une page de liste ou un événement contient au plus 100 lignes par facture : au-delà, la facture porte lines_omitted: true et pas de lines, et son propre GET les contient toutes.

Textes : notes, et comment_lines sous la forme [{ line, label, text }] (pour un client AO, la ligne A a pour libellé Réf. Exo. :).

Un avoir porte aussi reference_code (le Code DEF de l’origine) et original_invoice_number (son numéro ; RRR pour une remise sans origine), ainsi que original_invoice_id, reference_type et reference_desc.

ORIGINAL et DUPLICATA. La DGI veut que le premier exemplaire remis au client porte la mention ORIGINAL, et tous les autres DUPLICATA (numérotés). C’est à vous de compter les exemplaires imprimés et d’écrire cette mention : nous ne savons pas combien vous en avez imprimé. Nous ne fournissons aucun PDF, pas même neutre.

Ce qui n’est pas porté, parce que c’est à vous : un logo, une mise en page, un pied de page.

{
"object": "invoice",
"data": {
"id": "inv_2xJ4kQ9nVbT7mLpR3sYz",
"normalisation_status": "normalised",
"code_def_dgi": "K7QM-2WXP-9HDT-4NBC-V8RJ-ZE3A",
"created_at": "2026-11-05T08:12:41Z",
"external_reference": "VENTE-2026-000123",
"qr_code": "RDCDEF01;CD01004159-1;MEUCIQ...;A1234567B;20261105091257",
"counters": "484/601 FV",
"nid": "CD01004159-1",
"isf": "RPA-CLD-01",
"number": "FV-01-000484",
"normalised_at": "2026-11-05T08:12:58Z",
"sale_time": "2026-11-05T08:12:00Z",
"defaults_applied": ["target", "items[].item_type"],
"payment_status": "paye",
"type": "FV",
"dgi_date_time": "05/11/2026 09:12:57",
"invoice_date": "2026-11-05",
"currency": "CDF",
"price_mode": "ttc",
"vat_liable": true,
"total_ht": 20000.00,
"total_vat": 3200.00,
"total_ttc": 23200.00,
"total_tax_specific": 0,
"tax_breakdown": [
{ "group": "B", "rate": 16, "base_ht": 20000.00, "vat_amount": 3200.00, "tax_specific_amount": 0, "total_ttc": 23200.00 }
],
"operator_name": "Sarah Kabeya",
"issuer": {
"name": "Kasongo Distribution SARL", "nif": "A1234567B", "rccm": "CD/KIN/RCCM/24-A-12345",
"pos_name": "Caisse principale", "pos_address": "12 avenue du Commerce, Kinshasa", "pos_phone": "+243991234567"
},
"client": { "name": "Mbuyi Services SARL", "type": "PM", "nif": "A7654321C", "address": "5 rue de la Paix, Gombe" },
"payments": [ { "method": "ESPECES", "amount": 23200 } ],
"notes": "Merci de votre confiance.",
"comment_lines": [],
"lines": [
{ "index": 1, "code": "PAP-A4", "description": "Ramette papier A4", "item_type": "BIE", "quantity": 2, "unit": "pce",
"unit_price": 11600, "tax_group": "B", "tax_rate": 16, "total": 23200 }
],
"business": { "id": "biz_2xJ4kQ9nVbT7mLpR3sYz", "external_id": "plateforme-cust-001842" }
},
"meta": { "request_id": "req_05" }
}

Le number, le code_def_dgi, le qr_code et la signature ci-dessus sont donnés à titre d’illustration.