> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.tabs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.tabs.com/_mcp/server.

# Perform invoice action

POST https://integrators.prod.api.tabsplatform.com/v3/customers/{id}/invoices/{invoiceId}/actions
Content-Type: application/json

Reference: https://docs.tabs.com/api-reference/customers/invoiceActions

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: Tabs External API
  version: 1.0.0
paths:
  /v3/customers/{id}/invoices/{invoiceId}/actions:
    post:
      operationId: integrators-api-customers-controller-invoice-actions
      summary: Perform invoice action
      tags:
        - customers
      parameters:
        - name: id
          in: path
          description: Customer Id
          required: true
          schema:
            type: string
        - name: invoiceId
          in: path
          description: Invoice Id
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Invoice marked as pending or sent off Tabs successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Customers_IntegratorsApiCustomersController_invoiceActions_Response_200
        '400':
          description: >-
            Invalid combination: at least one of sendToErp or sendToCustomer
            must be true, or sendToErp was requested but the merchant has no ERP
            integration connected
          content:
            application/json:
              schema:
                description: Any type
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                description: Any type
      requestBody:
        description: >-
          Invoice actions for sending an invoice. Validation rules:

          1. At least one of sendToErp or sendToCustomer must be true

          2. sendToErp can be true while sendToCustomer is false (push to ERP
          only)

          3. sendToCustomer can be true while sendToErp is false (email customer
          only; useful when no ERP is connected)

          4. If sendToErp is true but the merchant has no ERP integration
          connected, the request is rejected

          5. the field overrideInvoiceDate is optional
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/Customers_IntegratorsApiCustomersController_invoiceActions_Request
servers:
  - url: https://integrators.prod.api.tabsplatform.com
    description: https://integrators.prod.api.tabsplatform.com
components:
  schemas:
    SendInvoiceDtoAction:
      type: string
      enum:
        - SEND
        - MARK_INVOICE_TO_SENT_OFF_TABS
        - MARK_INVOICE_AS_PENDING
        - MARK_INVOICE_AS_SCHEDULED
        - MARK_INVOICE_AS_VOID
        - SEND_REMINDER_EMAIL
      description: Action to perform
      title: SendInvoiceDtoAction
    SendInvoiceDto:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/SendInvoiceDtoAction'
          description: Action to perform
        sendToErp:
          type: boolean
          description: Send the invoice to the ERP
        sendToCustomer:
          type: boolean
          description: Send the invoice to the customer
        overrideInvoiceDate:
          type: boolean
          description: >-
            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.
      required:
        - action
        - sendToErp
        - sendToCustomer
      title: SendInvoiceDto
    MarkInvoiceAsPendingDtoAction:
      type: string
      enum:
        - SEND
        - MARK_INVOICE_TO_SENT_OFF_TABS
        - MARK_INVOICE_AS_PENDING
        - MARK_INVOICE_AS_SCHEDULED
        - MARK_INVOICE_AS_VOID
        - SEND_REMINDER_EMAIL
      description: Action to perform
      title: MarkInvoiceAsPendingDtoAction
    MarkInvoiceAsPendingDto:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/MarkInvoiceAsPendingDtoAction'
          description: Action to perform
        markInvoiceAsPending:
          type: boolean
          description: Mark the invoice as pending
      required:
        - action
        - markInvoiceAsPending
      title: MarkInvoiceAsPendingDto
    MarkInvoiceToSentOffTabsDtoAction:
      type: string
      enum:
        - SEND
        - MARK_INVOICE_TO_SENT_OFF_TABS
        - MARK_INVOICE_AS_PENDING
        - MARK_INVOICE_AS_SCHEDULED
        - MARK_INVOICE_AS_VOID
        - SEND_REMINDER_EMAIL
      description: Action to perform
      title: MarkInvoiceToSentOffTabsDtoAction
    MarkInvoiceToSentOffTabsDto:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/MarkInvoiceToSentOffTabsDtoAction'
          description: Action to perform
        markInvoiceToSentOffTabs:
          type: boolean
          description: Mark the invoice as sent off Tabs
      required:
        - action
        - markInvoiceToSentOffTabs
      title: MarkInvoiceToSentOffTabsDto
    MarkInvoiceAsScheduledDtoAction:
      type: string
      enum:
        - SEND
        - MARK_INVOICE_TO_SENT_OFF_TABS
        - MARK_INVOICE_AS_PENDING
        - MARK_INVOICE_AS_SCHEDULED
        - MARK_INVOICE_AS_VOID
        - SEND_REMINDER_EMAIL
      description: Action to perform
      title: MarkInvoiceAsScheduledDtoAction
    MarkInvoiceAsScheduledDto:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/MarkInvoiceAsScheduledDtoAction'
          description: Action to perform
        markInvoiceAsScheduled:
          type: boolean
          description: Mark the invoice as scheduled
      required:
        - action
        - markInvoiceAsScheduled
      title: MarkInvoiceAsScheduledDto
    MarkInvoiceAsVoidDtoAction:
      type: string
      enum:
        - SEND
        - MARK_INVOICE_TO_SENT_OFF_TABS
        - MARK_INVOICE_AS_PENDING
        - MARK_INVOICE_AS_SCHEDULED
        - MARK_INVOICE_AS_VOID
        - SEND_REMINDER_EMAIL
      description: Action to perform
      title: MarkInvoiceAsVoidDtoAction
    MarkInvoiceAsVoidDto:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/MarkInvoiceAsVoidDtoAction'
          description: Action to perform
        markInvoiceAsVoid:
          type: boolean
          description: Mark the invoice as void
      required:
        - action
        - markInvoiceAsVoid
      title: MarkInvoiceAsVoidDto
    SendReminderEmailDtoAction:
      type: string
      enum:
        - SEND
        - MARK_INVOICE_TO_SENT_OFF_TABS
        - MARK_INVOICE_AS_PENDING
        - MARK_INVOICE_AS_SCHEDULED
        - MARK_INVOICE_AS_VOID
        - SEND_REMINDER_EMAIL
      description: Action to perform
      title: SendReminderEmailDtoAction
    SendReminderEmailDto:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/SendReminderEmailDtoAction'
          description: Action to perform
        sendReminderEmail:
          type: boolean
          description: Send the reminder email
      required:
        - action
        - sendReminderEmail
      title: SendReminderEmailDto
    Customers_IntegratorsApiCustomersController_invoiceActions_Request:
      oneOf:
        - $ref: '#/components/schemas/SendInvoiceDto'
        - $ref: '#/components/schemas/MarkInvoiceAsPendingDto'
        - $ref: '#/components/schemas/MarkInvoiceToSentOffTabsDto'
        - $ref: '#/components/schemas/MarkInvoiceAsScheduledDto'
        - $ref: '#/components/schemas/MarkInvoiceAsVoidDto'
        - $ref: '#/components/schemas/SendReminderEmailDto'
      title: Customers_IntegratorsApiCustomersController_invoiceActions_Request
    V3CustomersIdInvoicesInvoiceIdActionsPostResponsesContentApplicationJsonSchemaPayload:
      type: object
      properties: {}
      description: Response payload, will be empty when success is false
      title: >-
        V3CustomersIdInvoicesInvoiceIdActionsPostResponsesContentApplicationJsonSchemaPayload
    IntegratorsApiErrorDetails:
      type: object
      properties: {}
      description: Additional details about the error
      title: IntegratorsApiErrorDetails
    IntegratorsApiError:
      type: object
      properties:
        code:
          type: number
          format: double
          description: API response code
        message:
          type: string
          description: API response message
        details:
          $ref: '#/components/schemas/IntegratorsApiErrorDetails'
          description: Additional details about the error
      required:
        - code
        - message
      title: IntegratorsApiError
    Customers_IntegratorsApiCustomersController_invoiceActions_Response_200:
      type: object
      properties:
        payload:
          $ref: >-
            #/components/schemas/V3CustomersIdInvoicesInvoiceIdActionsPostResponsesContentApplicationJsonSchemaPayload
          description: Response payload, will be empty when success is false
        success:
          type: boolean
          description: Boolean with true=success, false=failure
        message:
          type: string
          description: Plain-text description of the result
        error:
          $ref: '#/components/schemas/IntegratorsApiError'
          description: json element with any error messages or warnings
      required:
        - payload
        - success
        - message
        - error
      title: Customers_IntegratorsApiCustomersController_invoiceActions_Response_200
  securitySchemes:
    custom-header:
      type: apiKey
      in: header
      name: Authorization

```

## Examples

### Send to both ERP and customer with overrideInvoiceDate



**Request**

```json
{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}
```

**Response**

```json
{
  "message": "Invoice send job created, jobId: 9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f, please check the job status via /jobs/9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f"
}
```

**SDK Code**

```python Send to both ERP and customer with overrideInvoiceDate
import requests

url = "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

payload = {
    "action": "SEND",
    "sendToErp": True,
    "sendToCustomer": True,
    "overrideInvoiceDate": False
}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Send to both ERP and customer with overrideInvoiceDate
const url = 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"action":"SEND","sendToErp":true,"sendToCustomer":true,"overrideInvoiceDate":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Send to both ERP and customer with overrideInvoiceDate
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

	payload := strings.NewReader("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Send to both ERP and customer with overrideInvoiceDate
require 'uri'
require 'net/http'

url = URI("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}"

response = http.request(request)
puts response.read_body
```

```java Send to both ERP and customer with overrideInvoiceDate
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")
  .asString();
```

```php Send to both ERP and customer with overrideInvoiceDate
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions', [
  'body' => '{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Send to both ERP and customer with overrideInvoiceDate
using RestSharp;

var client = new RestClient("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Send to both ERP and customer with overrideInvoiceDate
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Send only to ERP



**Request**

```json
{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}
```

**Response**

```json
{
  "message": "Invoice send job created, jobId: 9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f, please check the job status via /jobs/9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f"
}
```

**SDK Code**

```python Send only to ERP
import requests

url = "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

payload = {
    "action": "SEND",
    "sendToErp": True,
    "sendToCustomer": True,
    "overrideInvoiceDate": False
}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Send only to ERP
const url = 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"action":"SEND","sendToErp":true,"sendToCustomer":true,"overrideInvoiceDate":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Send only to ERP
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

	payload := strings.NewReader("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Send only to ERP
require 'uri'
require 'net/http'

url = URI("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}"

response = http.request(request)
puts response.read_body
```

```java Send only to ERP
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")
  .asString();
```

```php Send only to ERP
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions', [
  'body' => '{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Send only to ERP
using RestSharp;

var client = new RestClient("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Send only to ERP
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Send only to customer (e.g. merchant has no ERP connected)



**Request**

```json
{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}
```

**Response**

```json
{
  "message": "Invoice send job created, jobId: 9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f, please check the job status via /jobs/9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f"
}
```

**SDK Code**

```python Send only to customer (e.g. merchant has no ERP connected)
import requests

url = "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

payload = {
    "action": "SEND",
    "sendToErp": True,
    "sendToCustomer": True,
    "overrideInvoiceDate": False
}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Send only to customer (e.g. merchant has no ERP connected)
const url = 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"action":"SEND","sendToErp":true,"sendToCustomer":true,"overrideInvoiceDate":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Send only to customer (e.g. merchant has no ERP connected)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

	payload := strings.NewReader("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Send only to customer (e.g. merchant has no ERP connected)
require 'uri'
require 'net/http'

url = URI("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}"

response = http.request(request)
puts response.read_body
```

```java Send only to customer (e.g. merchant has no ERP connected)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")
  .asString();
```

```php Send only to customer (e.g. merchant has no ERP connected)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions', [
  'body' => '{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Send only to customer (e.g. merchant has no ERP connected)
using RestSharp;

var client = new RestClient("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Send only to customer (e.g. merchant has no ERP connected)
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Mark invoice as pending



**Request**

```json
{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}
```

**Response**

```json
{
  "message": "Invoice send job created, jobId: 9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f, please check the job status via /jobs/9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f"
}
```

**SDK Code**

```python Mark invoice as pending
import requests

url = "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

payload = {
    "action": "SEND",
    "sendToErp": True,
    "sendToCustomer": True,
    "overrideInvoiceDate": False
}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Mark invoice as pending
const url = 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"action":"SEND","sendToErp":true,"sendToCustomer":true,"overrideInvoiceDate":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Mark invoice as pending
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

	payload := strings.NewReader("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Mark invoice as pending
require 'uri'
require 'net/http'

url = URI("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}"

response = http.request(request)
puts response.read_body
```

```java Mark invoice as pending
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")
  .asString();
```

```php Mark invoice as pending
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions', [
  'body' => '{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Mark invoice as pending
using RestSharp;

var client = new RestClient("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Mark invoice as pending
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Mark invoice as sent off Tabs



**Request**

```json
{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}
```

**Response**

```json
{
  "message": "Invoice send job created, jobId: 9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f, please check the job status via /jobs/9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f"
}
```

**SDK Code**

```python Mark invoice as sent off Tabs
import requests

url = "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

payload = {
    "action": "SEND",
    "sendToErp": True,
    "sendToCustomer": True,
    "overrideInvoiceDate": False
}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Mark invoice as sent off Tabs
const url = 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"action":"SEND","sendToErp":true,"sendToCustomer":true,"overrideInvoiceDate":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Mark invoice as sent off Tabs
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

	payload := strings.NewReader("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Mark invoice as sent off Tabs
require 'uri'
require 'net/http'

url = URI("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}"

response = http.request(request)
puts response.read_body
```

```java Mark invoice as sent off Tabs
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")
  .asString();
```

```php Mark invoice as sent off Tabs
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions', [
  'body' => '{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Mark invoice as sent off Tabs
using RestSharp;

var client = new RestClient("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Mark invoice as sent off Tabs
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Mark invoice as scheduled



**Request**

```json
{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}
```

**Response**

```json
{
  "message": "Invoice send job created, jobId: 9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f, please check the job status via /jobs/9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f"
}
```

**SDK Code**

```python Mark invoice as scheduled
import requests

url = "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

payload = {
    "action": "SEND",
    "sendToErp": True,
    "sendToCustomer": True,
    "overrideInvoiceDate": False
}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Mark invoice as scheduled
const url = 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"action":"SEND","sendToErp":true,"sendToCustomer":true,"overrideInvoiceDate":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Mark invoice as scheduled
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

	payload := strings.NewReader("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Mark invoice as scheduled
require 'uri'
require 'net/http'

url = URI("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}"

response = http.request(request)
puts response.read_body
```

```java Mark invoice as scheduled
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")
  .asString();
```

```php Mark invoice as scheduled
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions', [
  'body' => '{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Mark invoice as scheduled
using RestSharp;

var client = new RestClient("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Mark invoice as scheduled
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Mark invoice as void



**Request**

```json
{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}
```

**Response**

```json
{
  "message": "Invoice send job created, jobId: 9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f, please check the job status via /jobs/9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f"
}
```

**SDK Code**

```python Mark invoice as void
import requests

url = "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

payload = {
    "action": "SEND",
    "sendToErp": True,
    "sendToCustomer": True,
    "overrideInvoiceDate": False
}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Mark invoice as void
const url = 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"action":"SEND","sendToErp":true,"sendToCustomer":true,"overrideInvoiceDate":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Mark invoice as void
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

	payload := strings.NewReader("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Mark invoice as void
require 'uri'
require 'net/http'

url = URI("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}"

response = http.request(request)
puts response.read_body
```

```java Mark invoice as void
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")
  .asString();
```

```php Mark invoice as void
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions', [
  'body' => '{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Mark invoice as void
using RestSharp;

var client = new RestClient("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Mark invoice as void
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Send reminder email



**Request**

```json
{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}
```

**Response**

```json
{
  "message": "Invoice send job created, jobId: 9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f, please check the job status via /jobs/9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f"
}
```

**SDK Code**

```python Send reminder email
import requests

url = "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

payload = {
    "action": "SEND",
    "sendToErp": True,
    "sendToCustomer": True,
    "overrideInvoiceDate": False
}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Send reminder email
const url = 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"action":"SEND","sendToErp":true,"sendToCustomer":true,"overrideInvoiceDate":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Send reminder email
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

	payload := strings.NewReader("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Send reminder email
require 'uri'
require 'net/http'

url = URI("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}"

response = http.request(request)
puts response.read_body
```

```java Send reminder email
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")
  .asString();
```

```php Send reminder email
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions', [
  'body' => '{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Send reminder email
using RestSharp;

var client = new RestClient("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Send reminder email
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Example 9



**Request**

```json
{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}
```

**Response**

```json
{
  "message": "Invoice send job created, jobId: 9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f, please check the job status via /jobs/9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f"
}
```

**SDK Code**

```python
import requests

url = "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

payload = {
    "action": "SEND",
    "sendToErp": True,
    "sendToCustomer": True,
    "overrideInvoiceDate": False
}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"action":"SEND","sendToErp":true,"sendToCustomer":true,"overrideInvoiceDate":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

	payload := strings.NewReader("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions', [
  'body' => '{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Example 10



**Request**

```json
{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}
```

**Response**

```json
{
  "message": "Invoice send job created, jobId: 9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f, please check the job status via /jobs/9f8b7c6d-1234-4a56-b789-0a1b2c3d4e5f"
}
```

**SDK Code**

```python
import requests

url = "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

payload = {
    "action": "SEND",
    "sendToErp": True,
    "sendToCustomer": True,
    "overrideInvoiceDate": False
}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"action":"SEND","sendToErp":true,"sendToCustomer":true,"overrideInvoiceDate":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions"

	payload := strings.NewReader("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions', [
  'body' => '{
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"action\": \"SEND\",\n  \"sendToErp\": true,\n  \"sendToCustomer\": true,\n  \"overrideInvoiceDate\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "action": "SEND",
  "sendToErp": true,
  "sendToCustomer": true,
  "overrideInvoiceDate": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://integrators.prod.api.tabsplatform.com/v3/customers/123e4567-e89b-12d3-a456-426614174000/invoices/123e4567-e89b-12d3-a456-426614174000/actions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```