Skip to content

Document Status

Track the delivery lifecycle of sent invoices and credit notes on the Peppol network.

GET /api/v1/invoices/:id #

Track the lifecycle of sent documents. After calling send(), use getStatus() to check delivery progress at any time.

import { Peppol } from "@getpeppr/sdk";

const peppol = new Peppol({ apiKey: "sk_live_..." });

// Send an invoice
const result = await peppol.invoices.send(invoiceData);
console.log(result.status); // "submitted"

// Check status later
const status = await peppol.invoices.getStatus(result.id);
console.log(status.status);

// Status flow:
//   "submitted" → "delivered" → "accepted" → "paid"
//                              → "rejected"
//               → "failed"

// Access Peppol message ID once sent
if (status.peppolMessageId) {
  console.log(`Peppol AS4 ID: ${status.peppolMessageId}`);
}

Example Response

200 OK
{
  "id": "inv_abc123",
  "status": "delivered",
  "peppolMessageId": "as4-msg-uuid-...",
  "createdAt": "2026-03-01T10:00:00Z"
}

Status Flow

Every document follows a linear progression through these states:

submitted delivered accepted paid

After delivered, a document can also transition to:

rejected

At any point after submitted, delivery failures result in:

failed

Status Details

  • submitted — document submitted to the Peppol network
  • delivered — confirmed received by buyer's access point
  • accepted — buyer accepted the document
  • rejected — buyer rejected the document
  • paid — buyer marked the invoice as paid
  • failed — delivery failed (network/protocol error)
Use Webhooks for real-time status updates instead of polling getStatus().