Download OpenAPI specification:
Logistics operations API for the 4klyft platform.
This API provides comprehensive endpoints for managing:
All API endpoints (except /api/docs and /api/v1/iam/auth/*) require JWT Bearer token authentication.
Include the token in the Authorization header:
Authorization: Bearer <your-jwt-token>
API requests are rate-limited to ensure fair usage. Standard limits are:
Retrieve a paginated list of credit notes with optional filters.
| status | string Enum: "draft" "issued" "applied" "cancelled" Example: status=issued Filter by credit note status |
| partnerId | string Filter by partner ULID |
| invoiceId | string Filter by invoice ULID |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "invoiceId": "string",
- "invoiceNumber": "string",
- "partnerId": "string",
- "partnerName": "string",
- "currencyCode": "string",
- "status": "string",
- "reason": "string",
- "creditNoteNumber": "string",
- "totalAmountCents": 0,
- "totalAmountFormatted": "0.00",
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "grandTotalCents": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "description": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "unitPriceFormatted": "string",
- "amountCents": 0,
- "amountFormatted": "string",
- "originalLineItemId": "string",
- "taxCategoryId": "string",
- "taxAmountCents": 0,
- "taxRatePercent": 0
}
], - "issuedAt": "string",
- "appliedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
]
}Create a new credit note for an invoice.
Credit note data
| invoiceId required | string Invoice ULID to credit |
| reason required | string Reason for the credit note |
Array of objects Line items to credit | |
| issueImmediately | boolean Default: false |
{- "invoiceId": "string",
- "reason": "string",
- "lineItems": [
- {
- "description": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "originalLineItemId": "string"
}
], - "issueImmediately": false
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "invoiceId": "string",
- "invoiceNumber": "string",
- "partnerId": "string",
- "partnerName": "string",
- "currencyCode": "string",
- "status": "string",
- "reason": "string",
- "creditNoteNumber": "string",
- "totalAmountCents": 0,
- "totalAmountFormatted": "0.00",
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "grandTotalCents": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "description": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "unitPriceFormatted": "string",
- "amountCents": 0,
- "amountFormatted": "string",
- "originalLineItemId": "string",
- "taxCategoryId": "string",
- "taxAmountCents": 0,
- "taxRatePercent": 0
}
], - "issuedAt": "string",
- "appliedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Retrieve a single credit note by its ULID.
| id required | string CreditNote identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "invoiceId": "string",
- "invoiceNumber": "string",
- "partnerId": "string",
- "partnerName": "string",
- "currencyCode": "string",
- "status": "string",
- "reason": "string",
- "creditNoteNumber": "string",
- "totalAmountCents": 0,
- "totalAmountFormatted": "0.00",
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "grandTotalCents": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "description": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "unitPriceFormatted": "string",
- "amountCents": 0,
- "amountFormatted": "string",
- "originalLineItemId": "string",
- "taxCategoryId": "string",
- "taxAmountCents": 0,
- "taxRatePercent": 0
}
], - "issuedAt": "string",
- "appliedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Apply an issued credit note to the invoice.
| id required | string CreditNote identifier |
The new CreditNote resource
Represents a credit note in the billing system.
{ }{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "invoiceId": "string",
- "invoiceNumber": "string",
- "partnerId": "string",
- "partnerName": "string",
- "currencyCode": "string",
- "status": "string",
- "reason": "string",
- "creditNoteNumber": "string",
- "totalAmountCents": 0,
- "totalAmountFormatted": "0.00",
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "grandTotalCents": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "description": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "unitPriceFormatted": "string",
- "amountCents": 0,
- "amountFormatted": "string",
- "originalLineItemId": "string",
- "taxCategoryId": "string",
- "taxAmountCents": 0,
- "taxRatePercent": 0
}
], - "issuedAt": "string",
- "appliedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Issue a draft credit note.
| id required | string CreditNote identifier |
The new CreditNote resource
| creditNoteNumber | string or null <= 50 characters |
{- "creditNoteNumber": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "invoiceId": "string",
- "invoiceNumber": "string",
- "partnerId": "string",
- "partnerName": "string",
- "currencyCode": "string",
- "status": "string",
- "reason": "string",
- "creditNoteNumber": "string",
- "totalAmountCents": 0,
- "totalAmountFormatted": "0.00",
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "grandTotalCents": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "description": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "unitPriceFormatted": "string",
- "amountCents": 0,
- "amountFormatted": "string",
- "originalLineItemId": "string",
- "taxCategoryId": "string",
- "taxAmountCents": 0,
- "taxRatePercent": 0
}
], - "issuedAt": "string",
- "appliedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Represents an invoice in the billing system.
Invoices track billing for partners with support for line items, issuing, payment tracking, and cancellation.
Retrieve a paginated list of invoices with optional filters.
| status | string Enum: "draft" "issued" "paid" "overdue" "cancelled" Example: status=issued Filter by invoice status |
| partnerId | string Example: partnerId=01HQWXYZ1234567890ABCDEF Filter by partner ULID |
| dueDateFrom | string <date> Example: dueDateFrom=2024-01-01 Filter invoices due from this date (inclusive) |
| dueDateTo | string <date> Example: dueDateTo=2024-12-31 Filter invoices due up to this date (inclusive) |
| page | integer >= 1 Default: 1 Example: page=1 Page number for pagination |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Example: itemsPerPage=30 Number of items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "status": "draft",
- "invoiceNumber": "INV-2024-001",
- "dueDate": "2024-07-15",
- "totalAmountCents": 15000,
- "totalAmountFormatted": "150.00 EUR",
- "subtotalCents": 10000,
- "totalTaxCents": 2000,
- "grandTotalCents": 12000,
- "notes": "Payment terms: Net 30",
- "lineItemCount": 5,
- "lineItems": [
- {
- "id": "01HQWXYZ1234567890ABCDEF",
- "description": "Delivery service - Amsterdam to Rotterdam",
- "quantity": 1,
- "unitPriceCents": 5000,
- "amountCents": 5000,
- "reference": "SHP-2024-001",
- "taxCategoryId": "01HQWXYZ1234567890ABCDEF",
- "taxAmountCents": 2000,
- "taxRatePercent": 20
}
], - "issuedAt": "2024-06-15T09:00:00+00:00",
- "paidAt": "2024-07-10T14:30:00+00:00",
- "paymentReference": "TXN-12345",
- "documentSubject": "billing/invoice/01HQWXYZ1234567890ABCDEF",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}
]
}Generate a new draft invoice. Optionally include line items and issue immediately.
Invoice generation data
| partnerId required | string Partner ULID |
| currencyCode | string or null ISO 4217 currency code. Optional — resolved from channel, tenant default, or country when omitted. |
| channelId | string or null Originating sales channel ULID (consulted for per-channel default currency). |
| dueDate required | string <date> Due date for payment |
| notes | string or null Additional notes |
| issueImmediately | boolean Default: false Whether to issue the invoice immediately |
Array of objects or null Line items to include |
{- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "currencyCode": "EUR",
- "channelId": "01HQWXYZ1234567890ABCDEF",
- "dueDate": "2024-07-15",
- "notes": "string",
- "issueImmediately": false,
- "lineItems": [
- {
- "description": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "reference": "string"
}
]
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "status": "draft",
- "invoiceNumber": "INV-2024-001",
- "dueDate": "2024-07-15",
- "totalAmountCents": 15000,
- "totalAmountFormatted": "150.00 EUR",
- "subtotalCents": 10000,
- "totalTaxCents": 2000,
- "grandTotalCents": 12000,
- "notes": "Payment terms: Net 30",
- "lineItemCount": 5,
- "lineItems": [
- {
- "id": "01HQWXYZ1234567890ABCDEF",
- "description": "Delivery service - Amsterdam to Rotterdam",
- "quantity": 1,
- "unitPriceCents": 5000,
- "amountCents": 5000,
- "reference": "SHP-2024-001",
- "taxCategoryId": "01HQWXYZ1234567890ABCDEF",
- "taxAmountCents": 2000,
- "taxRatePercent": 20
}
], - "issuedAt": "2024-06-15T09:00:00+00:00",
- "paidAt": "2024-07-10T14:30:00+00:00",
- "paymentReference": "TXN-12345",
- "documentSubject": "billing/invoice/01HQWXYZ1234567890ABCDEF",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Retrieve a single invoice by its invoice number.
| invoiceNumber required | string Example: INV-2024-001 Invoice number |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "status": "draft",
- "invoiceNumber": "INV-2024-001",
- "dueDate": "2024-07-15",
- "totalAmountCents": 15000,
- "totalAmountFormatted": "150.00 EUR",
- "subtotalCents": 10000,
- "totalTaxCents": 2000,
- "grandTotalCents": 12000,
- "notes": "Payment terms: Net 30",
- "lineItemCount": 5,
- "lineItems": [
- {
- "id": "01HQWXYZ1234567890ABCDEF",
- "description": "Delivery service - Amsterdam to Rotterdam",
- "quantity": 1,
- "unitPriceCents": 5000,
- "amountCents": 5000,
- "reference": "SHP-2024-001",
- "taxCategoryId": "01HQWXYZ1234567890ABCDEF",
- "taxAmountCents": 2000,
- "taxRatePercent": 20
}
], - "issuedAt": "2024-06-15T09:00:00+00:00",
- "paidAt": "2024-07-10T14:30:00+00:00",
- "paymentReference": "TXN-12345",
- "documentSubject": "billing/invoice/01HQWXYZ1234567890ABCDEF",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Retrieve a single invoice by its ULID. Includes line items.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Invoice ULID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "status": "draft",
- "invoiceNumber": "INV-2024-001",
- "dueDate": "2024-07-15",
- "totalAmountCents": 15000,
- "totalAmountFormatted": "150.00 EUR",
- "subtotalCents": 10000,
- "totalTaxCents": 2000,
- "grandTotalCents": 12000,
- "notes": "Payment terms: Net 30",
- "lineItemCount": 5,
- "lineItems": [
- {
- "id": "01HQWXYZ1234567890ABCDEF",
- "description": "Delivery service - Amsterdam to Rotterdam",
- "quantity": 1,
- "unitPriceCents": 5000,
- "amountCents": 5000,
- "reference": "SHP-2024-001",
- "taxCategoryId": "01HQWXYZ1234567890ABCDEF",
- "taxAmountCents": 2000,
- "taxRatePercent": 20
}
], - "issuedAt": "2024-06-15T09:00:00+00:00",
- "paidAt": "2024-07-10T14:30:00+00:00",
- "paymentReference": "TXN-12345",
- "documentSubject": "billing/invoice/01HQWXYZ1234567890ABCDEF",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Cancel an invoice. Only draft, issued, or overdue invoices can be cancelled.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Invoice ULID |
Cancellation data
| reason required | string Reason for cancellation |
{- "reason": "Duplicate invoice"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "status": "draft",
- "invoiceNumber": "INV-2024-001",
- "dueDate": "2024-07-15",
- "totalAmountCents": 15000,
- "totalAmountFormatted": "150.00 EUR",
- "subtotalCents": 10000,
- "totalTaxCents": 2000,
- "grandTotalCents": 12000,
- "notes": "Payment terms: Net 30",
- "lineItemCount": 5,
- "lineItems": [
- {
- "id": "01HQWXYZ1234567890ABCDEF",
- "description": "Delivery service - Amsterdam to Rotterdam",
- "quantity": 1,
- "unitPriceCents": 5000,
- "amountCents": 5000,
- "reference": "SHP-2024-001",
- "taxCategoryId": "01HQWXYZ1234567890ABCDEF",
- "taxAmountCents": 2000,
- "taxRatePercent": 20
}
], - "issuedAt": "2024-06-15T09:00:00+00:00",
- "paidAt": "2024-07-10T14:30:00+00:00",
- "paymentReference": "TXN-12345",
- "documentSubject": "billing/invoice/01HQWXYZ1234567890ABCDEF",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Render the invoice as a PDF via the Document module. Returns the generated Document resource; download it via GET /api/document/documents/{id}/download.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Invoice ULID |
Document generation options
| includeDetails | boolean Default: true Whether to include line-item details in the document. |
{- "includeDetails": true
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "type": "string",
- "subject": "string",
- "status": "string",
- "generatedBy": "string",
- "createdAt": "string",
- "number": "string",
- "primaryFormat": "string",
- "source": "string",
- "sourceRef": "string",
- "templateId": "string",
- "templateVersion": 0,
- "expiresAt": "string",
- "finalizedAt": "string",
- "voidedAt": "string",
- "voidReason": "string",
- "supersedes": "string",
- "supersededBy": "string",
- "storagePath": "string",
- "fileSize": 0,
- "failureReason": "string",
- "updatedAt": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}, - "renditions": [
- {
- "id": "string",
- "format": "string",
- "status": "string",
- "locale": "string",
- "storagePath": "string",
- "sizeBytes": 0,
- "generatedAt": "string",
- "failureReason": "string",
- "url": "string"
}
], - "attachments": [
- {
- "id": "string",
- "originalFilename": "string",
- "storagePath": "string",
- "mimeType": "string",
- "sizeBytes": 0,
- "purpose": "string",
- "uploadedAt": "string",
- "slot": "string",
- "uploadedBy": "string",
- "url": "string",
- "downloadUrl": "string"
}
], - "references": [
- {
- "id": "string",
- "targetDocumentId": "string",
- "type": "string",
- "addedAt": "string",
- "description": "string"
}
]
}Issue a draft invoice. Assigns an invoice number and makes it payable.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Invoice ULID |
Issue invoice data
| invoiceNumber | string or null Custom invoice number. If not provided, one will be auto-generated. |
{- "invoiceNumber": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "status": "draft",
- "invoiceNumber": "INV-2024-001",
- "dueDate": "2024-07-15",
- "totalAmountCents": 15000,
- "totalAmountFormatted": "150.00 EUR",
- "subtotalCents": 10000,
- "totalTaxCents": 2000,
- "grandTotalCents": 12000,
- "notes": "Payment terms: Net 30",
- "lineItemCount": 5,
- "lineItems": [
- {
- "id": "01HQWXYZ1234567890ABCDEF",
- "description": "Delivery service - Amsterdam to Rotterdam",
- "quantity": 1,
- "unitPriceCents": 5000,
- "amountCents": 5000,
- "reference": "SHP-2024-001",
- "taxCategoryId": "01HQWXYZ1234567890ABCDEF",
- "taxAmountCents": 2000,
- "taxRatePercent": 20
}
], - "issuedAt": "2024-06-15T09:00:00+00:00",
- "paidAt": "2024-07-10T14:30:00+00:00",
- "paymentReference": "TXN-12345",
- "documentSubject": "billing/invoice/01HQWXYZ1234567890ABCDEF",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Mark an issued or overdue invoice as paid.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Invoice ULID |
Payment data
| paymentReference | string or null Payment reference or transaction ID |
| paidAt | string or null <date-time> Payment date/time. Defaults to now if not provided. |
{- "paymentReference": "TXN-12345",
- "paidAt": "2019-08-24T14:15:22Z"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "status": "draft",
- "invoiceNumber": "INV-2024-001",
- "dueDate": "2024-07-15",
- "totalAmountCents": 15000,
- "totalAmountFormatted": "150.00 EUR",
- "subtotalCents": 10000,
- "totalTaxCents": 2000,
- "grandTotalCents": 12000,
- "notes": "Payment terms: Net 30",
- "lineItemCount": 5,
- "lineItems": [
- {
- "id": "01HQWXYZ1234567890ABCDEF",
- "description": "Delivery service - Amsterdam to Rotterdam",
- "quantity": 1,
- "unitPriceCents": 5000,
- "amountCents": 5000,
- "reference": "SHP-2024-001",
- "taxCategoryId": "01HQWXYZ1234567890ABCDEF",
- "taxAmountCents": 2000,
- "taxRatePercent": 20
}
], - "issuedAt": "2024-06-15T09:00:00+00:00",
- "paidAt": "2024-07-10T14:30:00+00:00",
- "paymentReference": "TXN-12345",
- "documentSubject": "billing/invoice/01HQWXYZ1234567890ABCDEF",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Deliver the issued invoice to the chosen recipients (To/CC/BCC) over the selected channel and format, optionally attaching documents. All fields are optional: an empty To list falls back to the partner billing contact, channel defaults to email, format to pdf, and attachments to the invoice's own document. The invoice must already be issued. Returns the invoice resource.
| id required | string Example: 01HQWXYZ1234567890ABCDEF Invoice ULID |
The new Invoice resource
| to | Array of strings Primary (To) recipients. Empty = fall back to the partner billing contact. |
| cc | Array of strings |
| bcc | Array of strings |
| channel | string Default: "email" Enum: "email" "portal" |
| format | string Default: "pdf" Enum: "pdf" "html" |
| attachmentDocumentIds | Array of strings Document IDs to attach. Empty = attach the invoice's own generated document. |
{- "to": [
- "string"
], - "cc": [
- "string"
], - "bcc": [
- "string"
], - "channel": "email",
- "format": "pdf",
- "attachmentDocumentIds": [
- "string"
]
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "status": "draft",
- "invoiceNumber": "INV-2024-001",
- "dueDate": "2024-07-15",
- "totalAmountCents": 15000,
- "totalAmountFormatted": "150.00 EUR",
- "subtotalCents": 10000,
- "totalTaxCents": 2000,
- "grandTotalCents": 12000,
- "notes": "Payment terms: Net 30",
- "lineItemCount": 5,
- "lineItems": [
- {
- "id": "01HQWXYZ1234567890ABCDEF",
- "description": "Delivery service - Amsterdam to Rotterdam",
- "quantity": 1,
- "unitPriceCents": 5000,
- "amountCents": 5000,
- "reference": "SHP-2024-001",
- "taxCategoryId": "01HQWXYZ1234567890ABCDEF",
- "taxAmountCents": 2000,
- "taxRatePercent": 20
}
], - "issuedAt": "2024-06-15T09:00:00+00:00",
- "paidAt": "2024-07-10T14:30:00+00:00",
- "paymentReference": "TXN-12345",
- "documentSubject": "billing/invoice/01HQWXYZ1234567890ABCDEF",
- "createdAt": "2024-06-14T10:30:00+00:00",
- "updatedAt": "2024-06-14T14:45:00+00:00"
}Represents a recurring invoice profile — a billing cadence that automatically generates invoices for a partner.
Retrieve a paginated list of recurring invoice profiles with optional filters.
| status | string Enum: "active" "paused" "ended" Example: status=active Filter by profile status |
| partnerId | string Example: partnerId=01HQWXYZ1234567890ABCDEF Filter by partner ULID |
| page | integer >= 1 Default: 1 Example: page=1 Page number for pagination |
| itemsPerPage | integer [ 1 .. 100 ] Default: 20 Example: itemsPerPage=20 Number of items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "cadence": "weekly",
- "anchorDay": 1,
- "status": "active",
- "dueDays": 14,
- "startAt": "2026-01-01T00:00:00+00:00",
- "endAt": "2026-12-31T00:00:00+00:00",
- "nextInvoiceAt": "2026-02-01T00:00:00+00:00",
- "lastInvoicedAt": "2026-01-01T00:00:00+00:00",
- "createdAt": "2026-01-01T10:30:00+00:00",
- "updatedAt": "2026-01-01T14:45:00+00:00"
}
]
}Create a recurring invoice profile that auto-generates invoices on the given billing cadence.
Recurring invoice profile data
| partnerId required | string Partner ULID |
| currencyCode required | string ISO 4217 currency code (required) |
| cadence required | string Enum: "weekly" "monthly" "quarterly" "yearly" Billing cadence |
| anchorDay required | integer Anchor day: ISO weekday (1..7) for weekly, day-of-month (1..31, clamped) otherwise |
| startAt required | string <date> First billing period start (UTC date) |
| endAt | string or null <date> Optional end of the active window (exclusive) |
| dueDays | integer Payment terms in days after each period start |
| autoIssue | boolean Default: true Whether generated invoices are issued immediately |
| notes | string or null Notes copied onto every generated invoice |
required | Array of objects Line template copied verbatim onto every generated invoice |
{- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "currencyCode": "EUR",
- "cadence": "monthly",
- "anchorDay": 1,
- "startAt": "2026-01-01",
- "endAt": "2019-08-24",
- "dueDays": 14,
- "autoIssue": true,
- "notes": "string",
- "lines": [
- {
- "description": "string",
- "quantity": 0,
- "unitPriceCents": 0,
- "reference": "string"
}
]
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "cadence": "weekly",
- "anchorDay": 1,
- "status": "active",
- "dueDays": 14,
- "startAt": "2026-01-01T00:00:00+00:00",
- "endAt": "2026-12-31T00:00:00+00:00",
- "nextInvoiceAt": "2026-02-01T00:00:00+00:00",
- "lastInvoicedAt": "2026-01-01T00:00:00+00:00",
- "createdAt": "2026-01-01T10:30:00+00:00",
- "updatedAt": "2026-01-01T14:45:00+00:00"
}Retrieve a single recurring invoice profile by its ULID.
| id required | string RecurringInvoiceProfile identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "cadence": "weekly",
- "anchorDay": 1,
- "status": "active",
- "dueDays": 14,
- "startAt": "2026-01-01T00:00:00+00:00",
- "endAt": "2026-12-31T00:00:00+00:00",
- "nextInvoiceAt": "2026-02-01T00:00:00+00:00",
- "lastInvoicedAt": "2026-01-01T00:00:00+00:00",
- "createdAt": "2026-01-01T10:30:00+00:00",
- "updatedAt": "2026-01-01T14:45:00+00:00"
}End a profile permanently. Terminal — it never generates invoices again.
| id required | string RecurringInvoiceProfile identifier |
The new RecurringInvoiceProfile resource
| id | string Unique identifier (ULID) |
| partnerId | string Partner ULID |
| partnerName | string or null Partner name |
| currencyCode | string ISO 4217 currency code |
| cadence | string Enum: "weekly" "monthly" "quarterly" "yearly" |
| anchorDay | integer Default: 1 Anchor day (weekday 1..7 for weekly, day-of-month 1..31 otherwise) |
| status | string Enum: "active" "paused" "ended" |
| dueDays | integer Default: 0 Payment terms in days after each period start |
| startAt | string First billing period start (ISO 8601) |
| endAt | string or null End of the active window (ISO 8601), if any |
| nextInvoiceAt | string Next billing date (ISO 8601) |
| lastInvoicedAt | string or null Last invoiced period start (ISO 8601), if any |
| createdAt | string Timestamp when the profile was created (ISO 8601) |
| updatedAt | string Timestamp when the profile was last updated (ISO 8601) |
{- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "cadence": "weekly",
- "anchorDay": 1,
- "status": "active",
- "dueDays": 14,
- "startAt": "2026-01-01T00:00:00+00:00",
- "endAt": "2026-12-31T00:00:00+00:00",
- "nextInvoiceAt": "2026-02-01T00:00:00+00:00",
- "lastInvoicedAt": "2026-01-01T00:00:00+00:00",
- "createdAt": "2026-01-01T10:30:00+00:00",
- "updatedAt": "2026-01-01T14:45:00+00:00"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "cadence": "weekly",
- "anchorDay": 1,
- "status": "active",
- "dueDays": 14,
- "startAt": "2026-01-01T00:00:00+00:00",
- "endAt": "2026-12-31T00:00:00+00:00",
- "nextInvoiceAt": "2026-02-01T00:00:00+00:00",
- "lastInvoicedAt": "2026-01-01T00:00:00+00:00",
- "createdAt": "2026-01-01T10:30:00+00:00",
- "updatedAt": "2026-01-01T14:45:00+00:00"
}Pause an active profile. It stops generating invoices until resumed.
| id required | string RecurringInvoiceProfile identifier |
The new RecurringInvoiceProfile resource
| id | string Unique identifier (ULID) |
| partnerId | string Partner ULID |
| partnerName | string or null Partner name |
| currencyCode | string ISO 4217 currency code |
| cadence | string Enum: "weekly" "monthly" "quarterly" "yearly" |
| anchorDay | integer Default: 1 Anchor day (weekday 1..7 for weekly, day-of-month 1..31 otherwise) |
| status | string Enum: "active" "paused" "ended" |
| dueDays | integer Default: 0 Payment terms in days after each period start |
| startAt | string First billing period start (ISO 8601) |
| endAt | string or null End of the active window (ISO 8601), if any |
| nextInvoiceAt | string Next billing date (ISO 8601) |
| lastInvoicedAt | string or null Last invoiced period start (ISO 8601), if any |
| createdAt | string Timestamp when the profile was created (ISO 8601) |
| updatedAt | string Timestamp when the profile was last updated (ISO 8601) |
{- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "cadence": "weekly",
- "anchorDay": 1,
- "status": "active",
- "dueDays": 14,
- "startAt": "2026-01-01T00:00:00+00:00",
- "endAt": "2026-12-31T00:00:00+00:00",
- "nextInvoiceAt": "2026-02-01T00:00:00+00:00",
- "lastInvoicedAt": "2026-01-01T00:00:00+00:00",
- "createdAt": "2026-01-01T10:30:00+00:00",
- "updatedAt": "2026-01-01T14:45:00+00:00"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "cadence": "weekly",
- "anchorDay": 1,
- "status": "active",
- "dueDays": 14,
- "startAt": "2026-01-01T00:00:00+00:00",
- "endAt": "2026-12-31T00:00:00+00:00",
- "nextInvoiceAt": "2026-02-01T00:00:00+00:00",
- "lastInvoicedAt": "2026-01-01T00:00:00+00:00",
- "createdAt": "2026-01-01T10:30:00+00:00",
- "updatedAt": "2026-01-01T14:45:00+00:00"
}Resume a paused profile. The next billing date is advanced past any periods that elapsed while paused.
| id required | string RecurringInvoiceProfile identifier |
The new RecurringInvoiceProfile resource
| id | string Unique identifier (ULID) |
| partnerId | string Partner ULID |
| partnerName | string or null Partner name |
| currencyCode | string ISO 4217 currency code |
| cadence | string Enum: "weekly" "monthly" "quarterly" "yearly" |
| anchorDay | integer Default: 1 Anchor day (weekday 1..7 for weekly, day-of-month 1..31 otherwise) |
| status | string Enum: "active" "paused" "ended" |
| dueDays | integer Default: 0 Payment terms in days after each period start |
| startAt | string First billing period start (ISO 8601) |
| endAt | string or null End of the active window (ISO 8601), if any |
| nextInvoiceAt | string Next billing date (ISO 8601) |
| lastInvoicedAt | string or null Last invoiced period start (ISO 8601), if any |
| createdAt | string Timestamp when the profile was created (ISO 8601) |
| updatedAt | string Timestamp when the profile was last updated (ISO 8601) |
{- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "cadence": "weekly",
- "anchorDay": 1,
- "status": "active",
- "dueDays": 14,
- "startAt": "2026-01-01T00:00:00+00:00",
- "endAt": "2026-12-31T00:00:00+00:00",
- "nextInvoiceAt": "2026-02-01T00:00:00+00:00",
- "lastInvoicedAt": "2026-01-01T00:00:00+00:00",
- "createdAt": "2026-01-01T10:30:00+00:00",
- "updatedAt": "2026-01-01T14:45:00+00:00"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01HQWXYZ1234567890ABCDEF",
- "partnerId": "01HQWXYZ1234567890ABCDEF",
- "partnerName": "Acme Corporation",
- "currencyCode": "EUR",
- "cadence": "weekly",
- "anchorDay": 1,
- "status": "active",
- "dueDays": 14,
- "startAt": "2026-01-01T00:00:00+00:00",
- "endAt": "2026-12-31T00:00:00+00:00",
- "nextInvoiceAt": "2026-02-01T00:00:00+00:00",
- "lastInvoicedAt": "2026-01-01T00:00:00+00:00",
- "createdAt": "2026-01-01T10:30:00+00:00",
- "updatedAt": "2026-01-01T14:45:00+00:00"
}Retrieve a paginated list of auto-settlement rules with optional filters.
| partnerId | string Filter by partner ID |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 25 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "scope": "string",
- "basis": "string",
- "currency": "string",
- "periodType": "string",
- "createdAt": "string"
}
]
}Create a rule for automatic settlement creation when charges arrive for a partner+scope combination.
The new AutoSettlementRule resource
| partnerId required | string <ulid> |
| scope required | string <= 100 characters |
| basis required | string Enum: "period" "ad_hoc" "per_job" "on_demand" |
| currency required | string = 3 characters |
| periodType | string or null Enum: "weekly" "bi_weekly" "monthly" |
{- "partnerId": "string",
- "scope": "string",
- "basis": "period",
- "currency": "str",
- "periodType": "weekly"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "scope": "string",
- "basis": "string",
- "currency": "string",
- "periodType": "string",
- "createdAt": "string"
}Retrieve all registered settlement scope definitions.
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "scope": "string",
- "label": "string",
- "description": "string"
}
]
}Retrieve a paginated list of partner settlements with optional filters.
| partnerId | string Filter by partner ID |
| status | string Enum: "open" "locked" "under_review" "approved" "paid" "rejected" Filter by settlement status |
| periodType | string Enum: "weekly" "bi_weekly" "monthly" Filter by period type |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 25 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "settlementNumber": "string",
- "periodType": "string",
- "periodStartDate": "string",
- "periodEndDate": "string",
- "currency": "string",
- "status": "string",
- "totalAmount": 0,
- "totalCredits": 0,
- "totalDebits": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "type": "string",
- "description": "string",
- "amount": 0,
- "currency": "string",
- "subject": "string",
- "chargeType": "string",
- "occurredAt": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}
}
], - "createdAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "rejectedBy": "string",
- "rejectedAt": "string",
- "rejectionReason": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string"
}
]
}Create a new settlement for a partner and period.
The new Settlement resource
| partnerId required | string <ulid> |
| basis required | string Enum: "period" "ad_hoc" "per_job" "on_demand" |
| currency required | string = 3 characters |
object or null | |
| scopes | Array of strings |
{- "partnerId": "string",
- "basis": "period",
- "currency": "str",
- "period": {
- "property1": "string",
- "property2": "string"
}, - "scopes": [
- "string"
]
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "settlementNumber": "string",
- "periodType": "string",
- "periodStartDate": "string",
- "periodEndDate": "string",
- "currency": "string",
- "status": "string",
- "totalAmount": 0,
- "totalCredits": 0,
- "totalDebits": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "type": "string",
- "description": "string",
- "amount": 0,
- "currency": "string",
- "subject": "string",
- "chargeType": "string",
- "occurredAt": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}
}
], - "createdAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "rejectedBy": "string",
- "rejectedAt": "string",
- "rejectionReason": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string"
}Retrieve settlement details including all line items.
| id required | string Settlement identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "settlementNumber": "string",
- "periodType": "string",
- "periodStartDate": "string",
- "periodEndDate": "string",
- "currency": "string",
- "status": "string",
- "totalAmount": 0,
- "totalCredits": 0,
- "totalDebits": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "type": "string",
- "description": "string",
- "amount": 0,
- "currency": "string",
- "subject": "string",
- "chargeType": "string",
- "occurredAt": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}
}
], - "createdAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "rejectedBy": "string",
- "rejectedAt": "string",
- "rejectionReason": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string"
}Approve a pending settlement for payment.
| id required | string Settlement identifier |
The new Settlement resource
| notes | string or null <= 1000 characters |
{- "notes": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "settlementNumber": "string",
- "periodType": "string",
- "periodStartDate": "string",
- "periodEndDate": "string",
- "currency": "string",
- "status": "string",
- "totalAmount": 0,
- "totalCredits": 0,
- "totalDebits": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "type": "string",
- "description": "string",
- "amount": 0,
- "currency": "string",
- "subject": "string",
- "chargeType": "string",
- "occurredAt": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}
}
], - "createdAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "rejectedBy": "string",
- "rejectedAt": "string",
- "rejectionReason": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string"
}Generate a settlement statement document (PDF or HTML) on-demand.
| id required | string Settlement identifier |
The new Settlement resource
| format | string Default: "pdf" Enum: "pdf" "html" Output format for the settlement statement. |
{- "format": "pdf"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "settlementNumber": "string",
- "periodType": "string",
- "periodStartDate": "string",
- "periodEndDate": "string",
- "currency": "string",
- "status": "string",
- "totalAmount": 0,
- "totalCredits": 0,
- "totalDebits": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "type": "string",
- "description": "string",
- "amount": 0,
- "currency": "string",
- "subject": "string",
- "chargeType": "string",
- "occurredAt": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}
}
], - "createdAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "rejectedBy": "string",
- "rejectedAt": "string",
- "rejectionReason": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string"
}Add a credit, debit, or adjustment line item to the settlement.
| id required | string Settlement identifier |
The new Settlement resource
| type required | string Enum: "credit" "debit" "adjustment" |
| description required | string <= 500 characters |
| amount required | number |
| currency required | string = 3 characters |
| subject | string or null |
| chargeType | string or null |
| itemOccurredAt | string or null |
object |
{- "type": "credit",
- "description": "string",
- "amount": 0,
- "currency": "str",
- "subject": "string",
- "chargeType": "string",
- "itemOccurredAt": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "settlementNumber": "string",
- "periodType": "string",
- "periodStartDate": "string",
- "periodEndDate": "string",
- "currency": "string",
- "status": "string",
- "totalAmount": 0,
- "totalCredits": 0,
- "totalDebits": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "type": "string",
- "description": "string",
- "amount": 0,
- "currency": "string",
- "subject": "string",
- "chargeType": "string",
- "occurredAt": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}
}
], - "createdAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "rejectedBy": "string",
- "rejectedAt": "string",
- "rejectionReason": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string"
}Mark an approved settlement as paid.
| id required | string Settlement identifier |
The new Settlement resource
| paymentReference required | string <= 255 characters |
| paymentMethod | string or null Enum: "bank_transfer" "check" "paypal" "other" |
{- "paymentReference": "string",
- "paymentMethod": "bank_transfer"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "settlementNumber": "string",
- "periodType": "string",
- "periodStartDate": "string",
- "periodEndDate": "string",
- "currency": "string",
- "status": "string",
- "totalAmount": 0,
- "totalCredits": 0,
- "totalDebits": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "type": "string",
- "description": "string",
- "amount": 0,
- "currency": "string",
- "subject": "string",
- "chargeType": "string",
- "occurredAt": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}
}
], - "createdAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "rejectedBy": "string",
- "rejectedAt": "string",
- "rejectionReason": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string"
}Reject a pending or approved settlement.
| id required | string Settlement identifier |
The new Settlement resource
| reason required | string <= 500 characters |
{- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "settlementNumber": "string",
- "periodType": "string",
- "periodStartDate": "string",
- "periodEndDate": "string",
- "currency": "string",
- "status": "string",
- "totalAmount": 0,
- "totalCredits": 0,
- "totalDebits": 0,
- "lineItemCount": 0,
- "lineItems": [
- {
- "id": "string",
- "type": "string",
- "description": "string",
- "amount": 0,
- "currency": "string",
- "subject": "string",
- "chargeType": "string",
- "occurredAt": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}
}
], - "createdAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "rejectedBy": "string",
- "rejectedAt": "string",
- "rejectionReason": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string"
}Partner payables statement (AP subledger) — ONE entry per currency the partner transacts in. Balances are never summed across currencies.
Per-currency AP subledger for a partner: bills, settlements, credit notes and outgoing payments as signed ledger lines with a running balance and aging buckets (Current/1-30/31-60/61-90/90+ by due date).
| partnerId required | string PartnerStatement identifier |
| currency | string Restrict to a single ISO currency code |
| from | string <date-time> ISO-8601 lower bound; earlier records roll into the opening balance |
| to | string <date-time> ISO-8601 upper bound for the statement position |
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "currency": "string",
- "partnerId": "string",
- "partnerName": "string",
- "openingBalanceCents": 0,
- "closingBalanceCents": 0,
- "lines": [
- {
- "kind": "string",
- "recordId": "string",
- "ref": "string",
- "number": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "amountCents": 0,
- "currency": "string",
- "status": "string",
- "runningBalanceCents": 0
}
], - "aging": {
- "currentCents": 0,
- "days1To30Cents": 0,
- "days31To60Cents": 0,
- "days61To90Cents": 0,
- "days90PlusCents": 0
}, - "generatedAt": "string"
}
]
}Retrieve a paginated list of received bills with optional filters.
| partnerId | string Filter by partner ID |
| status | string Enum: "received" "under_review" "approved" "scheduled" "paid" "disputed" "cancelled" Filter by bill status |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 25 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "billNumber": "string",
- "currency": "string",
- "totalAmount": 0,
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "subject": "string",
- "selfBilled": false,
- "status": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "reviewedBy": "string",
- "reviewedAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "scheduledPaymentDate": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string",
- "disputedBy": "string",
- "disputedAt": "string",
- "disputeReason": "string",
- "cancellationReason": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
]
}Record a new bill received from a partner.
The new Bill resource
| partnerId required | string <ulid> |
| billNumber required | string <= 255 characters |
| currency required | string = 3 characters |
| totalAmountInCents required | integer > 0 |
| subtotalInCents | integer or null >= 0 Net (tax-exclusive) amount the vendor charged, in minor units. Optional — omit for a gross-only bill. When both this and {@see $totalTaxInCents} are supplied they must reconcile to {@see $totalAmountInCents} (net + tax = gross). |
| totalTaxInCents | integer or null >= 0 Input VAT the vendor charged, in minor units. Optional — captured verbatim from the vendor's bill, never recomputed via the tax engine (compliance). |
| subject | string or null |
| issuedAt required | string |
| dueAt required | string |
{- "partnerId": "string",
- "billNumber": "string",
- "currency": "str",
- "totalAmountInCents": 0,
- "subtotalInCents": 0,
- "totalTaxInCents": 0,
- "subject": "string",
- "issuedAt": "string",
- "dueAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "billNumber": "string",
- "currency": "string",
- "totalAmount": 0,
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "subject": "string",
- "selfBilled": false,
- "status": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "reviewedBy": "string",
- "reviewedAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "scheduledPaymentDate": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string",
- "disputedBy": "string",
- "disputedAt": "string",
- "disputeReason": "string",
- "cancellationReason": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Retrieve bill details.
| id required | string Bill identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "billNumber": "string",
- "currency": "string",
- "totalAmount": 0,
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "subject": "string",
- "selfBilled": false,
- "status": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "reviewedBy": "string",
- "reviewedAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "scheduledPaymentDate": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string",
- "disputedBy": "string",
- "disputedAt": "string",
- "disputeReason": "string",
- "cancellationReason": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Approve a bill for payment.
| id required | string Bill identifier |
The new Bill resource
| notes | string or null <= 500 characters |
{- "notes": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "billNumber": "string",
- "currency": "string",
- "totalAmount": 0,
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "subject": "string",
- "selfBilled": false,
- "status": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "reviewedBy": "string",
- "reviewedAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "scheduledPaymentDate": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string",
- "disputedBy": "string",
- "disputedAt": "string",
- "disputeReason": "string",
- "cancellationReason": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Cancel a bill.
| id required | string Bill identifier |
The new Bill resource
| reason required | string <= 500 characters |
{- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "billNumber": "string",
- "currency": "string",
- "totalAmount": 0,
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "subject": "string",
- "selfBilled": false,
- "status": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "reviewedBy": "string",
- "reviewedAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "scheduledPaymentDate": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string",
- "disputedBy": "string",
- "disputedAt": "string",
- "disputeReason": "string",
- "cancellationReason": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Dispute a bill under review or approved.
| id required | string Bill identifier |
The new Bill resource
| reason required | string <= 500 characters |
{- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "billNumber": "string",
- "currency": "string",
- "totalAmount": 0,
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "subject": "string",
- "selfBilled": false,
- "status": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "reviewedBy": "string",
- "reviewedAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "scheduledPaymentDate": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string",
- "disputedBy": "string",
- "disputedAt": "string",
- "disputeReason": "string",
- "cancellationReason": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Record payment for a scheduled bill.
| id required | string Bill identifier |
The new Bill resource
| paymentReference required | string <= 255 characters |
| paymentMethod | string or null Enum: "bank_transfer" "check" "paypal" "other" |
| paidAmountInCents required | integer > 0 |
| currency required | string = 3 characters |
{- "paymentReference": "string",
- "paymentMethod": "bank_transfer",
- "paidAmountInCents": 0,
- "currency": "str"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "billNumber": "string",
- "currency": "string",
- "totalAmount": 0,
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "subject": "string",
- "selfBilled": false,
- "status": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "reviewedBy": "string",
- "reviewedAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "scheduledPaymentDate": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string",
- "disputedBy": "string",
- "disputedAt": "string",
- "disputeReason": "string",
- "cancellationReason": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Start reviewing a received bill.
| id required | string Bill identifier |
The new Bill resource
| id | string |
| tenantId | string |
| partnerId | string |
| partnerName | string or null Denormalized partner display name |
| billNumber | string |
| currency | string |
| totalAmount | number |
| subtotalCents | integer or null Net (tax-exclusive) amount the vendor charged, in minor units; null on a gross-only bill |
| totalTaxCents | integer or null Input VAT the vendor charged, in minor units; captured verbatim, never recomputed; null on a gross-only bill |
| subject | string or null |
| selfBilled | boolean Default: false True when we raised this bill on the supplier's behalf (self-billed / ERS); its bill number is our issuer number, not the vendor's invoice number |
| status | string |
| issuedAt | string |
| dueAt | string |
| reviewedBy | string or null |
| reviewedAt | string or null |
| approvedBy | string or null |
| approvedAt | string or null |
| approvalNotes | string or null |
| scheduledPaymentDate | string or null |
| paidAt | string or null |
| paymentReference | string or null |
| paymentMethod | string or null |
| disputedBy | string or null |
| disputedAt | string or null |
| disputeReason | string or null |
| cancellationReason | string or null |
| createdAt | string |
| updatedAt | string |
{- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "billNumber": "string",
- "currency": "string",
- "totalAmount": 0,
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "subject": "string",
- "selfBilled": false,
- "status": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "reviewedBy": "string",
- "reviewedAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "scheduledPaymentDate": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string",
- "disputedBy": "string",
- "disputedAt": "string",
- "disputeReason": "string",
- "cancellationReason": "string",
- "createdAt": "string",
- "updatedAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "billNumber": "string",
- "currency": "string",
- "totalAmount": 0,
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "subject": "string",
- "selfBilled": false,
- "status": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "reviewedBy": "string",
- "reviewedAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "scheduledPaymentDate": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string",
- "disputedBy": "string",
- "disputedAt": "string",
- "disputeReason": "string",
- "cancellationReason": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Schedule a payment date for an approved bill.
| id required | string Bill identifier |
The new Bill resource
| scheduledPaymentDate required |
{- "scheduledPaymentDate": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "partnerId": "string",
- "partnerName": "string",
- "billNumber": "string",
- "currency": "string",
- "totalAmount": 0,
- "subtotalCents": 0,
- "totalTaxCents": 0,
- "subject": "string",
- "selfBilled": false,
- "status": "string",
- "issuedAt": "string",
- "dueAt": "string",
- "reviewedBy": "string",
- "reviewedAt": "string",
- "approvedBy": "string",
- "approvedAt": "string",
- "approvalNotes": "string",
- "scheduledPaymentDate": "string",
- "paidAt": "string",
- "paymentReference": "string",
- "paymentMethod": "string",
- "disputedBy": "string",
- "disputedAt": "string",
- "disputeReason": "string",
- "cancellationReason": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Retrieve a paginated list of standalone payments with optional filters.
| direction | string Enum: "inbound" "outbound" Filter by direction (inbound/outbound) |
| status | string Enum: "pending" "processing" "completed" "failed" "refunded" "partially_refunded" "cancelled" Filter by payment status |
| subject | string Filter by subject ResourceUri |
| counterparty | string Filter by counterparty (partner) id |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 25 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "direction": "string",
- "amount": 0,
- "refundedAmount": 0,
- "currency": "string",
- "paymentMethodId": "string",
- "gateway": "string",
- "status": "string",
- "counterpartyId": "string",
- "subject": "string",
- "externalReference": "string",
- "number": "string",
- "notes": "string",
- "recordedBy": "string",
- "failureReason": "string",
- "failureCode": "string",
- "links": [
- {
- "target": "string",
- "type": "string",
- "allocatedAmount": 0
}
], - "paidAt": "string",
- "completedAt": "string",
- "reconciledAt": "string",
- "failedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
]
}Record a new standalone payment (In/Out) with optional links.
The new Payment resource
| direction required | string Enum: "inbound" "outbound" |
| amountInCents required | integer > 0 |
| currency required | string = 3 characters |
| paymentMethodId required | string <ulid> |
| subject | string or null |
| counterpartyId | string or null <ulid> |
| externalReference | string or null |
Array of objects | |
| notes | string or null |
{- "direction": "inbound",
- "amountInCents": 0,
- "currency": "str",
- "paymentMethodId": "string",
- "subject": "string",
- "counterpartyId": "string",
- "externalReference": "string",
- "links": [
- {
- "property1": 0,
- "property2": 0
}
], - "notes": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "direction": "string",
- "amount": 0,
- "refundedAmount": 0,
- "currency": "string",
- "paymentMethodId": "string",
- "gateway": "string",
- "status": "string",
- "counterpartyId": "string",
- "subject": "string",
- "externalReference": "string",
- "number": "string",
- "notes": "string",
- "recordedBy": "string",
- "failureReason": "string",
- "failureCode": "string",
- "links": [
- {
- "target": "string",
- "type": "string",
- "allocatedAmount": 0
}
], - "paidAt": "string",
- "completedAt": "string",
- "reconciledAt": "string",
- "failedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Retrieve payment details, including its links.
| id required | string Payment identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "direction": "string",
- "amount": 0,
- "refundedAmount": 0,
- "currency": "string",
- "paymentMethodId": "string",
- "gateway": "string",
- "status": "string",
- "counterpartyId": "string",
- "subject": "string",
- "externalReference": "string",
- "number": "string",
- "notes": "string",
- "recordedBy": "string",
- "failureReason": "string",
- "failureCode": "string",
- "links": [
- {
- "target": "string",
- "type": "string",
- "allocatedAmount": 0
}
], - "paidAt": "string",
- "completedAt": "string",
- "reconciledAt": "string",
- "failedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Cancel a pending payment.
| id required | string Payment identifier |
The new Payment resource
| reason | string or null |
{- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "direction": "string",
- "amount": 0,
- "refundedAmount": 0,
- "currency": "string",
- "paymentMethodId": "string",
- "gateway": "string",
- "status": "string",
- "counterpartyId": "string",
- "subject": "string",
- "externalReference": "string",
- "number": "string",
- "notes": "string",
- "recordedBy": "string",
- "failureReason": "string",
- "failureCode": "string",
- "links": [
- {
- "target": "string",
- "type": "string",
- "allocatedAmount": 0
}
], - "paidAt": "string",
- "completedAt": "string",
- "reconciledAt": "string",
- "failedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Mark a payment as completed.
| id required | string Payment identifier |
The new Payment resource
| externalReference | string or null |
{- "externalReference": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "direction": "string",
- "amount": 0,
- "refundedAmount": 0,
- "currency": "string",
- "paymentMethodId": "string",
- "gateway": "string",
- "status": "string",
- "counterpartyId": "string",
- "subject": "string",
- "externalReference": "string",
- "number": "string",
- "notes": "string",
- "recordedBy": "string",
- "failureReason": "string",
- "failureCode": "string",
- "links": [
- {
- "target": "string",
- "type": "string",
- "allocatedAmount": 0
}
], - "paidAt": "string",
- "completedAt": "string",
- "reconciledAt": "string",
- "failedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Mark a payment as failed with a reason.
| id required | string Payment identifier |
The new Payment resource
| reason required | string |
| failureCode | string or null |
{- "reason": "string",
- "failureCode": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "direction": "string",
- "amount": 0,
- "refundedAmount": 0,
- "currency": "string",
- "paymentMethodId": "string",
- "gateway": "string",
- "status": "string",
- "counterpartyId": "string",
- "subject": "string",
- "externalReference": "string",
- "number": "string",
- "notes": "string",
- "recordedBy": "string",
- "failureReason": "string",
- "failureCode": "string",
- "links": [
- {
- "target": "string",
- "type": "string",
- "allocatedAmount": 0
}
], - "paidAt": "string",
- "completedAt": "string",
- "reconciledAt": "string",
- "failedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Link a payment to a financial/domain record with an allocated amount.
| id required | string Payment identifier |
The new Payment resource
| target required | string |
| type required | string Enum: "invoice" "bill" "order" "settlement" "credit_note" "other" |
| amountInCents required | integer > 0 |
| currency required | string = 3 characters |
{- "target": "string",
- "type": "invoice",
- "amountInCents": 0,
- "currency": "str"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "direction": "string",
- "amount": 0,
- "refundedAmount": 0,
- "currency": "string",
- "paymentMethodId": "string",
- "gateway": "string",
- "status": "string",
- "counterpartyId": "string",
- "subject": "string",
- "externalReference": "string",
- "number": "string",
- "notes": "string",
- "recordedBy": "string",
- "failureReason": "string",
- "failureCode": "string",
- "links": [
- {
- "target": "string",
- "type": "string",
- "allocatedAmount": 0
}
], - "paidAt": "string",
- "completedAt": "string",
- "reconciledAt": "string",
- "failedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Refund a completed payment (full or partial).
| id required | string Payment identifier |
The new Payment resource
| amountInCents required | integer > 0 |
| currency required | string = 3 characters |
| reason required | string |
{- "amountInCents": 0,
- "currency": "str",
- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "direction": "string",
- "amount": 0,
- "refundedAmount": 0,
- "currency": "string",
- "paymentMethodId": "string",
- "gateway": "string",
- "status": "string",
- "counterpartyId": "string",
- "subject": "string",
- "externalReference": "string",
- "number": "string",
- "notes": "string",
- "recordedBy": "string",
- "failureReason": "string",
- "failureCode": "string",
- "links": [
- {
- "target": "string",
- "type": "string",
- "allocatedAmount": 0
}
], - "paidAt": "string",
- "completedAt": "string",
- "reconciledAt": "string",
- "failedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Retrieve the tenant's payment method display groups.
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "sortOrder": 0,
- "createdAt": "string",
- "updatedAt": "string"
}
]
}Create a payment method group
The new PaymentMethodGroup resource
| name required | string |
| sortOrder | integer >= 0 Default: 0 |
{- "name": "string",
- "sortOrder": 0
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "sortOrder": 0,
- "createdAt": "string",
- "updatedAt": "string"
}Get a payment method group
| id required | string PaymentMethodGroup identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "sortOrder": 0,
- "createdAt": "string",
- "updatedAt": "string"
}Rename a payment method group
| id required | string PaymentMethodGroup identifier |
The new PaymentMethodGroup resource
| name required | string |
| sortOrder | integer or null >= 0 |
{- "name": "string",
- "sortOrder": 0
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "sortOrder": 0,
- "createdAt": "string",
- "updatedAt": "string"
}Retrieve a paginated list of the tenant's configured payment methods.
| gateway | string Filter by gateway |
| status | string Enum: "active" "inactive" Filter by status (active/inactive) |
| groupId | string Filter by group id |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 25 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "gateway": "string",
- "canProcess": true,
- "status": "string",
- "isSystemProvisioned": true,
- "sortOrder": 0,
- "icon": "string",
- "groupId": "string",
- "aliases": [
- {
- "channelRef": "string",
- "channelType": "string",
- "externalCode": "string",
- "externalLabel": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}
]
}Configure a new payment method for the tenant.
The new PaymentMethod resource
| name required | string |
| gateway required | string Enum: "manual" "cash" "bank_transfer" "card" "stripe" "paypal" "wallet" "cash_on_delivery" "other" |
| sortOrder | integer >= 0 Default: 0 |
| icon | string or null |
| groupId | string or null <ulid> |
{- "name": "string",
- "gateway": "manual",
- "sortOrder": 0,
- "icon": "string",
- "groupId": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "gateway": "string",
- "canProcess": true,
- "status": "string",
- "isSystemProvisioned": true,
- "sortOrder": 0,
- "icon": "string",
- "groupId": "string",
- "aliases": [
- {
- "channelRef": "string",
- "channelType": "string",
- "externalCode": "string",
- "externalLabel": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}Retrieve a payment method, including its cross-channel aliases.
| id required | string PaymentMethod identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "gateway": "string",
- "canProcess": true,
- "status": "string",
- "isSystemProvisioned": true,
- "sortOrder": 0,
- "icon": "string",
- "groupId": "string",
- "aliases": [
- {
- "channelRef": "string",
- "channelType": "string",
- "externalCode": "string",
- "externalLabel": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}Activate a payment method
| id required | string PaymentMethod identifier |
The new PaymentMethod resource
PaymentMethod API resource (finance/payment-methods).
{ }{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "gateway": "string",
- "canProcess": true,
- "status": "string",
- "isSystemProvisioned": true,
- "sortOrder": 0,
- "icon": "string",
- "groupId": "string",
- "aliases": [
- {
- "channelRef": "string",
- "channelType": "string",
- "externalCode": "string",
- "externalLabel": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}Attach a cross-channel alias
| id required | string PaymentMethod identifier |
The new PaymentMethod resource
| externalCode required | string |
| channelRef | string or null |
| channelType | string or null |
| externalLabel | string or null |
{- "externalCode": "string",
- "channelRef": "string",
- "channelType": "string",
- "externalLabel": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "gateway": "string",
- "canProcess": true,
- "status": "string",
- "isSystemProvisioned": true,
- "sortOrder": 0,
- "icon": "string",
- "groupId": "string",
- "aliases": [
- {
- "channelRef": "string",
- "channelType": "string",
- "externalCode": "string",
- "externalLabel": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}Deactivate a payment method
| id required | string PaymentMethod identifier |
The new PaymentMethod resource
PaymentMethod API resource (finance/payment-methods).
{ }{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "gateway": "string",
- "canProcess": true,
- "status": "string",
- "isSystemProvisioned": true,
- "sortOrder": 0,
- "icon": "string",
- "groupId": "string",
- "aliases": [
- {
- "channelRef": "string",
- "channelType": "string",
- "externalCode": "string",
- "externalLabel": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}Detach a cross-channel alias
| id required | string PaymentMethod identifier |
The new PaymentMethod resource
| externalCode required | string |
| channelRef | string or null |
{- "externalCode": "string",
- "channelRef": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "gateway": "string",
- "canProcess": true,
- "status": "string",
- "isSystemProvisioned": true,
- "sortOrder": 0,
- "icon": "string",
- "groupId": "string",
- "aliases": [
- {
- "channelRef": "string",
- "channelType": "string",
- "externalCode": "string",
- "externalLabel": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}Move a payment method into a group
| id required | string PaymentMethod identifier |
The new PaymentMethod resource
| groupId | string or null <ulid> |
{- "groupId": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "gateway": "string",
- "canProcess": true,
- "status": "string",
- "isSystemProvisioned": true,
- "sortOrder": 0,
- "icon": "string",
- "groupId": "string",
- "aliases": [
- {
- "channelRef": "string",
- "channelType": "string",
- "externalCode": "string",
- "externalLabel": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}Rename a payment method
| id required | string PaymentMethod identifier |
The new PaymentMethod resource
| name required | string |
{- "name": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "tenantId": "string",
- "name": "string",
- "gateway": "string",
- "canProcess": true,
- "status": "string",
- "isSystemProvisioned": true,
- "sortOrder": 0,
- "icon": "string",
- "groupId": "string",
- "aliases": [
- {
- "channelRef": "string",
- "channelType": "string",
- "externalCode": "string",
- "externalLabel": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}Retrieve a paginated list of tax categories with optional search.
| search | string Search by name or code |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "code": "string",
- "name": "string",
- "description": "string",
- "isActive": true,
- "createdAt": "string",
- "updatedAt": "string"
}
]
}Retrieve a paginated list of tax rules with optional filters.
| zoneCode | string Filter by zone code |
| isActive | boolean Filter by active status |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "name": "string",
- "description": "string",
- "priority": 0,
- "isActive": true,
- "zones": [
- "string"
], - "entityTypes": [
- "string"
], - "defaultRateIds": [
- "string"
], - "categoryOverrides": [
- {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}
], - "createdAt": "string",
- "updatedAt": "string"
}
]
}Retrieve a paginated list of tax rates with optional filters.
| type | string Enum: "percentage" "fixed_amount" Filter by tax type |
| countryCode | string Filter by country code |
| isActive | boolean Filter by active status |
| isDefault | boolean Filter by default status |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "name": "string",
- "code": "string",
- "type": "string",
- "rate": 0,
- "fixedAmountCents": 0,
- "fixedAmountCurrencyCode": "string",
- "countryCode": "string",
- "regionCode": "string",
- "isDefault": true,
- "isActive": true,
- "description": "string",
- "priority": 0,
- "createdAt": "string",
- "updatedAt": "string"
}
]
}Operator-maintained FX rate: 1 unit of baseCurrency = rate units of
quoteCurrency, as of effectiveAt. rate stays a decimal string so
precision is preserved.
Retrieve a paginated list of FX rates with optional currency filters.
| baseCurrency | string Filter by base (source) currency ISO-4217 code |
| quoteCurrency | string Filter by quote (target) currency ISO-4217 code |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "baseCurrency": "string",
- "quoteCurrency": "string",
- "rate": "string",
- "effectiveAt": "string",
- "createdBy": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
]
}Create a new FX rate. 1 unit of baseCurrency = rate units of quoteCurrency.
Exchange rate data
| baseCurrency required | string Source currency ISO-4217 code |
| quoteCurrency required | string Target currency ISO-4217 code |
| rate required | string Units of quoteCurrency per 1 baseCurrency (decimal string) |
| effectiveAt required | string <date-time> When this rate takes effect |
{- "baseCurrency": "USD",
- "quoteCurrency": "NGN",
- "rate": "1650.5",
- "effectiveAt": "2019-08-24T14:15:22Z"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "baseCurrency": "string",
- "quoteCurrency": "string",
- "rate": "string",
- "effectiveAt": "string",
- "createdBy": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Retrieve a single FX rate by its ULID.
| id required | string ExchangeRate identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "baseCurrency": "string",
- "quoteCurrency": "string",
- "rate": "string",
- "effectiveAt": "string",
- "createdBy": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Update the rate and/or effective date of an existing FX rate.
| id required | string ExchangeRate identifier |
The updated ExchangeRate resource
| rate | string or null^(\d+(\.\d+)?)$ |
| effectiveAt | string or null |
{- "rate": "string",
- "effectiveAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "string",
- "baseCurrency": "string",
- "quoteCurrency": "string",
- "rate": "string",
- "effectiveAt": "string",
- "createdBy": "string",
- "createdAt": "string",
- "updatedAt": "string"
}Purchase price variance summary over a period, bucketed by granularity and split by currency. Read from finance_price_variances.
Cost of goods sold aggregated over a period into day/week/month buckets, split by currency, with a per-currency total.
| startDate | string <date> Period start (YYYY-MM-DD). Defaults to 30 days ago. |
| endDate | string <date> Period end (YYYY-MM-DD). Defaults to today. |
| granularity | string Default: "day" Enum: "day" "week" "month" Bucket size. |
| currency | string Restrict to a single ISO 4217 currency. |
| warehouse | string Restrict to a single warehouse (ULID). |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "cogs",
- "startDate": "",
- "endDate": "",
- "granularity": "day",
- "points": [
- {
- "bucket": "",
- "currency": "",
- "amount": 0
}
], - "totals": [
- {
- "currency": "",
- "amount": 0
}
], - "generatedAt": ""
}Open GRNI balances by subject, bucketed by age as of a reporting date and split by currency.
| asOf | string <date> Reporting date (YYYY-MM-DD). Defaults to today. |
| currency | string Restrict to a single ISO 4217 currency. |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "grni-aging",
- "asOf": "",
- "buckets": [
- {
- "bucket": "",
- "currency": "",
- "openAmount": 0,
- "subjectCount": 0
}
], - "subjects": [
- {
- "subject": "",
- "currency": "",
- "openAmount": 0,
- "oldestAt": "",
- "ageDays": 0,
- "bucket": ""
}
], - "generatedAt": ""
}On-hand stock value aggregated by warehouse and currency, with a per-currency grand total.
| warehouse | string Restrict to a single warehouse (ULID). |
| currency | string Example: currency=USD Restrict to a single ISO 4217 currency. |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "inventory-value",
- "warehouses": [
- {
- "warehouseId": "",
- "currency": "",
- "totalValue": 0,
- "qtyOnHand": 0,
- "itemCount": 0
}
], - "totals": [
- {
- "currency": "",
- "totalValue": 0,
- "qtyOnHand": 0,
- "itemCount": 0
}
], - "generatedAt": ""
}Paginated list of GRNI three-way-match exceptions awaiting operator attention, newest update first.
| currency | string Filter by ISO 4217 currency. |
| page | integer Default: 1 Page number. |
| itemsPerPage | integer Default: 25 Items per page. |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "billId": "",
- "subject": "",
- "status": "",
- "billAmount": 0,
- "grniAmount": 0,
- "varianceAmount": 0,
- "currency": "",
- "exceptionReason": "string",
- "createdAt": "",
- "updatedAt": ""
}
]
}Purchase price variance aggregated over a period into day/week/month buckets, split by currency, with a per-currency total.
| startDate | string <date> Period start (YYYY-MM-DD). Defaults to 30 days ago. |
| endDate | string <date> Period end (YYYY-MM-DD). Defaults to today. |
| granularity | string Default: "month" Enum: "day" "week" "month" Bucket size. |
| currency | string Restrict to a single ISO 4217 currency. |
| warehouse | string Restrict to a single warehouse (ULID). |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "price-variance",
- "startDate": "",
- "endDate": "",
- "granularity": "month",
- "points": [
- {
- "bucket": "",
- "currency": "",
- "amount": 0
}
], - "totals": [
- {
- "currency": "",
- "amount": 0
}
], - "generatedAt": ""
}Purchase price variance summary over a period, bucketed by granularity and split by currency. Read from finance_price_variances.
Cost of goods sold aggregated over a period into day/week/month buckets, split by currency, with a per-currency total.
| startDate | string <date> Period start (YYYY-MM-DD). Defaults to 30 days ago. |
| endDate | string <date> Period end (YYYY-MM-DD). Defaults to today. |
| granularity | string Default: "day" Enum: "day" "week" "month" Bucket size. |
| currency | string Restrict to a single ISO 4217 currency. |
| warehouse | string Restrict to a single warehouse (ULID). |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "cogs",
- "startDate": "",
- "endDate": "",
- "granularity": "day",
- "points": [
- {
- "bucket": "",
- "currency": "",
- "amount": 0
}
], - "totals": [
- {
- "currency": "",
- "amount": 0
}
], - "generatedAt": ""
}Open GRNI balances by subject, bucketed by age as of a reporting date and split by currency.
| asOf | string <date> Reporting date (YYYY-MM-DD). Defaults to today. |
| currency | string Restrict to a single ISO 4217 currency. |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "grni-aging",
- "asOf": "",
- "buckets": [
- {
- "bucket": "",
- "currency": "",
- "openAmount": 0,
- "subjectCount": 0
}
], - "subjects": [
- {
- "subject": "",
- "currency": "",
- "openAmount": 0,
- "oldestAt": "",
- "ageDays": 0,
- "bucket": ""
}
], - "generatedAt": ""
}On-hand stock value aggregated by warehouse and currency, with a per-currency grand total.
| warehouse | string Restrict to a single warehouse (ULID). |
| currency | string Example: currency=USD Restrict to a single ISO 4217 currency. |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "inventory-value",
- "warehouses": [
- {
- "warehouseId": "",
- "currency": "",
- "totalValue": 0,
- "qtyOnHand": 0,
- "itemCount": 0
}
], - "totals": [
- {
- "currency": "",
- "totalValue": 0,
- "qtyOnHand": 0,
- "itemCount": 0
}
], - "generatedAt": ""
}Paginated list of GRNI three-way-match exceptions awaiting operator attention, newest update first.
| currency | string Filter by ISO 4217 currency. |
| page | integer Default: 1 Page number. |
| itemsPerPage | integer Default: 25 Items per page. |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "billId": "",
- "subject": "",
- "status": "",
- "billAmount": 0,
- "grniAmount": 0,
- "varianceAmount": 0,
- "currency": "",
- "exceptionReason": "string",
- "createdAt": "",
- "updatedAt": ""
}
]
}Purchase price variance aggregated over a period into day/week/month buckets, split by currency, with a per-currency total.
| startDate | string <date> Period start (YYYY-MM-DD). Defaults to 30 days ago. |
| endDate | string <date> Period end (YYYY-MM-DD). Defaults to today. |
| granularity | string Default: "month" Enum: "day" "week" "month" Bucket size. |
| currency | string Restrict to a single ISO 4217 currency. |
| warehouse | string Restrict to a single warehouse (ULID). |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "price-variance",
- "startDate": "",
- "endDate": "",
- "granularity": "month",
- "points": [
- {
- "bucket": "",
- "currency": "",
- "amount": 0
}
], - "totals": [
- {
- "currency": "",
- "amount": 0
}
], - "generatedAt": ""
}