---
title: "Remove a payment from an invoice"
method: DELETE
path: "/v2/invoices/{invoiceId}/payments/{paymentId}"
---

# Remove a payment from an invoice

`DELETE /v2/invoices/{invoiceId}/payments/{paymentId}`

## Request

- Base URL: `https://api.slash.com`
- URL: `https://api.slash.com/v2/invoices/{invoiceId}/payments/{paymentId}`
- Auth: API key in header `X-API-Key`

Remove a payment from an invoice without touching the money. The invoice's `status` and `amounts` follow the payments that remain. See [Remove a payment](/docs/v2/invoices/collecting-payment#remove-a-payment).

## Response `200`

The invoice without the payment.

- Invoice: A request for payment you send a customer. Slash emails it, hosts a payment page at `payUrl`, matches incoming deposits to it and keeps its `status` and `amounts` up to date. All amounts are in USD.
  - `id` string, required: Invoice id with the `inv_` prefix.
  - `number` string, required: Unique per legal entity.
  - `status` 'scheduled' | 'unpaid' | 'partially_paid' | 'paid' | 'void', required: See [Invoice lifecycle](/docs/v2/invoices/overview#invoice-lifecycle).
  - `overdue` boolean, required: Whether the invoice is `unpaid` or `partially_paid` and its due date has passed in its `timezone`.
  - `customerId` string: Customer id with the `le_cus_` prefix.
  - `accountId` string, required: The account payments settle into, with the `sa_group_` prefix.
  - `virtualAccountId` string: The virtual account payments settle into, with the `subaccount_` prefix. Absent when they settle into the account's primary virtual account.
  - `seriesId` string: The recurring series that issued the invoice, with the `inv_series_` prefix.
  - `issueDate` string, date, required
  - `dueDate` string, date, required
  - `timezone` string, required: The IANA timezone the invoice's dates are in.
  - `scheduledSendDate` string, date: When a `scheduled` invoice will be emailed, at 9:00 in its `timezone`.
  - `lineItems` InvoiceLineItem[], required
    - `name` string, required
    - `quantity` number, required
    - `unitAmount` Money, required: A signed monetary amount expressed in minor units.
      - `amount` integer, required: Amount in the currency's minor units.
      - `currency` string, required: Uppercase ISO 4217 currency code.
    - `total` Money, required: A signed monetary amount expressed in minor units.
      - `amount` integer, required: Amount in the currency's minor units.
      - `currency` string, required: Uppercase ISO 4217 currency code.
    - `catalogItemId` string: The catalog item the line was added from, with the `cat_item_` prefix. The line keeps the name and price it was written with.
  - `discount` union: Taken off the line items' subtotal before tax.
    - object
      - `type` 'percentage', required
      - `percent` number, required: Percent of the subtotal. `10` means 10%.
    - object
      - `type` 'fixed', required
      - `amount` Money, required: A signed monetary amount expressed in minor units.
        - `amount` integer, required: Amount in the currency's minor units.
        - `currency` string, required: Uppercase ISO 4217 currency code.
  - `taxRate` number: Tax as a percent of the subtotal after the discount. `8.5` means 8.5%.
  - `amounts` object, required
    - `subtotal` Money, required: A signed monetary amount expressed in minor units.
      - `amount` integer, required: Amount in the currency's minor units.
      - `currency` string, required: Uppercase ISO 4217 currency code.
    - `discount` Money, required: A signed monetary amount expressed in minor units.
      - `amount` integer, required: Amount in the currency's minor units.
      - `currency` string, required: Uppercase ISO 4217 currency code.
    - `tax` Money, required: A signed monetary amount expressed in minor units.
      - `amount` integer, required: Amount in the currency's minor units.
      - `currency` string, required: Uppercase ISO 4217 currency code.
    - `total` Money, required: A signed monetary amount expressed in minor units.
      - `amount` integer, required: Amount in the currency's minor units.
      - `currency` string, required: Uppercase ISO 4217 currency code.
    - `paid` Money, required: A signed monetary amount expressed in minor units.
      - `amount` integer, required: Amount in the currency's minor units.
      - `currency` string, required: Uppercase ISO 4217 currency code.
    - `outstanding` Money, required: A signed monetary amount expressed in minor units.
      - `amount` integer, required: Amount in the currency's minor units.
      - `currency` string, required: Uppercase ISO 4217 currency code.
  - `memo` string: A note printed on the invoice.
  - `ccEmails` string[], required: Also copied on the invoice and its reminders.
  - `billedTo` object, required: The customer's details as they were when the invoice was created.
    - `name` string, required
    - `email` string, required
    - `address` Address
      - `line1` string, required
      - `line2` string
      - `city` string, required
      - `state` string
      - `postalCode` string
      - `countryCode` string: ISO 3166-1 alpha-2 country code.
  - `paymentMethods` InvoicePaymentMethod[], required
    - `type` 'bank_transfer' | 'ach_debit' | 'card' | 'crypto', required: `bank_transfer` (ACH, wire or realtime payment to the account's details) is always offered.
    - `passFeeToPayer` boolean, required: Whether the payer covers the method's processing fee.
  - `payments` InvoicePayment[], required: Oldest first.
    - `id` string, required: Payment id with the `inv_tr_link_` prefix. Remove it with `DELETE /v2/invoices/{invoiceId}/payments/{paymentId}`.
    - `amount` Money, required: A signed monetary amount expressed in minor units.
      - `amount` integer, required: Amount in the currency's minor units.
      - `currency` string, required: Uppercase ISO 4217 currency code.
    - `paidOn` string, date, required: The day the payment arrived, in the invoice's `timezone`.
    - `method` 'ach' | 'wire' | 'international_wire' | 'realtime' | 'ach_debit' | 'card' | 'crypto' | 'other', required: How the money arrived.
    - `transactionId` string: The deposit, with the `agg_tx_` prefix, readable at `GET /v2/transactions/{transactionId}`. Absent for payments received outside Slash.
    - `matchedBy` 'automatic' | 'manual', required: `automatic` when Slash matched the deposit or the payer paid on the payment page; `manual` when it was recorded by hand.
    - `createdAt` string, date-time, required: When the payment was recorded.
  - `payUrl` string, required: The hosted page where the customer views and pays the invoice.
  - `documentId` string, required: The invoice's PDF, with the `st_` prefix. Download it with `GET /v2/documents/{documentId}`. Each edit issues a new PDF.
  - `nextReminderAt` string, date-time: When the next automatic reminder is due to go out.
  - `paidAt` string, date-time: When the invoice became `paid`.
  - `voidedAt` string, date-time: When the invoice was voided.
  - `createdAt` string, date-time, required

## Other responses

- `400`: - `invalid_request (request shape)` — The body, query, or headers failed validation, or a required header is missing. `details` has one entry per failing location, keyed by JSON pointer or header name.
- `401`: - `unauthorized` — API key authentication is missing or invalid.
- `403`: - `feature_not_enabled` — The feature this request uses is not enabled for the legal entity. Contact Slash support to enable it. - `forbidden` — The credential is not permitted to perform this action on the resource. When the resource is a field of the request, `details` names that `field` and the `id` it received. - `forbidden (legal entity)` — The credential is not permitted to act for the selected legal entity. - `not_available` — Public API v2 is not yet available. Use [Public API v1](https://docs.slash.com/introduction) in the meantime. - `user_api_key_required` — The API key is scoped to a legal entity rather than a user. Every v2 request needs a user API key, created under Settings → API keys in the Slash dashboard, together with the `x-legal-entity` header.
- `404`: - `not_found` — No resource matches the identifier. When the identifier is a field of the request, `details` names that `field` and the `id` it received.
- `409`: - `invoice_void` — A void invoice is final. Issue a new invoice to bill the customer again. See [Invoice lifecycle](/docs/v2/invoices/overview#invoice-lifecycle).
- `429`: The request exceeded the applicable rate limit. The response body is plain text, not the error object; clients must not depend on its wording.
- `500`: - `internal` — Slash could not complete the request. Quote `referenceId` when contacting Slash support.

## Changes

- **2026-10-16** `8b5d371ffeea`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/slashfi/apis/slash-public-api/changes/v2/invoices/:invoiceId/payments/:paymentId/delete.md)

---

[API](https://skmtc.dev/slashfi/apis/slash-public-api.md) - [All operations](https://skmtc.dev/slashfi/apis/slash-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/slashfi/apis/slash-public-api/revisions/eaed2d63c9e2?raw)
