Mark an invoice as paid with a manual payment record.
Mark an invoice as paid with a manual payment record.
POST
https://app.softsolz.uk/api/v1/services/invoicing/invoices/{id}/mark-paidRecent Requests
Kept only in this browserTimeStatusTook
Send a request with Try it to see it here.
Path Params
idstringrequiredHeaders
AuthorizationstringrequiredBearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.
Idempotency-KeystringOptional idempotency key for safe retries.
Body Params
amountnumber | stringrequiredPayment amount in major currency units (> 0, max 2 decimal places; a numeric string like "120.00" avoids float precision). Cannot exceed the outstanding balance.
methodstringPayment method (default "manual").
referencestring | nullExternal payment reference (e.g. cheque or transfer id); stored on the payment record.
received_atstring | nullWhen payment was received. Defaults to now.
Response
Response Body
paymentIdintegerNew payment id.invoiceIdintegerInvoice id.finalStatusstringInvoice status after the payment.invoiceobjectThe updated invoice (invoice detail shape).Request
curl --request POST \ --url https://app.softsolz.uk/api/v1/services/invoicing/invoices/{id}/mark-paid \ --header 'Authorization: Bearer sk_live_your_key' \ --header 'Content-Type: application/json' \ --data '{ "amount": "120.00", "method": "manual", "reference": "CHQ-00123", "received_at": "2026-01-20T12:00:00.000Z"}'Credentials
Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser tab until you close it. Use an sk_test_ key to stay in your sandbox.
Response · 200
{ "data": { "paymentId": 7001, "invoiceId": 1001, "finalStatus": "paid", "invoice": { "id": 1001, "status": "paid" } }}