Record a payment against an invoice
Marks an invoice as paid (fully or partially) and posts the payment journal entry when bookkeeping is on. Undo with POST /invoices/{id}/unpay. A foreign-currency invoice is released at its current CHF book value; the difference to the CHF moved (from baseAmount, exchangeRate or the ESTV/BAZG rate of the payment date) is booked as realized Kursdifferenz and reported in fx. Currency errors (400): FX_RATE_UNAVAILABLE, FX_RATE_SOURCE_UNAVAILABLE (ESTV/BAZG unreachable, retry), INVALID_EXCHANGE_RATE, EXCHANGE_RATE_IMPLAUSIBLE, AMOUNT_OUT_OF_RANGE, PAYMENT_ACCOUNT_CURRENCY_MISMATCH, OPEN_ITEM_RATE_MISSING (the invoice has no stored rate, so its open item has no CHF book value: set the invoice rate first), PAYMENT_EXCEEDS_OPEN (more than is still open in the invoice currency; the invoice row is locked for the payment, so a concurrent payment is seen). zeroSaldoSkipped reports a zero-saldo realization that was not booked.
Request
- Base URL: https://api.lumabill.ch/v1
- URL: https://api.lumabill.ch/v1/payments
- Auth: HTTP bearer
Request body
Example request
{
"invoice_id": "a1b2c3d4-1234-5678-abcd-ef0123456789",
"paidDate": "2026-09-24",
"amount": 1296
}Response
Payment recorded
Example response
{
"fx": {
"currency": "CHF"
}
}Changes
No recorded changes to this operation across all 1 revision of this API.