Référence de l’API

Avoirs

Les avoirs qui réduisent ce que doit un acheteur, et leur imputation sur les factures.

En savoir plus sur cette ressource

Les avoirs sont des relevés comme les factures : ListInvoices, GetInvoice et CreateInvoice les servent aussi avec documentType credit_note, et ces routes sont les actions propres à l’avoir. Un avoir réduit ce qu’un acheteur doit à un fournisseur, avec ses propres lignes et taxes. Un fournisseur en émet un sur la facture qu’il corrige ou pour l’acheteur en général (ou l’envoie via SubmitFeedInvoice) ; un acheteur peut enregistrer un avoir qu’il a reçu. Un avoir qui désigne une facture et ne dépasse pas son total est accepté immédiatement ; tout autre avoir attend que l’acheteur l’accepte ou le refuse. Accepter un avoir returned_goods ou price_adjustment (ou other avec correctsBilling) restitue son montant hors taxes à la ligne du bon de commande de la facture corrigée ; les avoirs de service et les ristournes ne touchent pas au bon de commande. Qui règle les avoirs acceptés est un paramètre de l’acheteur : Pleaxy, où ils sont imputés sur les factures et réduisent le montant dû (une facture validée que des avoirs couvrent entièrement est marquée payée avec la méthode "credit"), ou le système comptable, où les avoirs acceptés partent dans le prochain export de paiement sous forme de lignes négatives. Refuser une facture restitue à leurs avoirs les montants qui y étaient imputés. Le total de la facture et ses taxes ne changent jamais. Un avoir (credit memo) qu’AWS ou Azure émet sur une facture que votre connexion cloud synchronise est enregistré comme avoir de ce fournisseur cloud (source "cloud_sync", avec cloudProvider), sur la facture qu’il désigne lorsque celle-ci est dans Pleaxy, une seule fois par credit memo.

Lister les avoirs

Liste les avoirs, avec le solde restant de chacun.

GET/v1/workspaces/{regionId}/credit-notes

Retour

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

Plus de détails

Les avoirs reçus par un acheteur ou émis par un fournisseur (pour l’ensemble de ses acheteurs), du plus ancien au plus récent, chacun avec remaining : ce qui reste à imputer, jamais stocké.

Erreurs

  • 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}/credit-notes
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/credit-notes" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
[ {
   "documentType": "credit_note",
   "id": "string",
   "externalCreditNoteNumber": "string",
   "issueDate": "string",
   "buyerOrgId": "string",
   "buyerOrgName": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "supplierConnectionId": "string",
   "currency": "string",
   "reason": "returned_goods" | "price_adjustment" | "service_credit" | "rebate" | "other",
   "correctsBilling": true,
   "note": "string",
   "lineItems": [ { "description": "string", "qty": number, "unitPrice": number, "amount": number } ],
   "adjustments": [ { "type": "discount" | "charge", "description": "string", "amount": number } ],
   "taxAmount": number,
   "amount": number,
   "refunded": number,
   "remaining": number,
   "invoiceId": "string",
   "externalInvoiceNumber": "string",
   "po": "string",
   "poLineNo": number,
   "status": "pending_acceptance" | "accepted" | "rejected" | "void",
   "autoAccepted": true,
   "acceptedAt": "string",
   "rejection": { "at": "string", "reason": "string" },
   "poEffect": { "kind": "release", "po": "string", "poLineNo": number, "amount": number, "qty": number } | { "kind": "none", "why": "not_a_correction" | "no_po" | "po_closed" },
   "applications": [ { "id": "string", "invoiceId": "string", "externalInvoiceNumber": "string", "amount": number, "appliedAt": "string", "auto": true } ],
   "exports": [ { "exportId": "string", "exportedAt": "string" } ],
   "source": "feed" | "cloud_sync",
   "submittedFormat": "json" | "ubl" | "cxml",
   "cloudProvider": "aws" | "azure",
   "hasPdf": boolean,
   "createdAt": "string"
} ]

Obtenir un avoir

Récupère un avoir.

GET/v1/workspaces/{regionId}/credit-notes/{creditNoteId}

Paramètres

  • creditNoteIdstringObligatoire

    L’avoir, par exemple "CN-1A2B3C4D".

Retour

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

Plus de détails

Un avoir : ce qu’il corrige, l’effet de son acceptation sur le bon de commande (poEffect), les factures sur lesquelles il a été imputé ou l’export qui l’a transmis, et ce qu’il en reste.

Champs de la réponse

  • remainingnumber

    amount − ce qui est imputé sur des factures − ce qui est remboursé. 0 une fois épuisé ; un avoir exporté est réglé par le système comptable.

  • refundednumber

    Ce que le fournisseur indique avoir déjà remboursé avant d’envoyer l’avoir (PrepaidAmount en UBL, DepositAmount en cXML). Jamais disponible à l’imputation.

  • poEffectobject

    Défini à l’acceptation : le solde de bon de commande restitué (kind release, hors taxes, avec la quantité pour les marchandises retournées), ou la raison de l’absence de restitution (not_a_correction, no_po, po_closed).

  • hasPdfboolean

    L’avoir a son propre PDF, joint lors de son émission, ou le document à partir duquel il a été enregistré : GetCreditNotePdf le renvoie.

  • source, cloudProviderstring, string

    source vaut "feed" pour un avoir envoyé via SubmitFeedInvoice (dans submittedFormat) et "cloud_sync" pour le credit memo d’un fournisseur cloud (cloudProvider aws ou azure) ; absent lorsqu’il a été saisi dans Pleaxy ou avec CreateCreditNote.

Erreurs

  • 404 Not Found - Aucun avoir de ce type dans cet espace de travail (« Credit note <id> not found. »).
  • 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}/credit-notes/{creditNoteId}
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/credit-notes/{creditNoteId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
{
   "documentType": "credit_note",
   "id": "string",
   "externalCreditNoteNumber": "string",
   "issueDate": "string",
   "buyerOrgId": "string",
   "buyerOrgName": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "supplierConnectionId": "string",
   "currency": "string",
   "reason": "returned_goods" | "price_adjustment" | "service_credit" | "rebate" | "other",
   "correctsBilling": true,
   "note": "string",
   "lineItems": [ { "description": "string", "qty": number, "unitPrice": number, "amount": number } ],
   "adjustments": [ { "type": "discount" | "charge", "description": "string", "amount": number } ],
   "taxAmount": number,
   "amount": number,
   "refunded": number,
   "remaining": number,
   "invoiceId": "string",
   "externalInvoiceNumber": "string",
   "po": "string",
   "poLineNo": number,
   "status": "pending_acceptance" | "accepted" | "rejected" | "void",
   "autoAccepted": true,
   "acceptedAt": "string",
   "rejection": { "at": "string", "reason": "string" },
   "poEffect": { "kind": "release", "po": "string", "poLineNo": number, "amount": number, "qty": number } | { "kind": "none", "why": "not_a_correction" | "no_po" | "po_closed" },
   "applications": [ { "id": "string", "invoiceId": "string", "externalInvoiceNumber": "string", "amount": number, "appliedAt": "string", "auto": true } ],
   "exports": [ { "exportId": "string", "exportedAt": "string" } ],
   "source": "feed" | "cloud_sync",
   "submittedFormat": "json" | "ubl" | "cxml",
   "cloudProvider": "aws" | "azure",
   "hasPdf": boolean,
   "createdAt": "string"
}

Obtenir le PDF d’un avoir

Télécharge le PDF d’un avoir.

GET/v1/workspaces/{regionId}/credit-notes/{creditNoteId}/pdf

Paramètres

  • creditNoteIdstringObligatoire

    L’avoir, par exemple "CN-1A2B3C4D".

Retour

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

Plus de détails

Le PDF propre à l’avoir : celui joint lors de son émission (pdfBase64), ou le document à partir duquel il a été enregistré. Pleaxy n’en génère pas. Envoyez Accept: application/pdf, sinon le corps est renvoyé encodé en base64.

Erreurs

  • 404 Not Found - Aucun avoir de ce type dans cet espace de travail, ou code CREDIT_NOTE_NO_PDF : il n’en a pas (hasPdf vaut false).
  • 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}/credit-notes/{creditNoteId}/pdf
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/credit-notes/{creditNoteId}/pdf" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
application/pdf

Créer un avoir

Émet un avoir, ou enregistre un avoir reçu.

POST/v1/workspaces/{regionId}/credit-notes

Corps

  • invoiceIdstring

    La facture qu’il corrige. Pas une facture refusée. Indiquez ce champ ou connectionId.

  • connectionIdstring

    La contrepartie, lorsqu’il ne corrige pas une facture en particulier.

  • externalCreditNoteNumberstringObligatoire

    Votre numéro pour l’avoir, de 1 à 64 caractères : lettres, chiffres, '.', '_', '/' et '-', commençant par une lettre ou un chiffre. Unique par fournisseur chez l’acheteur, sans tenir compte de la casse.

  • issueDatestringObligatoire

    YYYY-MM-DD, ni dans le futur, ni plus de 365 jours en arrière.

  • reasonstringObligatoire

    returned_goods, price_adjustment, service_credit, rebate ou other. Les deux premiers restituent du solde au bon de commande une fois acceptés.

  • correctsBillingboolean

    Motif other uniquement : il corrige ce qui a été facturé, donc il restitue aussi du solde au bon de commande.

  • notestring

    De 1 à 1000 caractères, par exemple le numéro RMA du retour.

  • currencystring

    ISO 4217. Obligatoire avec connectionId ; avec invoiceId, ce doit être celle de la facture.

  • lineItemsArray<{ description, qty, unitPrice }>Obligatoire

    Ce qui est crédité, hors taxes. De 1 à 200 lignes.

  • taxAmountnumber

    Les taxes créditées, incluses dans le total.

  • taxBreakdownArray<{ description, amount, rate? }>

    Taxes par type, dont la somme est égale à taxAmount. 20 au maximum.

  • pdfBase64string

    PDF de l’avoir tel qu’émis, encodé en base64, jusqu’à 8 Mo. Conservé avec l’avoir (voir GetCreditNotePdf).

  • sourceImportIdstring

    Acheteur uniquement : l’import de facture (ID-…) à partir duquel l’avoir a été lu, c’est-à-dire le document d’avoir du fournisseur, téléversé et lu par Pleaxy. Son document est conservé avec l’avoir s’il s’agit d’un PDF de moins de 8 Mo, et l’import consigne l’avoir. Jamais montré au fournisseur.

Retour

201 Created avec l’objet présenté dans la réponse.

Plus de détails

Émet un avoir (fournisseur) ou enregistre un avoir reçu (acheteur). Indiquez exactement l’un des deux : invoiceId (la facture qu’il corrige, dont il reprend l’acheteur, le fournisseur, la devise, le bon de commande et la ligne de bon de commande) ou connectionId (la contrepartie, avec currency). Le total est calculé à partir des lignes et des taxes comme pour CreateInvoice. Accepté immédiatement lorsqu’il désigne une facture et ne dépasse pas le total de celle-ci ; il est alors imputé sur cette facture lorsque les avoirs de l’acheteur sont réglés dans Pleaxy et que la facture n’est ni exportée ni payée. L’acheteur est notifié.

Erreurs

  • 400 Bad Request - CREDIT_NOTE_TARGET_REQUIRED (ni invoiceId ni connectionId, ou les deux), CREDIT_NOTE_INVALID (correctsBilling avec un autre motif, une facture refusée, une devise qui n’est pas celle de la facture, aucune devise sans facture), ISSUE_DATE_INVALID, un pdfBase64 qui n’est pas du base64, est vide ou dépasse 8 Mo, ou n’est pas un PDF (« pdfBase64 doesn't decode to a PDF document (missing %PDF- header) »), ou un corps qui échoue à la validation.
  • 404 Not Found - La facture ou la connexion ne vous appartient pas.
  • 409 Conflict - CREDIT_NOTE_NUMBER_TAKEN : ce numéro est déjà utilisé entre vous et cet acheteur.
  • 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.
POST /v1/workspaces/{regionId}/credit-notes
Requête
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/credit-notes" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "invoiceId": "string",
   "connectionId": "string",
   "externalCreditNoteNumber": "string",
   "issueDate": "string",
   "reason": "returned_goods" | "price_adjustment" | "service_credit" | "rebate" | "other",
   "correctsBilling": boolean,
   "note": "string",
   "currency": "string",
   "lineItems": [ { "description": "string", "qty": number, "unitPrice": number } ],
   "taxAmount": number,
   "pdfBase64": "string"
}
Réponse · 201 Created
{
   "documentType": "credit_note",
   "id": "string",
   "externalCreditNoteNumber": "string",
   "issueDate": "string",
   "buyerOrgId": "string",
   "buyerOrgName": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "supplierConnectionId": "string",
   "currency": "string",
   "reason": "returned_goods" | "price_adjustment" | "service_credit" | "rebate" | "other",
   "correctsBilling": true,
   "note": "string",
   "lineItems": [ { "description": "string", "qty": number, "unitPrice": number, "amount": number } ],
   "adjustments": [ { "type": "discount" | "charge", "description": "string", "amount": number } ],
   "taxAmount": number,
   "amount": number,
   "refunded": number,
   "remaining": number,
   "invoiceId": "string",
   "externalInvoiceNumber": "string",
   "po": "string",
   "poLineNo": number,
   "status": "pending_acceptance" | "accepted" | "rejected" | "void",
   "autoAccepted": true,
   "acceptedAt": "string",
   "rejection": { "at": "string", "reason": "string" },
   "poEffect": { "kind": "release", "po": "string", "poLineNo": number, "amount": number, "qty": number } | { "kind": "none", "why": "not_a_correction" | "no_po" | "po_closed" },
   "applications": [ { "id": "string", "invoiceId": "string", "externalInvoiceNumber": "string", "amount": number, "appliedAt": "string", "auto": true } ],
   "exports": [ { "exportId": "string", "exportedAt": "string" } ],
   "source": "feed" | "cloud_sync",
   "submittedFormat": "json" | "ubl" | "cxml",
   "cloudProvider": "aws" | "azure",
   "hasPdf": boolean,
   "createdAt": "string"
}

Accepter un avoir

Accepte un avoir.

POST/v1/workspaces/{regionId}/credit-notes/{creditNoteId}/accept

Paramètres

  • creditNoteIdstringObligatoire

    L’avoir, par exemple "CN-1A2B3C4D".

Retour

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

Plus de détails

Accepte un avoir en attente d’acceptation. En une seule écriture : son statut, le solde de bon de commande qu’une correction restitue (jamais plus que ce que la facture corrigée a consommé sur la ligne, diminué des avoirs antérieurs) et, lorsque les avoirs sont réglés dans Pleaxy et que la facture qu’il corrige peut le recevoir, son imputation sur celle-ci. Le fournisseur est notifié.

Erreurs

  • 400 Bad Request - CREDIT_OVER_RELEASES_PO : il restituerait plus que ce que la facture a consommé sur sa ligne de bon de commande.
  • 409 Conflict - CREDIT_NOTE_NOT_PENDING (déjà accepté, refusé ou annulé), ou CREDIT_NOTE_CHANGED (il a changé pendant l’acceptation ; rechargez et réessayez).
  • 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.
POST /v1/workspaces/{regionId}/credit-notes/{creditNoteId}/accept
Requête
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/credit-notes/{creditNoteId}/accept" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
{
   "documentType": "credit_note",
   "id": "string",
   "externalCreditNoteNumber": "string",
   "issueDate": "string",
   "buyerOrgId": "string",
   "buyerOrgName": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "supplierConnectionId": "string",
   "currency": "string",
   "reason": "returned_goods" | "price_adjustment" | "service_credit" | "rebate" | "other",
   "correctsBilling": true,
   "note": "string",
   "lineItems": [ { "description": "string", "qty": number, "unitPrice": number, "amount": number } ],
   "adjustments": [ { "type": "discount" | "charge", "description": "string", "amount": number } ],
   "taxAmount": number,
   "amount": number,
   "refunded": number,
   "remaining": number,
   "invoiceId": "string",
   "externalInvoiceNumber": "string",
   "po": "string",
   "poLineNo": number,
   "status": "pending_acceptance" | "accepted" | "rejected" | "void",
   "autoAccepted": true,
   "acceptedAt": "string",
   "rejection": { "at": "string", "reason": "string" },
   "poEffect": { "kind": "release", "po": "string", "poLineNo": number, "amount": number, "qty": number } | { "kind": "none", "why": "not_a_correction" | "no_po" | "po_closed" },
   "applications": [ { "id": "string", "invoiceId": "string", "externalInvoiceNumber": "string", "amount": number, "appliedAt": "string", "auto": true } ],
   "exports": [ { "exportId": "string", "exportedAt": "string" } ],
   "source": "feed" | "cloud_sync",
   "submittedFormat": "json" | "ubl" | "cxml",
   "cloudProvider": "aws" | "azure",
   "hasPdf": boolean,
   "createdAt": "string"
}

Refuser un avoir

Refuse un avoir, avec un motif.

POST/v1/workspaces/{regionId}/credit-notes/{creditNoteId}/reject

Paramètres

  • creditNoteIdstringObligatoire

    L’avoir, par exemple "CN-1A2B3C4D".

Corps

  • reasonstringObligatoire

    De 1 à 1000 caractères.

Retour

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

Plus de détails

Refuse un avoir en attente d’acceptation, avec un motif que lit le fournisseur. Le fournisseur est notifié.

Erreurs

  • 400 Bad Request - CREDIT_NOTE_INVALID : aucun motif.
  • 409 Conflict - CREDIT_NOTE_NOT_PENDING ou CREDIT_NOTE_CHANGED.
  • 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.
POST /v1/workspaces/{regionId}/credit-notes/{creditNoteId}/reject
Requête
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/credit-notes/{creditNoteId}/reject" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{ "reason": "string" }
Réponse · 200 OK
{
   "documentType": "credit_note",
   "id": "string",
   "externalCreditNoteNumber": "string",
   "issueDate": "string",
   "buyerOrgId": "string",
   "buyerOrgName": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "supplierConnectionId": "string",
   "currency": "string",
   "reason": "returned_goods" | "price_adjustment" | "service_credit" | "rebate" | "other",
   "correctsBilling": true,
   "note": "string",
   "lineItems": [ { "description": "string", "qty": number, "unitPrice": number, "amount": number } ],
   "adjustments": [ { "type": "discount" | "charge", "description": "string", "amount": number } ],
   "taxAmount": number,
   "amount": number,
   "refunded": number,
   "remaining": number,
   "invoiceId": "string",
   "externalInvoiceNumber": "string",
   "po": "string",
   "poLineNo": number,
   "status": "pending_acceptance" | "accepted" | "rejected" | "void",
   "autoAccepted": true,
   "acceptedAt": "string",
   "rejection": { "at": "string", "reason": "string" },
   "poEffect": { "kind": "release", "po": "string", "poLineNo": number, "amount": number, "qty": number } | { "kind": "none", "why": "not_a_correction" | "no_po" | "po_closed" },
   "applications": [ { "id": "string", "invoiceId": "string", "externalInvoiceNumber": "string", "amount": number, "appliedAt": "string", "auto": true } ],
   "exports": [ { "exportId": "string", "exportedAt": "string" } ],
   "source": "feed" | "cloud_sync",
   "submittedFormat": "json" | "ubl" | "cxml",
   "cloudProvider": "aws" | "azure",
   "hasPdf": boolean,
   "createdAt": "string"
}

Obtenir le mode de règlement des avoirs

Indique où sont réglés les avoirs acceptés.

GET/v1/workspaces/{regionId}/credit-notes/settings

Retour

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

Plus de détails

Qui règle les avoirs acceptés : pleaxy (imputés sur les factures ici) ou accounting_system (exportés pour votre ERP). Tant qu’aucun choix n’est fait (chosen: false), c’est accounting_system pour un espace de travail qui a exporté des factures pour paiement, et pleaxy sinon.

Erreurs

  • 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}/credit-notes/settings
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/credit-notes/settings" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
{
   "creditSettlement": "pleaxy" | "accounting_system",
   "chosen": boolean
}

Définir le mode de règlement des avoirs

Choisit où sont réglés les avoirs acceptés.

PUT/v1/workspaces/{regionId}/credit-notes/settings

Corps

  • creditSettlementstringObligatoire

    "pleaxy" ou "accounting_system".

Retour

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

Plus de détails

Choisit qui règle les avoirs acceptés. Le passage à accounting_system est refusé tant que des avoirs sont imputés sur des factures impayées ; retirez-les d’abord.

Erreurs

  • 400 Bad Request - CREDIT_SETTLEMENT_INVALID.
  • 409 Conflict - CREDITS_APPLIED_TO_UNPAID : des avoirs sont imputés sur des factures impayées.
  • 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.
PUT /v1/workspaces/{regionId}/credit-notes/settings
Requête
curl -X PUT "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/credit-notes/settings" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{ "creditSettlement": "pleaxy" | "accounting_system" }
Réponse · 200 OK
{
   "creditSettlement": "pleaxy" | "accounting_system",
   "chosen": boolean
}

Lister les avoirs disponibles

Liste les avoirs pouvant être imputés sur une facture.

GET/v1/workspaces/{regionId}/invoices/{invoiceId}/available-credits

Paramètres

  • invoiceIdstringObligatoire

    La facture, par exemple "INV-1A2B3C4D".

Retour

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

Plus de détails

Les avoirs acceptés du fournisseur de la facture dans sa devise, du plus ancien au plus récent, chacun avec son solde restant et une suggestion (jusqu’à ce que doit la facture), ainsi que les avoirs du fournisseur encore en attente d’acceptation. locked indique pourquoi la facture ne peut pas recevoir d’avoirs pour le moment.

Erreurs

  • 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}/available-credits
Requête
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/available-credits" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
{
   "creditSettlement": "pleaxy" | "accounting_system",
   "locked": "exported" | "paid" | "rejected" | "otherCurrency",
   "amountDue": number,
   "currency": "string",
   "credits": [ { "creditNoteId": "string", "externalCreditNoteNumber": "string", "reason": "string", "issueDate": "string", "amount": number, "remaining": number, "suggested": number } ],
   "pending": [ { "creditNoteId": "string", "externalCreditNoteNumber": "string", "reason": "string", "amount": number } ],
   "suggestedTotal": number
}

Imputer des avoirs

Impute des avoirs sur une facture.

POST/v1/workspaces/{regionId}/invoices/{invoiceId}/credit-applications

Paramètres

  • invoiceIdstringObligatoire

    La facture, par exemple "INV-1A2B3C4D".

Corps

  • applicationsArray<{ creditNoteId, amount }>Obligatoire

    De 1 à 20, chaque avoir une seule fois, chaque montant au plus égal à son solde restant.

Retour

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

Plus de détails

Impute des avoirs acceptés sur une facture qui n’est ni exportée, ni payée, ni refusée, ni due dans une autre devise, en tout ou rien, en une seule écriture avec chaque avoir. Le montant dû diminue ; le total et ses taxes, non. Les avoirs peuvent couvrir au plus ce que doit la facture ; une facture validée qu’ils couvrent entièrement est marquée payée avec la méthode "credit" (une facture non validée, une fois validée). Le fournisseur est notifié. Renvoie la facture.

Erreurs

  • 400 Bad Request - CREDIT_APPLICATIONS_REQUIRED, CREDIT_APPLICATIONS_INVALID (un avoir listé deux fois, dans une autre devise ou d’un autre fournisseur), ou CREDIT_OVER_APPLIED (plus que le solde d’un avoir, ou plus que ce que doit la facture).
  • 409 Conflict - INVOICE_LOCKED (exportée, payée, refusée ou due dans une autre devise), CREDIT_NOTE_NOT_ACCEPTED, CREDITS_SETTLED_IN_ACCOUNTING (votre système comptable règle les avoirs), ou CREDIT_NOTE_CHANGED.
  • 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.
POST /v1/workspaces/{regionId}/invoices/{invoiceId}/credit-applications
Requête
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/credit-applications" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{ "applications": [ { "creditNoteId": "string", "amount": number } ] }
Réponse · 200 OK
{
   "documentType": "invoice" | "debit_note",
   "amendsInvoiceId": "string",
   "amendsExternalInvoiceNumber": "string",
   "debitNoteIds": [ "string" ],
   "replacesInvoiceIds": [ "string" ],
   "replacedByInvoiceIds": [ "string" ],
   "replacement": { "creditedInFull": boolean, "uncredited": number },
   "uncreditedOriginals": [ { "invoiceId": "string", "externalInvoiceNumber": "string", "uncredited": number, "currency": "string" } ],
   "id": "string",
   "po": "string",
   "poLineNo": number,
   "billsNoPoLine": true,
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "usageAmount": number,
   "usageCurrency": "string",
   "tolerancePct": number,
   "matchStatus": "pending" | "matched" | "discrepancy" | "unverified",
   "unverifiedReason": "no_purchase_order" | "no_billing_connection" | "debit_note",
   "discrepancyReason": "amount" | "currency",
   "paid": boolean,
   "dueInDays": number,
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "createdAt": "string",
   "lastRemindedAt": "string",
   "rejection": { "reasonCode": "amount_incorrect" | "not_ordered_or_not_received" | "duplicate" | "missing_or_wrong_po" | "wrong_billing_entity" | "other", "reason": "string", "at": "string" },
   "replacesInvoiceId": "string",
   "source": "po-flip" | "direct" | "manual" | "feed",
   "submittedFormat": "json" | "cxml" | "ubl",
   "submittedBy": "string",
   "externalInvoiceNumber": "string",
   "lineItems": [
      { "description": "string", "qty": number, "unitPrice": number, "discount": number, "charge": number, "amount": number }
   ],
   "adjustments": [
      { "type": "discount" | "charge", "description": "string", "amount": number }
   ],
   "taxAmount": number,
   "taxBreakdown": [ { "description": "string", "rate": number, "amount": number } ],
   "paymentCurrencyAmount": { "currencyCode": "string", "totalAmount": number, "currencyExchangeDetails": { "rate": number, "rateDate": "string", "rateSource": "string" } },
   "taxCurrencyAmount": { "currencyCode": "string", "amountBreakdown": { "taxes": { "totalAmount": number } }, "currencyExchangeDetails": { "rate": number, "rateDate": "string", "rateSource": "string" } },
   "baseCurrencyAmount": { "currencyCode": "string", "totalAmount": number },
   "rateWarnings": [
      { "object": "payment" | "tax", "currency": "string", "statedRate": number, "referenceRate": number, "source": "provider" | "override", "asOf": "string", "deviationPct": number }
   ],
   "withholdings": [ { "description": "string", "rate": number, "amount": number } ],
   "deductions": [ { "kind": "prepayment" | "credit", "description": "string", "amount": number, "reference": "string", "paidOn": "string", "sourceInvoiceId": "string", "stated": true } ],
   "invoiceKind": "prepayment",
   "creditNoteIds": [ "string" ],
   "creditApplications": [ { "id": "string", "creditNoteId": "string", "externalCreditNoteNumber": "string", "amount": number, "appliedAt": "string", "appliedByName": "string", "auto": true } ],
   "payment": { "status": "recorded", "method": "ach" | "wire" | "check" | "card" | "other" | "credit", "paymentDate": "string", "reference": "string", "paidAmount": { "amount": number, "currency": "string", "rate": number, "rateDate": "string" } },
   "remittances": [ { "id": "string", "sentAt": "string", "sentByName": "string", "note": "string", "file": { "fileName": "string", "contentType": "application/pdf" | "image/png" | "image/jpeg", "sizeBytes": number } } ]
}

Retirer une imputation d’avoir

Retire un avoir d’une facture.

DELETE/v1/workspaces/{regionId}/invoices/{invoiceId}/credit-applications/{applicationId}

Paramètres

  • invoiceIdstringObligatoire

    La facture, par exemple "INV-1A2B3C4D".

  • applicationIdstringObligatoire

    L’imputation, issue des creditApplications de la facture.

Retour

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

Plus de détails

Retire un avoir imputé sur une facture qui n’est ni exportée ni payée ; le montant revient à son avoir. Renvoie la facture.

Erreurs

  • 404 Not Found - La facture n’a pas d’imputation de ce type.
  • 409 Conflict - INVOICE_LOCKED (exportée ou payée), ou CREDIT_NOTE_CHANGED.
  • 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.
DELETE /v1/workspaces/{regionId}/invoices/{invoiceId}/credit-applications/{applicationId}
Requête
curl -X DELETE "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/credit-applications/{applicationId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Réponse · 200 OK
{
   "documentType": "invoice" | "debit_note",
   "amendsInvoiceId": "string",
   "amendsExternalInvoiceNumber": "string",
   "debitNoteIds": [ "string" ],
   "replacesInvoiceIds": [ "string" ],
   "replacedByInvoiceIds": [ "string" ],
   "replacement": { "creditedInFull": boolean, "uncredited": number },
   "uncreditedOriginals": [ { "invoiceId": "string", "externalInvoiceNumber": "string", "uncredited": number, "currency": "string" } ],
   "id": "string",
   "po": "string",
   "poLineNo": number,
   "billsNoPoLine": true,
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "usageAmount": number,
   "usageCurrency": "string",
   "tolerancePct": number,
   "matchStatus": "pending" | "matched" | "discrepancy" | "unverified",
   "unverifiedReason": "no_purchase_order" | "no_billing_connection" | "debit_note",
   "discrepancyReason": "amount" | "currency",
   "paid": boolean,
   "dueInDays": number,
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "createdAt": "string",
   "lastRemindedAt": "string",
   "rejection": { "reasonCode": "amount_incorrect" | "not_ordered_or_not_received" | "duplicate" | "missing_or_wrong_po" | "wrong_billing_entity" | "other", "reason": "string", "at": "string" },
   "replacesInvoiceId": "string",
   "source": "po-flip" | "direct" | "manual" | "feed",
   "submittedFormat": "json" | "cxml" | "ubl",
   "submittedBy": "string",
   "externalInvoiceNumber": "string",
   "lineItems": [
      { "description": "string", "qty": number, "unitPrice": number, "discount": number, "charge": number, "amount": number }
   ],
   "adjustments": [
      { "type": "discount" | "charge", "description": "string", "amount": number }
   ],
   "taxAmount": number,
   "taxBreakdown": [ { "description": "string", "rate": number, "amount": number } ],
   "paymentCurrencyAmount": { "currencyCode": "string", "totalAmount": number, "currencyExchangeDetails": { "rate": number, "rateDate": "string", "rateSource": "string" } },
   "taxCurrencyAmount": { "currencyCode": "string", "amountBreakdown": { "taxes": { "totalAmount": number } }, "currencyExchangeDetails": { "rate": number, "rateDate": "string", "rateSource": "string" } },
   "baseCurrencyAmount": { "currencyCode": "string", "totalAmount": number },
   "rateWarnings": [
      { "object": "payment" | "tax", "currency": "string", "statedRate": number, "referenceRate": number, "source": "provider" | "override", "asOf": "string", "deviationPct": number }
   ],
   "withholdings": [ { "description": "string", "rate": number, "amount": number } ],
   "deductions": [ { "kind": "prepayment" | "credit", "description": "string", "amount": number, "reference": "string", "paidOn": "string", "sourceInvoiceId": "string", "stated": true } ],
   "invoiceKind": "prepayment",
   "creditNoteIds": [ "string" ],
   "creditApplications": [ { "id": "string", "creditNoteId": "string", "externalCreditNoteNumber": "string", "amount": number, "appliedAt": "string", "appliedByName": "string", "auto": true } ],
   "payment": { "status": "recorded", "method": "ach" | "wire" | "check" | "card" | "other" | "credit", "paymentDate": "string", "reference": "string", "paidAmount": { "amount": number, "currency": "string", "rate": number, "rateDate": "string" } },
   "remittances": [ { "id": "string", "sentAt": "string", "sentByName": "string", "note": "string", "file": { "fileName": "string", "contentType": "application/pdf" | "image/png" | "image/jpeg", "sizeBytes": number } } ]
}
Nous contacter