Refund a recorded payment. If an approval policy matches, responds 202 with { pending_approval: true, approval_instance_id, approval_status_url, message }; poll GET /approvals/:id.
Refund a recorded payment. If an approval policy matches, responds 202 with { pending_approval: true, approval_instance_id, approval_status_url, message }; poll GET /approvals/:id.
https://app.softsolz.uk/api/v1/services/invoicing/refundsRecent Requests
Kept only in this browserHeaders
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
invoice_idintegerrequiredInvoice the payment was applied to.
customer_payment_idintegerrequiredPayment to refund (from invoice detail payments[].id).
amountnumber | stringrequiredRefund amount in major units (> 0, max 2 decimal places, <= refundable balance; numeric strings accepted).
currencystringDefaults to the payment/invoice currency.
methodstringRefund method (free-text; default "manual").
reasonstring | nullOptional reason.
Response
Response Body
idintegerRefund id.invoice_idintegerInvoice id.customer_payment_idintegerRefunded payment id.amountstringRefund amount, numeric string.statusstringRefund status.Request
curl --request POST \ --url https://app.softsolz.uk/api/v1/services/invoicing/refunds \ --header 'Authorization: Bearer sk_live_your_key' \ --header 'Content-Type: application/json' \ --data '{ "invoice_id": 1001, "customer_payment_id": 7001, "amount": "20.00", "currency": "GBP", "method": "manual", "reason": "Customer overpaid"}'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 · 201
{ "data": { "id": 4001, "invoice_id": 1001, "customer_payment_id": 7001, "amount": "20.00", "status": "issued" }}