Skip to Content

Refund invoice

POST /api/v3/projects/{projectId}/invoices/{invoiceId}/refund

Initiates a refund for a paid invoice. The actual refund completes asynchronously and result is delivered via webhook.

The sandbox enforces the “paid” requirement: a refund of an unpaid, cancelled or not-yet-billed invoice is rejected with 422 INVOICE_NOT_PAID, and its payment_status is left unchanged.

v4 signature payload: {invoice_id}{client_ip}

Request parameters

FieldTypeRequiredDescription
projectIdinteger (int32)yes
invoiceIdstring (uuid)yes

Request body

FieldTypeRequiredDescription
client_ipstring—
additional_parametersobject—Arbitrary invoice parameters stored with the invoice, the JSON counterpart of the XML <AdditionalParameters>/<Parameter name= value=/> block. Parameter names are case-insensitive and must be unique. On cancel/refund/authorize the given values are merged into the ones already stored: names that match are overwritten, the rest are kept.
Request example
{}

Response codes

CodeDescription
202Refund accepted for processing
400Validation or business request error
401Authentication failed (missing/invalid signature or timestamp)
403Project access denied or IP not whitelisted
404Invoice not found
422Business validation error
500Unexpected platform error
503Service temporarily unavailable