naskel
APIMis à jour le

Factures

Lister, lire, créer, modifier et supprimer des factures via l'API. Champs renvoyés, corps de création et exemples.

La ressource invoices permet de lister vos factures, d'en lire une, et d'en créer de nouvelles au statut brouillon.

Endpoints

MéthodeCheminScope
GET/api/v1/invoicesread:invoices
POST/api/v1/invoiceswrite:invoices
GET/api/v1/invoices/{id}read:invoices
PATCH/api/v1/invoices/{id}write:invoices
DELETE/api/v1/invoices/{id}write:invoices

Lister les factures

Paramètres de requête : limit, offset (voir Pagination) et status.

Le paramètre status accepte l'une des valeurs suivantes : DRAFT, SENT, PARTIAL, PAID, OVERDUE, CANCELLED. Un statut inconnu renvoie une erreur 400.

Champs renvoyés

id, number, title, status, type, clientName, clientCompany, clientEmail, taxRate, discountPercent, reverseCharge, issuedAt, dueAt, paidAt, paidAmount, createdAt, updatedAt.

Créer une facture

Un POST /api/v1/invoices crée une facture au statut brouillon (DRAFT).

Corps de la requête

ChampTypeRequisNotes
clientNametexte, 1 à 200 caractèresOui
clientEmailemail, 200 caractères maxOui
currencytexte, 3 caractèresNonEUR par défaut
linestableau, 1 à 100 élémentsOuiAu moins une ligne
lines[].titletexte, 1 à 500 caractèresOui
lines[].quantitynombre, supérieur à 0Oui
lines[].unitPricenombre, 0 ou plusOui
lines[].taxRatenombre, entre 0 et 100Non

Comportement

  • La facture est créée au statut DRAFT.
  • Son numéro est attribué automatiquement, de façon séquentielle.
  • Son échéance est fixée à 30 jours après la création.
  • La réponse a le code 201 et contient l'objet créé, avec ses lignes :
{ "data": { "id": "…", "status": "DRAFT", "lines": [ /* … */ ] } }

Exemple

curl -X POST "https://app.naskel.io/api/v1/invoices" \
  -H "Authorization: Bearer nsk_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "clientName": "ACME SARL",
    "clientEmail": "compta@acme.fr",
    "lines": [{ "title": "Conseil", "quantity": 2, "unitPrice": 500, "taxRate": 20 }]
  }'

Nom des champs de ligne

Le libellé d'une ligne s'envoie dans lines[].title et ressort sous lines[].description en lecture. Le POST accepte l'en-tête Idempotency-Key.

Modifier une facture

PATCH /api/v1/invoices/{id} met à jour une facture en brouillon. Tous les champs sont optionnels : n'envoyez que ceux à changer.

ChampTypeNotes
titletexteTitre de la facture
dueAtdate ISO 8601Échéance
paymentTermsDaysnombre, 0 à 365Délai de paiement, en jours
linestableauRemplace l'intégralité des lignes existantes

Réservé au statut DRAFT : sinon 409 invoice_not_draft.

Supprimer une facture

DELETE /api/v1/invoices/{id} supprime une facture en brouillon (DRAFT uniquement, sinon 409 invoice_not_draft).

Suppression définitive

Contrairement aux contacts ou aux devis (suppression douce), la suppression d'une facture est définitive (hard delete) : elle n'est pas conservée et n'est pas récupérable. Réponse : { "ok": true }.

Voir aussi