Invoices

Revert an invoice payment

Void a payment with a required reason; the payment stays flagged is_reversed: true and is never deleted.

  • Irreversible: to restate the collection, register a new payment.
  • 422 payment_already_reversed, payment_reversal_reason_invalid or reversal_reason_reserved (issued_in_error).
  • The invoice returns to overdue or sent.
post/companies/{company}/invoices/{invoice}/payments/{payment}/reversal

Request

  • Base URL: https://api.factuarea.com/v1
  • URL: https://api.factuarea.com/v1/companies/{company}/invoices/{invoice}/payments/{payment}/reversal
  • Auth: one of:
    • HTTP bearer
    • API key in header X-API-Key

Path parameters

companystring uuid required

Public identifier (UUID v7) of the company. Get it from GET /v1/me (data.scope[].id).

invoicestring uuid required

Public identifier (UUID v7) of the invoice.

paymentstring uuid required

Public identifier (UUID v7) of the invoice payment.

Headers

Idempotency-Keystring required
Example:01928f10-7c0e-7c4a-9b7d-2f8a6e3c1d4b

Client-generated opaque key (up to 255 characters; UUID v7 recommended) that makes retries safe: the first response is cached and replayed for repeats without re-executing the mutation. Reusing a key with a different body returns 422 idempotency_key_reused; the values of secret fields (password, secret…) count as part of the body, so retrying with a corrected secret under the same key is a different request, never the replay of the earlier answer. See the Idempotency guide. Required on this operation: repeating it delivers an effect that cannot be taken back (an email sent, a file generated, a third-party call, a charge), so a request without this header is rejected with 422 idempotency_key_required before any business logic runs.

Factuarea-Versionstring date
Example:2026-06-01

Pin the API version (YYYY-MM-DD, Stripe-style date versioning) for this request; omit to use the key's pinned version, or the latest if none. Unsupported version → 400 unsupported_api_version; malformed → 400 parameter_invalid_format. The effective version is echoed in the Factuarea-Version response header. See the Versioning guide.

Request body

reasonstring required

Why the payment is being reverted. One of the closed catalog: direct_debit_return (returned SEPA direct debit), card_dispute (card chargeback or reversal), misapplied_payment (booked against the wrong invoice), bounced_effect (dishonoured bill) or recording_error. issued_in_error also belongs to the catalog but is reserved to annulling the invoice (POST /v1/companies/{company}/invoices/{invoice}/annul with revert_collections=true): sent here it returns 422 reversal_reason_reserved. Any other value returns 422 payment_reversal_reason_invalid.

notestring nullable

Optional free-text remark kept with the reversal trail, up to 500 characters. A longer note returns 422 payment_reversal_invalid.

Response

Example response

{
  "data": {
    "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a90",
    "invoice_id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a42",
    "amount": "605.00",
    "payment_date": "2026-03-20",
    "payment_method": "bank_transfer",
    "payment_method_text": "Transferencia bancaria",
    "reference": "TRF-2026-0042",
    "notes": "Pago parcial primer plazo."
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.