Référence de l’API

Synchronisation des documents

Gardez votre propre système à jour : ce qui a changé, et chaque document en JSON, cXML ou UBL.

En savoir plus sur cette ressource

Pour un ERP, un système de facturation ou de lettrage qui suit Pleaxy sans que personne ne ressaisisse quoi que ce soit. ListSyncEvents indique ce qui a changé depuis votre dernier appel (ou un webhook vous le pousse) ; vous lisez ensuite le document : un bon de commande en OrderRequest cXML ou Order UBL, où en est une facture, une facture en Invoice UBL, et chaque paiement avec son avis de règlement. Chaque document est la copie du fournisseur, quel que soit le demandeur : jamais les notes internes de l’acheteur, ses validations ni qui a enregistré un paiement. L’ERP ou le flux bancaire d’un acheteur enregistre les paiements avec RecordPayments.

Lister les événements de synchronisation

Liste ce qui a changé depuis votre dernier appel, du plus ancien au plus récent.

GET/v1/workspaces/{regionId}/sync/events

Paramètres

  • afterstring

    Le nextCursor de votre dernier appel (un id d’événement). Omettez-le pour partir de l’événement le plus ancien.

  • limitinteger

    1-500 événements par appel. 100 par défaut.

Retour

200 OK avec l’objet présenté dans la réponse.

Plus de détails

Ce qui a changé de ce côté de l’espace de travail, du plus ancien au plus récent. Un événement nomme un document, jamais son contenu : lisez le document avec l’opération correspondante, pour toujours obtenir sa version actuelle. Renvoyez nextCursor comme after lors de votre prochain appel ; tant que hasMore vaut true, rappelez immédiatement. Les événements sont conservés 30 jours et livrés au moins une fois, si bien qu’un même changement peut arriver deux fois ; les 5 dernières secondes attendent l’appel suivant. Un appelant fournisseur reçoit purchase_order.issued, changed, canceled et rejected, invoice.received, approved, rejected, paid, payment_withdrawn, remittance_sent et credit_applied, invoice.updated (un acheteur a mis la facture en attente de vérification, ou l’a libérée : lisez GetInvoiceStatus), ainsi que credit_note.accepted et rejected. Un appelant acheteur reçoit invoice.received et credit_note.received (un fournisseur a envoyé une facture ou un avoir) ; invoice.updated (une facture a été validée, par une personne ou automatiquement, ou refusée, ou son fournisseur a confirmé les coordonnées bancaires ou l’a signalée) ; invoice.payment (un paiement a été enregistré ou retiré, un avoir a soldé la facture, ou un paiement via Pleaxy a abouti ou échoué : lisez GetInvoiceRemittance) ; purchase_order.updated (une commande a été validée, refusée ou annulée) ; et purchase_order.confirmed et purchase_order.shipped (lisez GetPurchaseOrderFulfillment). Il ne reçoit que les types de documents que son rôle achats peut consulter.

Champs de la réponse

  • events[].typestring

    Ce qui s’est passé, sous la forme <document>.<change>, par exemple invoice.paid.

  • events[].buyerWorkspaceIdstring

    Appelants fournisseurs : l’ID d’espace de travail de l’acheteur, à passer en ?buyer= pour lire le document.

  • nextCursorstring

    Le point de départ de votre prochain appel. Absent uniquement avant le premier événement.

  • hasMoreboolean

    D’autres événements attendent : rappelez immédiatement.

Erreurs

  • 400 Bad Request - after n’est pas un id d’événement, ou limit est hors limites.
  • 401 Unauthorized - Aucun identifiant n’a été fourni, ou la valeur du jeton Bearer / de X-Api-Key est manquante, invalide, expirée ou révoquée.
  • 403 Forbidden - Le jeton Bearer ou la clé API de l’appelant ne donne pas accès à cet espace de travail (regionId), ou n’a pas le rôle requis.
GET /v1/workspaces/{regionId}/sync/events
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/reg_01k5x8p9j3q7vn2mhb4tzc6rde.supplier/sync/events?after=EV-mgx2k9a1-0c4f81d2" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
{
  "events": [
    { "id": "EV-mgx2kb7e-91a2c3d4", "at": "2026-10-23T10:02:11.402Z", "type": "invoice.paid", "documentType": "invoice", "documentId": "INV-3C9E71B2", "buyerWorkspaceId": "reg_01k5x8n2a7c4bq9wze0tkv3fjm.buyer" }
  ],
  "nextCursor": "EV-mgx2kb7e-91a2c3d4",
  "hasMore": false
}

Obtenir le document d’un bon de commande

Renvoie un bon de commande émis en cXML ou UBL.

GET/v1/workspaces/{regionId}/purchase-orders/{poId}/document

Paramètres

  • poIdstringObligatoire

    L’identifiant du bon de commande.

  • format"cxml" | "ubl"

    Le format du document. cxml par défaut.

  • buyerstring

    Appelants fournisseurs : l’ID d’espace de travail de l’acheteur, quand deux acheteurs ont émis le même id.

Retour

200 OK avec l’objet présenté dans la réponse.

Plus de détails

Un bon de commande émis, sous forme de document que votre système intègre. format=cxml (par défaut) est un OrderRequest cXML : type new, update à partir de la version 2, delete une fois annulé. format=ubl est un Order UBL 2.1, ou un OrderCancellation une fois annulé. Les deux parties sont désignées par leur ID d’espace de travail. C’est la copie du fournisseur, quel que soit le demandeur. Un fournisseur dont des acheteurs partagent un id de BC ajoute ?buyer=<buyer Workspace ID>.

Erreurs

  • 400 Bad Request - format n’est ni cxml ni ubl.
  • 404 Not Found - Aucun bon de commande avec cet id ne vous appartient.
  • 409 Conflict - Code ORDER_NOT_ISSUED : un brouillon, une commande en attente de validation ou une commande rejetée n’a jamais été envoyé à son fournisseur.
  • 401 Unauthorized - Aucun identifiant n’a été fourni, ou la valeur du jeton Bearer / de X-Api-Key est manquante, invalide, expirée ou révoquée.
  • 403 Forbidden - Le jeton Bearer ou la clé API de l’appelant ne donne pas accès à cet espace de travail (regionId), ou n’a pas le rôle requis.
GET /v1/workspaces/{regionId}/purchase-orders/{poId}/document
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/document" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
application/xml

Obtenir le document d’une facture

Renvoie une facture en Invoice UBL 2.1.

GET/v1/workspaces/{regionId}/invoices/{invoiceId}/document

Paramètres

  • invoiceIdstringObligatoire

    L’identifiant de la facture.

  • format"ubl"

    Le seul format, et celui par défaut.

  • buyerstring

    Appelants fournisseurs : l’ID d’espace de travail de l’acheteur, quand deux acheteurs ont émis le même id.

Retour

200 OK avec l’objet présenté dans la réponse.

Plus de détails

Une facture en Invoice UBL 2.1 (type 380, ou 383 pour une note de débit), à comptabiliser dans l’ERP de l’acheteur ou à archiver par le fournisseur : ses lignes, remises et frais au niveau du document, taxes et retenues, acomptes, instructions de paiement du fournisseur, et le bon de commande et le contrat qu’elle facture. Les totaux concordent avec le montant de la facture. C’est la vue du fournisseur, quel que soit le demandeur : ni rapprochement, ni constats, ni validations.

Erreurs

  • 404 Not Found - Aucune facture avec cet id ne vous appartient.
  • 401 Unauthorized - Aucun identifiant n’a été fourni, ou la valeur du jeton Bearer / de X-Api-Key est manquante, invalide, expirée ou révoquée.
  • 403 Forbidden - Le jeton Bearer ou la clé API de l’appelant ne donne pas accès à cet espace de travail (regionId), ou n’a pas le rôle requis.
GET /v1/workspaces/{regionId}/invoices/{invoiceId}/document
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/document" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
application/xml

Obtenir le statut d’une facture

Renvoie où en est une facture, avec les codes de statut standard.

GET/v1/workspaces/{regionId}/invoices/{invoiceId}/status

Paramètres

  • invoiceIdstringObligatoire

    L’identifiant de la facture.

  • buyerstring

    Appelants fournisseurs : l’ID d’espace de travail de l’acheteur, quand deux acheteurs ont émis le même id.

Retour

200 OK avec l’objet présenté dans la réponse.

Plus de détails

Où en est une facture, pour le système qui l’a envoyée ou celui qui la paie, sous forme d’un statut avec les codes qu’utilisent les systèmes de facturation électronique. L’équivalent en cXML ou UBL est GetInvoiceStatusDocument. C’est la vue du fournisseur, quel que soit le demandeur.

Champs de la réponse

  • statusstring

    received : le rapprochement n’a pas encore eu lieu. in_process : en attente de validation. under_query : voir queryReason. approved : validée et non payée. payment_in_progress : un paiement via Pleaxy est en cours. paid. rejected. duplicate : rejetée comme doublon.

  • responseCodestring

    Le statut en UNCL4343, la liste de codes de la Peppol Invoice Response.

  • queryReasonstring

    Pourquoi la facture est en litige : elle ne correspond pas à son bon de commande, ou ses coordonnées bancaires attendent une confirmation ou ont été signalées.

  • rejectionobject

    En cas de rejet : le code de motif (amount_incorrect, not_ordered_or_not_received, duplicate, missing_or_wrong_po, wrong_billing_entity, other) et la note de l’acheteur.

Erreurs

  • 404 Not Found - Aucune facture avec cet id ne vous appartient.
  • 401 Unauthorized - Aucun identifiant n’a été fourni, ou la valeur du jeton Bearer / de X-Api-Key est manquante, invalide, expirée ou révoquée.
  • 403 Forbidden - Le jeton Bearer ou la clé API de l’appelant ne donne pas accès à cet espace de travail (regionId), ou n’a pas le rôle requis.
GET /v1/workspaces/{regionId}/invoices/{invoiceId}/status
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/status" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
{
   "invoiceId": "string",
   "invoiceNumber": "string",
   "documentType": "invoice" | "debit_note",
   "buyerWorkspaceId": "string",
   "purchaseOrderId": "string",
   "status": "received" | "in_process" | "under_query" | "approved" | "payment_in_progress" | "paid" | "rejected" | "duplicate",
   "responseCode": "AB" | "IP" | "UQ" | "AP" | "RE" | "PD",
   "cxmlStatus": "processing" | "reconciled" | "rejected" | "paying" | "paid",
   "queryReason": "discrepancy" | "bank_details_unconfirmed" | "bank_details_disputed",
   "rejection": { "reasonCode": "string", "reason": "string", "at": "string" },
   "issueDate": "string",
   "receivedAt": "string",
   "dueDate": "string",
   "total": { "amount": number, "currency": "string" },
   "amountDue": { "amount": number, "currency": "string" },
   "paid": boolean,
   "paidAt": "string"
}

Obtenir le document de statut d’une facture

Renvoie le statut d’une facture en cXML ou UBL.

GET/v1/workspaces/{regionId}/invoices/{invoiceId}/status/document

Paramètres

  • invoiceIdstringObligatoire

    L’identifiant de la facture.

  • format"cxml" | "ubl"

    Le format du document. cxml par défaut.

  • buyerstring

    Appelants fournisseurs : l’ID d’espace de travail de l’acheteur, quand deux acheteurs ont émis le même id.

Retour

200 OK avec l’objet présenté dans la réponse.

Plus de détails

GetInvoiceStatus sous forme de document. format=cxml (par défaut) est un StatusUpdateRequest cXML avec un InvoiceStatus ; format=ubl est un ApplicationResponse UBL 2.1 avec les codes de la Peppol Invoice Response et, en cas de rejet, son motif.

Erreurs

  • 400 Bad Request - format n’est ni cxml ni ubl.
  • 404 Not Found - Aucune facture avec cet id ne vous appartient.
  • 401 Unauthorized - Aucun identifiant n’a été fourni, ou la valeur du jeton Bearer / de X-Api-Key est manquante, invalide, expirée ou révoquée.
  • 403 Forbidden - Le jeton Bearer ou la clé API de l’appelant ne donne pas accès à cet espace de travail (regionId), ou n’a pas le rôle requis.
GET /v1/workspaces/{regionId}/invoices/{invoiceId}/status/document
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/status/document" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
application/xml

Obtenir le règlement d’une facture

Renvoie comment et quand une facture a été payée, avec ses avis de règlement.

GET/v1/workspaces/{regionId}/invoices/{invoiceId}/remittance

Paramètres

  • invoiceIdstringObligatoire

    L’identifiant de la facture.

  • buyerstring

    Appelants fournisseurs : l’ID d’espace de travail de l’acheteur, quand deux acheteurs ont émis le même id.

Retour

200 OK avec l’objet présenté dans la réponse.

Plus de détails

Le signal de paiement d’une facture, pour le lettrage du fournisseur : comment et quand l’acheteur a payé, la référence, ce qui a été retenu et ce qui est parvenu au fournisseur, et les avis de règlement envoyés par l’acheteur (notes et justificatifs de paiement ; GetRemittanceFile en télécharge un). Pleaxy enregistre ce que déclare l’acheteur et ne déplace aucun fonds. Jamais qui, chez l’acheteur, l’a enregistré. L’équivalent en cXML ou UBL est GetInvoiceRemittanceDocument.

Champs de la réponse

  • statusstring

    unpaid, recorded (l’acheteur a enregistré un paiement effectué hors de Pleaxy), processing ou paid_through_pleaxy (un paiement via Pleaxy), withdrawn (l’acheteur a retiré son enregistrement), ou failed (appelants acheteurs uniquement : son dernier paiement via Pleaxy a échoué, à failedAt).

  • payment.methodstring

    Comment elle a été payée. credit : réglée par des avoirs ; nothing_due : validée pour 0.

  • payment.adviceVersionnumber

    1 pour le premier enregistrement ; un nombre plus élevé remplace l’avis de paiement précédent.

  • payment.netPaidobject

    Ce qui est parvenu au fournisseur, dans la devise du montant dû : le montant dû moins les retenues.

Erreurs

  • 404 Not Found - Aucune facture avec cet id ne vous appartient.
  • 401 Unauthorized - Aucun identifiant n’a été fourni, ou la valeur du jeton Bearer / de X-Api-Key est manquante, invalide, expirée ou révoquée.
  • 403 Forbidden - Le jeton Bearer ou la clé API de l’appelant ne donne pas accès à cet espace de travail (regionId), ou n’a pas le rôle requis.
GET /v1/workspaces/{regionId}/invoices/{invoiceId}/remittance
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/remittance" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
{
   "invoiceId": "string",
   "invoiceNumber": "string",
   "status": "unpaid" | "recorded" | "processing" | "paid_through_pleaxy" | "withdrawn" | "failed",
   "failedAt": "string",
   "paid": boolean,
   "paidAt": "string",
   "amountDue": { "amount": number, "currency": "string" },
   "payment": {
      "method": "ach" | "wire" | "check" | "card" | "other" | "credit" | "nothing_due" | "stripe",
      "paymentDate": "string",
      "reference": "string",
      "adviceVersion": number,
      "withheld": [ { "description": "string", "amount": number, "rate": number } ],
      "netPaid": { "amount": number, "currency": "string" },
      "paidInOtherCurrency": { "amount": number, "currency": "string", "rate": number, "rateDate": "string" }
   },
   "remittances": [ { "id": "string", "sentAt": "string", "note": "string", "file": { "fileName": "string", "contentType": "string", "sizeBytes": number } } ]
}

Obtenir le document de règlement d’une facture

Renvoie le paiement d’une facture en cXML ou UBL.

GET/v1/workspaces/{regionId}/invoices/{invoiceId}/remittance/document

Paramètres

  • invoiceIdstringObligatoire

    L’identifiant de la facture.

  • format"cxml" | "ubl"

    Le format du document. cxml par défaut.

  • buyerstring

    Appelants fournisseurs : l’ID d’espace de travail de l’acheteur, quand deux acheteurs ont émis le même id.

Retour

200 OK avec l’objet présenté dans la réponse.

Plus de détails

GetInvoiceRemittance sous forme de document. format=cxml (par défaut) est un PaymentRemittanceRequest cXML ; format=ubl est un RemittanceAdvice UBL 2.1.

Erreurs

  • 400 Bad Request - format n’est ni cxml ni ubl.
  • 404 Not Found - Aucune facture avec cet id ne vous appartient.
  • 409 Conflict - Code NO_PAYMENT : rien n’a encore été payé ni enregistré. GetInvoiceRemittance donne le statut.
  • 401 Unauthorized - Aucun identifiant n’a été fourni, ou la valeur du jeton Bearer / de X-Api-Key est manquante, invalide, expirée ou révoquée.
  • 403 Forbidden - Le jeton Bearer ou la clé API de l’appelant ne donne pas accès à cet espace de travail (regionId), ou n’a pas le rôle requis.
GET /v1/workspaces/{regionId}/invoices/{invoiceId}/remittance/document
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/remittance/document" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
application/xml

Enregistrer des paiements

Enregistre les paiements déjà effectués par votre ERP ou votre banque, jusqu’à 50 à la fois.

POST/v1/workspaces/{regionId}/invoices/payment-records

Corps

  • paymentsArrayObligatoire

    1-50 paiements : { invoiceId, method, paymentDate, reference, note?, amount?, currency?, rate?, rateDate?, withholdings?, confirmReplaced? }, chaque champ comme dans RecordPayment.

Retour

200 OK avec l’objet présenté dans la réponse.

Plus de détails

Enregistre les paiements déjà effectués hors de Pleaxy par votre ERP ou votre flux bancaire - virements, chèques, ACH, carte - pour que chaque fournisseur reçoive son avis de paiement, son avis de règlement et son événement de synchronisation sans que personne ne le ressaisisse. Aucun fonds n’est déplacé. Chaque paiement suit les règles de RecordPayment et reçoit sa propre réponse ; en répéter un est sans risque (already_recorded). Une facture validée par une clé API reste refusée. note devient une note de règlement pour le fournisseur ; seul une personne peut joindre un justificatif de paiement.

Clé API acheteur avec le scope payments:record uniquement, générée avec un procurementRole autorisé à modifier les factures (administrateur ou finance). Une personne connectée utilise RecordPayment.

Champs de la réponse

  • results[].outcomestring

    recorded, already_recorded (le même paiement a déjà été enregistré), ou refusé avec le statut, le code et le message que RecordPayment aurait renvoyés.

Erreurs

  • 400 Bad Request - Le corps n’est pas valide : aucun paiement, plus de 50, ou un champ que RecordPayment n’accepte pas. Rien n’est enregistré.
  • 403 Forbidden - Code API_KEY_REQUIRED (une personne connectée), API_KEY_SCOPE_MISSING (une clé sans payments:record), ou un rôle achats qui ne peut pas modifier les factures.
  • 429 Too Many Requests - Par paiement, code RATE_LIMITED dès que la clé a enregistré 500 paiements aujourd’hui (UTC). Chaque appel qui enregistre un paiement déclenche aussi une notification payments_recorded_by_key dans l’espace de travail, avec la clé et les factures.
  • 401 Unauthorized - Aucun identifiant n’a été fourni, ou la valeur du jeton Bearer / de X-Api-Key est manquante, invalide, expirée ou révoquée.
POST /v1/workspaces/{regionId}/invoices/payment-records
Requête
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/payment-records" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "payments": [
      { "invoiceId": "string", "method": "ach" | "wire" | "check" | "card" | "other", "paymentDate": "YYYY-MM-DD", "reference": "string", "note": "string" }
   ]
}
Réponse · 200 OK
{
   "results": [
      { "invoiceId": "string", "outcome": "recorded" | "already_recorded" | "refused", "status": number, "code": "string", "message": "string" }
   ],
   "recorded": number,
   "alreadyRecorded": number,
   "refused": number
}
Nous contacter