Riferimento API

Sincronizzazione dei documenti

Mantieni il tuo sistema allineato: cosa è cambiato, e ogni documento in JSON, cXML o UBL.

Altro su questa risorsa

Per un ERP o un sistema di fatturazione o di riconciliazione degli incassi che segue Pleaxy senza che nessuno ridigiti nulla. ListSyncEvents dice cosa è cambiato dalla tua ultima chiamata (oppure lo invia un webhook); poi leggi il documento: un ordine d’acquisto come OrderRequest cXML o Order UBL, lo stato di una fattura, una fattura come Invoice UBL, e ogni pagamento con il suo avviso di pagamento. Ogni documento è la copia del fornitore, chiunque lo richieda: mai le note interne dell’acquirente, le approvazioni o chi ha registrato un pagamento. L’ERP o il feed bancario di un acquirente registra i pagamenti con RecordPayments.

Elencare gli eventi di sincronizzazione

Elenca cosa è cambiato dalla tua ultima chiamata, dal meno recente.

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

Parametri

  • afterstring

    Il nextCursor della tua ultima chiamata (un id evento). Omettilo per partire dall’evento meno recente.

  • limitinteger

    1-500 eventi per chiamata. Valore predefinito: 100.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Cosa è cambiato in questa parte del workspace, dal meno recente. Un evento indica un documento, mai il suo contenuto: leggi il documento con l’operazione apposita, così ottieni sempre la versione attuale. Ripassa nextCursor come after nella chiamata successiva; finché hasMore è true, richiama subito. Gli eventi sono conservati 30 giorni e consegnati almeno una volta, quindi la stessa modifica può arrivare due volte; gli ultimi 5 secondi attendono la chiamata successiva. Un chiamante Fornitore riceve purchase_order.issued, changed, canceled e rejected, invoice.received, approved, rejected, paid, payment_withdrawn, remittance_sent e credit_applied, invoice.updated (un acquirente ha messo in sospeso la fattura per verificarla, o l’ha sbloccata: leggi GetInvoiceStatus), e credit_note.accepted e rejected. Un chiamante Acquirente riceve invoice.received e credit_note.received (un fornitore ha inviato una fattura o una nota di credito); invoice.updated (una fattura è stata approvata, da una persona o automaticamente, o rifiutata, oppure il suo fornitore ne ha confermato le coordinate bancarie o l’ha segnalata); invoice.payment (un pagamento è stato registrato o ritirato, un credito ha saldato la fattura, oppure un pagamento tramite Pleaxy è andato a buon fine o non è riuscito: leggi GetInvoiceRemittance); purchase_order.updated (un ordine è stato approvato, rifiutato o annullato); e purchase_order.confirmed e purchase_order.shipped (leggi GetPurchaseOrderFulfillment). Riceve solo i tipi di documento che il suo ruolo procurement può vedere.

Campi della risposta

  • events[].typestring

    Cosa è successo, come <document>.<change>, ad es. invoice.paid.

  • events[].buyerWorkspaceIdstring

    Chiamanti Fornitore: l’ID del workspace dell’acquirente, da passare come ?buyer= quando leggi il documento.

  • nextCursorstring

    Da dove parte la tua prossima chiamata. Assente solo prima del primo evento.

  • hasMoreboolean

    Ci sono altri eventi in attesa: richiama subito.

Errori

  • 400 Bad Request - after non è un id evento, oppure limit è fuori intervallo.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/sync/events
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/reg_01k5x8p9j3q7vn2mhb4tzc6rde.supplier/sync/events?after=EV-mgx2k9a1-0c4f81d2" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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
}

Recuperare il documento di un ordine d’acquisto

Restituisce un ordine d’acquisto emesso in cXML o UBL.

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

Parametri

  • poIdstringObbligatorio

    L’identificativo dell’ordine d’acquisto.

  • format"cxml" | "ubl"

    Il formato del documento. Valore predefinito: cxml.

  • buyerstring

    Chiamanti Fornitore: l’ID del workspace dell’acquirente, quando due acquirenti hanno emesso lo stesso id.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Un ordine d’acquisto emesso come documento che il tuo sistema può importare. format=cxml (predefinito) è un OrderRequest cXML: tipo new, update dalla versione 2, delete una volta annullato. format=ubl è un Order UBL 2.1, oppure un OrderCancellation una volta annullato. Entrambe le parti sono indicate dai loro ID del workspace. È la copia del fornitore, chiunque la richieda. Un fornitore i cui acquirenti condividono un id di OdA aggiunge ?buyer=<buyer Workspace ID>.

Errori

  • 400 Bad Request - format non è cxml né ubl.
  • 404 Not Found - Nessun ordine d’acquisto tuo ha questo id.
  • 409 Conflict - Codice ORDER_NOT_ISSUED: una bozza, un ordine in attesa di approvazione o uno rifiutato non è mai stato inviato al suo fornitore.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/purchase-orders/{poId}/document
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/document" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 200 OK
application/xml

Recuperare il documento di una fattura

Restituisce una fattura come Invoice UBL 2.1.

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

Parametri

  • invoiceIdstringObbligatorio

    L’identificativo della fattura.

  • format"ubl"

    L’unico formato, e quello predefinito.

  • buyerstring

    Chiamanti Fornitore: l’ID del workspace dell’acquirente, quando due acquirenti hanno emesso lo stesso id.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Una fattura come Invoice UBL 2.1 (tipo 380, o 383 per una nota di debito), da registrare nell’ERP dell’acquirente o per l’archivio del fornitore: le righe, gli sconti e gli addebiti a livello di documento, imposte e ritenute, gli acconti, le istruzioni di pagamento del fornitore, e l’OdA e il contratto che fattura. I totali corrispondono all’importo della fattura. È la vista del fornitore, chiunque la richieda: niente abbinamento, rilievi o approvazioni.

Errori

  • 404 Not Found - Nessuna fattura tua ha questo id.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/invoices/{invoiceId}/document
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/document" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 200 OK
application/xml

Recuperare lo stato di una fattura

Restituisce lo stato di una fattura, con i codici di stato standard.

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

Parametri

  • invoiceIdstringObbligatorio

    L’identificativo della fattura.

  • buyerstring

    Chiamanti Fornitore: l’ID del workspace dell’acquirente, quando due acquirenti hanno emesso lo stesso id.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Lo stato di una fattura, per il sistema che l’ha inviata o per quello che la paga, come un unico stato con i codici che usano i sistemi di fatturazione elettronica. L’equivalente in cXML o UBL è GetInvoiceStatusDocument. È la vista del fornitore, chiunque la richieda.

Campi della risposta

  • statusstring

    received: l’abbinamento non è ancora stato eseguito. in_process: in attesa di approvazione. under_query: vedi queryReason. approved: approvata e non pagata. payment_in_progress: è in corso un pagamento tramite Pleaxy. paid. rejected. duplicate: rifiutata come duplicato.

  • responseCodestring

    Lo stato come UNCL4343, la lista di codici della Peppol Invoice Response.

  • queryReasonstring

    Perché la fattura è in verifica: non corrisponde al suo ordine d’acquisto, oppure le sue coordinate bancarie attendono conferma o sono state segnalate.

  • rejectionobject

    In caso di rifiuto: il codice motivo (amount_incorrect, not_ordered_or_not_received, duplicate, missing_or_wrong_po, wrong_billing_entity, other) e la nota dell’acquirente.

Errori

  • 404 Not Found - Nessuna fattura tua ha questo id.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/invoices/{invoiceId}/status
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/status" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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"
}

Recuperare il documento di stato di una fattura

Restituisce lo stato di una fattura in cXML o UBL.

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

Parametri

  • invoiceIdstringObbligatorio

    L’identificativo della fattura.

  • format"cxml" | "ubl"

    Il formato del documento. Valore predefinito: cxml.

  • buyerstring

    Chiamanti Fornitore: l’ID del workspace dell’acquirente, quando due acquirenti hanno emesso lo stesso id.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

GetInvoiceStatus come documento. format=cxml (predefinito) è uno StatusUpdateRequest cXML con un InvoiceStatus; format=ubl è un ApplicationResponse UBL 2.1 con i codici della Peppol Invoice Response e, per un rifiuto, il suo motivo.

Errori

  • 400 Bad Request - format non è cxml né ubl.
  • 404 Not Found - Nessuna fattura tua ha questo id.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/invoices/{invoiceId}/status/document
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/status/document" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 200 OK
application/xml

Recuperare l’avviso di pagamento di una fattura

Restituisce come e quando una fattura è stata pagata, con i suoi avvisi di pagamento.

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

Parametri

  • invoiceIdstringObbligatorio

    L’identificativo della fattura.

  • buyerstring

    Chiamanti Fornitore: l’ID del workspace dell’acquirente, quando due acquirenti hanno emesso lo stesso id.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Il segnale di pagamento di una fattura, per la riconciliazione degli incassi del fornitore: come e quando l’acquirente ha pagato, il riferimento, cosa è stato trattenuto e cosa è arrivato al fornitore, e gli avvisi di pagamento inviati dall’acquirente (note e prove di pagamento; GetRemittanceFile ne scarica uno). Pleaxy registra ciò che l’acquirente dichiara e non sposta denaro. Mai chi, presso l’acquirente, l’ha registrato. L’equivalente in cXML o UBL è GetInvoiceRemittanceDocument.

Campi della risposta

  • statusstring

    unpaid, recorded (l’acquirente ha registrato un pagamento effettuato al di fuori di Pleaxy), processing o paid_through_pleaxy (un pagamento tramite Pleaxy), withdrawn (l’acquirente ha ritirato la sua registrazione) oppure failed (solo per i chiamanti Acquirente: il suo ultimo pagamento tramite Pleaxy non è riuscito, in data failedAt).

  • payment.methodstring

    Come è stata pagata. credit: saldata con note di credito; nothing_due: approvata per 0.

  • payment.adviceVersionnumber

    1 per la prima registrazione; un numero più alto sostituisce l’avviso di pagamento precedente.

  • payment.netPaidobject

    Cosa è arrivato al fornitore, nella valuta dell’importo dovuto: l’importo dovuto meno quanto trattenuto.

Errori

  • 404 Not Found - Nessuna fattura tua ha questo id.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/invoices/{invoiceId}/remittance
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/remittance" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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 } } ]
}

Recuperare il documento dell’avviso di pagamento di una fattura

Restituisce il pagamento di una fattura in cXML o UBL.

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

Parametri

  • invoiceIdstringObbligatorio

    L’identificativo della fattura.

  • format"cxml" | "ubl"

    Il formato del documento. Valore predefinito: cxml.

  • buyerstring

    Chiamanti Fornitore: l’ID del workspace dell’acquirente, quando due acquirenti hanno emesso lo stesso id.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

GetInvoiceRemittance come documento. format=cxml (predefinito) è un PaymentRemittanceRequest cXML; format=ubl è un RemittanceAdvice UBL 2.1.

Errori

  • 400 Bad Request - format non è cxml né ubl.
  • 404 Not Found - Nessuna fattura tua ha questo id.
  • 409 Conflict - Codice NO_PAYMENT: non è ancora stato pagato né registrato nulla. GetInvoiceRemittance indica lo stato.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/invoices/{invoiceId}/remittance/document
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/invoices/{invoiceId}/remittance/document" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 200 OK
application/xml

Registrare pagamenti

Registra pagamenti già effettuati dal tuo ERP o dalla tua banca, fino a 50 alla volta.

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

Corpo

  • paymentsArrayObbligatorio

    1-50 pagamenti: { invoiceId, method, paymentDate, reference, note?, amount?, currency?, rate?, rateDate?, withholdings?, confirmReplaced? }, ogni campo come in RecordPayment.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Registra pagamenti che il tuo ERP o il tuo feed bancario ha già effettuato al di fuori di Pleaxy (bonifici, assegni, ACH, carta), così ogni fornitore riceve la notifica di pagamento, l’avviso di pagamento e l’evento di sincronizzazione senza che nessuno li ridigiti. Non sposta denaro. Ogni pagamento segue le regole di RecordPayment e riceve una risposta a sé; ripeterne uno è sicuro (already_recorded). Una fattura approvata da una chiave API viene comunque rifiutata. note diventa una nota dell’avviso di pagamento per il fornitore; una prova di pagamento può essere allegata solo da una persona.

Solo chiave API acquirente con l’ambito payments:record, generata con un procurementRole che può modificare le fatture (administrator o finance). Una persona che ha effettuato l’accesso usa RecordPayment.

Campi della risposta

  • results[].outcomestring

    recorded, already_recorded (lo stesso pagamento era già stato registrato), oppure rifiutato con lo stato, il codice e il messaggio che RecordPayment avrebbe restituito.

Errori

  • 400 Bad Request - Il corpo non è valido: nessun pagamento, più di 50, o un campo che RecordPayment non accetta. Non viene registrato nulla.
  • 403 Forbidden - Codice API_KEY_REQUIRED (una persona che ha effettuato l’accesso), API_KEY_SCOPE_MISSING (una chiave senza payments:record), oppure un ruolo procurement che non può modificare le fatture.
  • 429 Too Many Requests - Per pagamento, codice RATE_LIMITED quando la chiave ha già registrato 500 pagamenti oggi (UTC). Ogni chiamata che registra un pagamento genera anche una notifica payments_recorded_by_key nel workspace, con la chiave e le fatture.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
POST /v1/workspaces/{regionId}/invoices/payment-records
Richiesta
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" }
   ]
}
Risposta · 200 OK
{
   "results": [
      { "invoiceId": "string", "outcome": "recorded" | "already_recorded" | "refused", "status": number, "code": "string", "message": "string" }
   ],
   "recorded": number,
   "alreadyRecorded": number,
   "refused": number
}
Contattaci