---
title: "Void a payment"
method: POST
path: "/public/v1/payments/{id}/void"
tags: ["Payment"]
---

# Void a payment

`POST /public/v1/payments/{id}/void`

Void a payment by its ID. A voided payment is retained rather than deleted — its record still resolves and it keeps appearing in the list and show endpoints with `status` VOIDED. The response returns the payment in its post-void state.

This one endpoint voids both kinds of payment; it dispatches on `payment_type`:
• INVOICE — reverses the money applied to the [invoice](#model-compactinvoice), recomputes the invoice's payment status, and cancels both the credits this payment generated from an overpayment and the credits applied toward it. Requires the `invoices_permissions_receive_payment` permission.
• PURCHASE — reverses the money applied to the [purchase](#model-paymentpurchase) and recomputes the purchase's payment status. Requires the `purchases_permissions_make_payments` permission.

Voiding an already-voided payment returns 400. If the company is connected to QuickBooks Online, the void is queued to sync there (a 200 is not confirmation it reached QuickBooks Online — poll QuickBooks Online to observe the result); an invoice payment is also pushed to LeafLink when that integration is configured for the customer. The change is eventually consistent — it can take up to 1 second to reflect in the list and show endpoints.

## Path parameters

- `id` string, required

## Response `200`

The voided payment

## Other responses

- `400` — Invalid parameters
- `401` — Missing or invalid API token
- `403` — The API token lacks the required permission
- `404` — Not Found

---

[API](https://skmtc.dev/distru/apis/distru-api.md) · [All operations](https://skmtc.dev/distru/apis/distru-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/distru/distru-api/revisions/eb775b7b6ee0/schema)
