---
title: "Perform invoice action"
method: POST
path: "/v3/customers/{id}/invoices/{invoiceId}/actions"
tags: ["Customers"]
---

# Perform invoice action

`POST /v3/customers/{id}/invoices/{invoiceId}/actions`

## Path parameters

- `id` string, required
- `invoiceId` string, required

## Request body

- union
  - SendInvoiceDto
    - `action` 'SEND' | 'MARK_INVOICE_TO_SENT_OFF_TABS' | 'MARK_INVOICE_AS_PENDING' | 'MARK_INVOICE_AS_SCHEDULED' | 'MARK_INVOICE_AS_VOID' | 'SEND_REMINDER_EMAIL', required — Action to perform
    - `sendToErp` boolean, required — Send the invoice to the ERP
    - `sendToCustomer` boolean, required — Send the invoice to the customer
    - `overrideInvoiceDate` boolean — Override and update the invoice issue date to today. The due date will also be recalculated to preserve the original net payment terms. For example, if an invoice has Net 30 terms, the due date will be set to 30 days after today.
  - MarkInvoiceAsPendingDto
    - `action` 'SEND' | 'MARK_INVOICE_TO_SENT_OFF_TABS' | 'MARK_INVOICE_AS_PENDING' | 'MARK_INVOICE_AS_SCHEDULED' | 'MARK_INVOICE_AS_VOID' | 'SEND_REMINDER_EMAIL', required — Action to perform
    - `markInvoiceAsPending` boolean, required — Mark the invoice as pending
  - MarkInvoiceToSentOffTabsDto
    - `action` 'SEND' | 'MARK_INVOICE_TO_SENT_OFF_TABS' | 'MARK_INVOICE_AS_PENDING' | 'MARK_INVOICE_AS_SCHEDULED' | 'MARK_INVOICE_AS_VOID' | 'SEND_REMINDER_EMAIL', required — Action to perform
    - `markInvoiceToSentOffTabs` boolean, required — Mark the invoice as sent off Tabs
  - MarkInvoiceAsScheduledDto
    - `action` 'SEND' | 'MARK_INVOICE_TO_SENT_OFF_TABS' | 'MARK_INVOICE_AS_PENDING' | 'MARK_INVOICE_AS_SCHEDULED' | 'MARK_INVOICE_AS_VOID' | 'SEND_REMINDER_EMAIL', required — Action to perform
    - `markInvoiceAsScheduled` boolean, required — Mark the invoice as scheduled
  - MarkInvoiceAsVoidDto
    - `action` 'SEND' | 'MARK_INVOICE_TO_SENT_OFF_TABS' | 'MARK_INVOICE_AS_PENDING' | 'MARK_INVOICE_AS_SCHEDULED' | 'MARK_INVOICE_AS_VOID' | 'SEND_REMINDER_EMAIL', required — Action to perform
    - `markInvoiceAsVoid` boolean, required — Mark the invoice as void
  - SendReminderEmailDto
    - `action` 'SEND' | 'MARK_INVOICE_TO_SENT_OFF_TABS' | 'MARK_INVOICE_AS_PENDING' | 'MARK_INVOICE_AS_SCHEDULED' | 'MARK_INVOICE_AS_VOID' | 'SEND_REMINDER_EMAIL', required — Action to perform
    - `sendReminderEmail` boolean, required — Send the reminder email

## Response `200`

Invoice marked as pending or sent off Tabs successfully

- object
  - `payload` object, required — Response payload, will be empty when success is false
    - `id` string, required — Unique identifier for the invoice
    - `issueDate` string, required — Date the invoice was issued
    - `dueDate` string, required — Date the invoice is due
    - `sentDate` string — Date the invoice was sent to the customer
    - `createdAt` string, required — Date the invoice was created
    - `status` 'DRAFT' | 'APPROVED' | 'SENT' | 'PAID' | 'PARTIALLY_PAID' | 'VOID' | 'SENT_OFF_TABS' | 'PENDING' | 'DONE', required — Current status of the invoice
    - `invoiceNumber` string — Invoice number
    - `memo` string — Invoice memo
    - `customFields` string[] — Invoice custom fields
    - `source` 'TABS' | 'QBO' | 'NETSUITE' | 'AVALARA' | 'SALESFORCE' | 'HUBSPOT' | 'STRIPE' | 'RILLET' | 'SAGE_INTACCT' | 'CAMPFIRE', required — Source of the invoice
    - `customerId` string, required — ID of the customer this invoice belongs to
    - `originalDueDate` string, required — Original due date before any modifications
    - `originalIssueDate` string, required — Original issue date before any modifications
    - `total` number, required — Total amount in currency associated with the customer
    - `balanceRemaining` number, required — Remaining balance in currency associated with the customer
    - `externalIds` ExternalIdV3Dto[], required — List of external identifiers
      - `type` 'QUICKBOOKS' | 'NETSUITE' | 'RILLET' | 'SAGE_INTACCT' | 'SALESFORCE' | 'HUBSPOT' | 'AVALARA' | 'ANROK' | 'STRIPE', required
      - `id` string, required — External identifier value
    - `lineItems` InvoiceItemV3Dto[], required — Line items on this invoice
      - `id` string, required — Unique identifier for the invoice item
      - `name` string, required — Name of the invoice item
      - `description` string, required — Description of the invoice item
      - `quantity` number, required — Quantity of items
      - `unitPrice` number, required — Unit price in currency associated with the customer
      - `subtotal` number, required — Subtotal before discounts in currency associated with the customer
      - `discountTotal` number, required — Total discount amount for this line item in currency associated with the customer
      - `total` number, required — Total in currency associated with the customer
      - `salesTaxRate` string, nullable, required — Sales tax rate percentage for this line item
      - `item` ItemV3Dto, required
        - `id` string, required — Unique identifier for the item
        - `name` string, required — Name of the item
        - `displayName` string, nullable — Display name of the item, as shown in the Tabs app. Null when not set.
        - `externalIds` ExternalIdV3Dto[], required — List of external identifiers associated with the item
          - `type` 'QUICKBOOKS' | 'NETSUITE' | 'RILLET' | 'SAGE_INTACCT' | 'SALESFORCE' | 'HUBSPOT' | 'AVALARA' | 'ANROK' | 'STRIPE', required
          - `id` string, required — External identifier value
    - `paymentLink` string — Payment link for the invoice (Optional)
    - `poNumber` string, required — PO number
    - `paidOn` string, nullable, required — Date the invoice was fully paid
    - `uncollectibleOn` string, nullable, required — Date the invoice was marked as uncollectible
    - `lastUpdatedAt` string, required — Timestamp of last update
  - `success` boolean, required — Boolean with true=success, false=failure
  - `message` string, required — Plain-text description of the result
  - `error` IntegratorsApiError, required
    - `code` number, required — API response code
    - `message` string, required — API response message
    - `details` object — Additional details about the error

## Other responses

- `201` — Invoice send job created successfully
- `400` — Invalid combination: at least one of sendToErp or sendToCustomer must be true, or sendToErp was requested but the merchant has no ERP integration connected
- `500` — Internal server error

---

[API](https://skmtc.net/tabsplatform/apis/tabs-external-api.md) · [All operations](https://skmtc.net/tabsplatform/apis/tabs-external-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tabsplatform/tabs-external-api/revisions/7e8885517814/schema)
