API développeurs

Integrez les données k-factu dans vos propres apps et automatisations via des tokens API REST.

API REST

API HTTP+JSON standard. Compatible avec tout langage ou outil.

Securise par conception

Les tokens sont haches en SHA-256. Vous ne voyez le token brut qu'une seule fois, a la creation.

Tokens par compte

Chaque token est lie à votre compte. Revoquez-le a tout moment depuis les Paramètres.

Authentification

Tous les endpoints requierent un Bearer token dans le header Authorization.

Étape 1 — Créer un token

Allez dans Paramètres → API Tokens.

Étape 2 — Utiliser le token

Incluez le token dans chaque requete :

Authorization: Bearer kf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sécurité : Les tokens ne sont affiches qu'une seule fois. Stockez-le en lieu sûr. En cas de perte, révoquéz-le et créez-en un nouveau.

Limites de taux

Les requetes avec token sont limitees pour protégér le service.

PlanLimite
Autonomo / PYME / Gestoria100 req/min

Les requetes depassant la limite retournent 429. Reessayez après la valeur du header Retry-After (secondes).

Endpoints

GET/api/invoices

Retourne une liste paginee de factures de votre compte, triees par date d'émission decroissante.

Query Parameters

pageintegerNuméro de page (defaut : 1, 50 éléments par page)
statusstringFiltrer par statut : draft, sent, paid, overdue, cancelled
dateFromstring (YYYY-MM-DD)Date de debut (inclusive)
dateTostring (YYYY-MM-DD)Date de fin (inclusive)
searchstringRecherche textuelle

Example Request

curl https://factu.krokanti.com/api/invoices \
  -H "Authorization: Bearer kf_your_token"

Example Response

{
  "items": [
    {
      "id": "uuid",
      "invoiceNumber": "2026-A-001",
      "issueDate": "2026-03-01",
      "dueDate": "2026-04-01",
      "clientName": "Acme SL",
      "status": "paid",
      "total": 121000,
      "subtotal": 100000,
      "ivaAmount": 21000,
      "irpfAmount": 0
    }
  ],
  "total": 42,
  "page": 1,
  "limit": 50
}
GET/api/clients

Retourne tous les clients de votre compte. Filtrez optionnellement par nom, NIF ou email.

Query Parameters

searchstringRecherche textuelle

Example Request

curl https://factu.krokanti.com/api/clients \
  -H "Authorization: Bearer kf_your_token"

Example Response

[
  {
    "id": "uuid",
    "name": "Acme SL",
    "nif": "A12345678",
    "email": "billing@acme.es",
    "address": "Calle Mayor 1",
    "city": "Madrid",
    "postalCode": "28001",
    "country": "ES"
  }
]
GET/api/expenses

Retourne une liste paginee de dépenses. Tous les montants sont en centimes d'euro.

Query Parameters

pageintegerNuméro de page (defaut : 1, 50 éléments par page)
dateFromstring (YYYY-MM-DD)Date de debut (inclusive)
dateTostring (YYYY-MM-DD)Date de fin (inclusive)
deductiblebooleanFiltrer par déductibilité : true ou false
searchstringRecherche textuelle

Example Request

curl https://factu.krokanti.com/api/expenses \
  -H "Authorization: Bearer kf_your_token"

Example Response

{
  "items": [
    {
      "id": "uuid",
      "date": "2026-03-10",
      "description": "Cloud hosting",
      "amount": 4999,
      "isDeductible": true,
      "categoryName": "Software y tecnologia",
      "receiptUrl": null
    }
  ],
  "total": 18,
  "page": 1,
  "limit": 50
}

Montants monetaires

Tous les montants monetaires sont retournes en centimes d'euro. Divisez par 100 pour obtenir des euros.

// total: 121000 → EUR 1,210.00
const euros = amount / 100;

Codes d'erreur

Statut HTTPSignification
200Succès
400Requete incorrecte — paramètrès ou corps invalides
401Non autorise — token manquant ou invalide
404Ressource introuvable
429Limite de taux dépassée
500Erreur interne du serveur
GET/api/invoices/{id}

Retourne une facture avec toutes les lignes et les données du client.

Example Request

curl https://factu.krokanti.com/api/invoices/INVOICE_ID \
  -H "Authorization: Bearer kf_your_token"

Example Response

{
  "invoice": {
    "id": "uuid",
    "invoiceNumber": "2026-A-001",
    "issueDate": "2026-03-01",
    "dueDate": "2026-04-01",
    "status": "paid",
    "total": 121000
  },
  "lines": [
    { "description": "Consulting", "quantity": 100, "unitPrice": 100000, "amount": 100000 }
  ],
  "clientName": "Acme SL",
  "clientNif": "A12345678"
}
POST/api/invoices

Créé une nouvelle facture en brouillon. Les montants sont calcules cote serveur. `irpfRate` en points de base. `quantity` et `unitPrice` en centimes.

Example Request

curl -X POST https://factu.krokanti.com/api/invoices \
  -H "Authorization: Bearer kf_your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "CLIENT_UUID",
    "seriesId": "SERIES_UUID",
    "issueDate": "2026-03-13",
    "irpfRate": 1500,
    "applyIrpf": true,
    "lines": [
      {
        "description": "Consulting services",
        "quantity": 100,
        "unitPrice": 100000,
        "ivaType": "general"
      }
    ]
  }'

Example Response

{
  "id": "uuid",
  "invoiceNumber": "2026-A-042",
  "status": "draft",
  "total": 106500
}
PATCH/api/invoices/{id}/status

Met a jour le statut d'une facture. Transitions valides : draft → sent → paid. `paidAt` requis lors du passage a paid.

Example Request

curl -X PATCH https://factu.krokanti.com/api/invoices/INVOICE_ID/status \
  -H "Authorization: Bearer kf_your_token" \
  -H "Content-Type: application/json" \
  -d '{ "status": "paid", "paidAt": "2026-03-13" }'

Example Response

{
  "id": "uuid",
  "invoiceNumber": "2026-A-001",
  "status": "paid",
  "paidAt": "2026-03-13T00:00:00.000Z"
}
POST/api/clients

Créé un nouveau client. Le NIF/CIF/NIE est valide pour les clients espagnols (country: ES).

Example Request

curl -X POST https://factu.krokanti.com/api/clients \
  -H "Authorization: Bearer kf_your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme SL",
    "nif": "A12345678",
    "email": "billing@acme.es",
    "address": "Calle Mayor 1",
    "city": "Madrid",
    "postalCode": "28001",
    "country": "ES"
  }'

Example Response

{
  "id": "uuid",
  "name": "Acme SL",
  "nif": "A12345678",
  "email": "billing@acme.es"
}
POST/api/expenses

Créé une nouvelle entrée de dépense. Le montant est en centimes d'euro.

Example Request

curl -X POST https://factu.krokanti.com/api/expenses \
  -H "Authorization: Bearer kf_your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "date": "2026-03-13",
    "description": "Cloud hosting March",
    "amount": 4999,
    "categoryId": "CATEGORY_UUID",
    "isDeductible": true,
    "supplierName": "AWS"
  }'

Example Response

{
  "id": "uuid",
  "date": "2026-03-13",
  "description": "Cloud hosting March",
  "amount": 4999,
  "isDeductible": true
}