Tabs Customers API
The Customers API from Tabs — 21 operation(s) for customers.
The Customers API from Tabs — 21 operation(s) for customers.
openapi: 3.0.0
info:
title: Tabs External Billing Terms Customers API
description: ''
version: 1.0.0
contact: {}
x-apievangelist:
generated: '2026-07-21'
method: searched
source: https://docs.tabsplatform.com/reference (OpenAPI definitions embedded per-operation in the ReadMe reference pages, merged; index at https://docs.tabsplatform.com/llms.txt)
source_pages: 93
servers:
- url: https://integrators.prod.api.tabsplatform.com
security:
- custom-header: []
tags:
- name: Customers
paths:
/v3/customers/{id}:
get:
operationId: IntegratorsApiCustomersController_getCustomerById
parameters:
- name: id
required: true
in: path
description: Customer Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
responses:
'200':
description: The Customer
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/CustomerV3Dto'
'404':
description: Customer not found
summary: Get customer by ID
tags:
- Customers
delete:
operationId: IntegratorsApiCustomersController_deleteCustomer
parameters:
- name: id
required: true
in: path
description: Customer Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
responses:
'200':
description: Deleted customer
'404':
description: Customer not found
summary: Delete customer
tags:
- Customers
/v3/customers:
get:
operationId: IntegratorsApiCustomersController_getCustomers
parameters:
- name: page
required: true
in: query
description: Page Number
schema:
default: 1
type: number
- name: limit
required: true
in: query
description: Number of items to return
schema:
default: 50
type: number
- name: filter
required: false
in: query
description: 'Supported items for filter: name, externalIds.externalId, lastUpdatedAt. Date format for lastUpdatedAt: YYYY-MM-DD'
schema:
type: string
responses:
'200':
description: Get all Customers by filter
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDTO'
- properties:
data:
type: array
items:
$ref: '#/components/schemas/CustomerV3Dto'
limit:
type: number
totalItems:
type: number
currentPage:
type: number
summary: List customers
tags:
- Customers
post:
operationId: IntegratorsApiCustomersController_createCustomer
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCustomerV3Dto'
responses:
'202':
description: Created customer
'500':
description: Internal server error
summary: Create customer
tags:
- Customers
/v3/customers/{id}/sub-customers:
post:
operationId: IntegratorsApiCustomersController_createSubCustomer
parameters:
- name: id
required: true
in: path
description: Customer Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSubCustomerDto'
responses:
'201':
description: Created sub customer
'500':
description: Internal server error
summary: Create sub-customer
tags:
- Customers
/v3/customers/{id}/invoices/{invoiceId}:
get:
operationId: IntegratorsApiCustomersController_getInvoice
parameters:
- name: id
required: true
in: path
description: Customer Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: invoiceId
required: true
in: path
description: Invoice Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
responses:
'200':
description: The invoice
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/InvoiceV3Dto'
'404':
description: Invoice not found
summary: Get customer invoice by ID
tags:
- Customers
/v3/customers/{id}/invoices/{invoiceId}/external-ids:
patch:
operationId: IntegratorsApiCustomersController_updateInvoiceExternalIds
parameters:
- name: id
required: true
in: path
description: Customer Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: invoiceId
required: true
in: path
description: Invoice Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateInvoiceExternalIdsDto'
responses:
'200':
description: Updated invoice external IDs
'404':
description: Invoice not found
summary: Update invoice external IDs
tags:
- Customers
/v3/customers/{id}/invoices/{invoiceId}/pdf:
get:
operationId: IntegratorsApiCustomersController_getInvoiceAsPdf
parameters:
- name: id
required: true
in: path
description: Customer Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: invoiceId
required: true
in: path
description: Invoice Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: type
required: true
in: query
description: Type of the response either pdf or buffer
schema:
example: pdf
type: string
responses:
'200':
description: PDF file download
content:
application/pdf:
schema:
type: string
format: binary
summary: Download invoice PDF
tags:
- Customers
/v3/customers/{id}/invoices/{invoiceId}/actions:
post:
operationId: IntegratorsApiCustomersController_invoiceActions
parameters:
- name: id
required: true
in: path
description: Customer Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: invoiceId
required: true
in: path
description: Invoice Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
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:
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'
examples:
sendToBothWithoutOverrideInvoiceDate:
summary: Send to both ERP and customer without overrideInvoiceDate
value:
action: SEND
sendToErp: true
sendToCustomer: true
overrideInvoiceDate: false
sendToBothWithOverrideInvoiceDate:
summary: Send to both ERP and customer with overrideInvoiceDate
value:
action: SEND
sendToErp: true
sendToCustomer: true
overrideInvoiceDate: true
sendToErpOnly:
summary: Send only to ERP
value:
action: SEND
sendToErp: true
sendToCustomer: false
overrideInvoiceDate: false
sendToCustomerOnly:
summary: Send only to customer (e.g. merchant has no ERP connected)
value:
action: SEND
sendToErp: false
sendToCustomer: true
overrideInvoiceDate: false
markAsPending:
summary: Mark invoice as pending
value:
action: MARK_INVOICE_AS_PENDING
markInvoiceAsPending: true
markAsSentOffTabs:
summary: Mark invoice as sent off Tabs
value:
action: MARK_INVOICE_TO_SENT_OFF_TABS
markInvoiceToSentOffTabs: true
markAsScheduled:
summary: Mark invoice as scheduled
value:
action: MARK_INVOICE_AS_SCHEDULED
markInvoiceAsScheduled: true
markAsVoid:
summary: Mark invoice as void
value:
action: MARK_INVOICE_AS_VOID
markInvoiceAsVoid: true
sendReminderEmail:
summary: Send reminder email
value:
action: SEND_REMINDER_EMAIL
sendReminderEmail: true
responses:
'200':
description: Invoice marked as pending or sent off Tabs successfully
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/InvoiceV3Dto'
'201':
description: Invoice send job created successfully
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: 'Invoice send job created, jobId: 123e4567-e89b-12d3-a456-426614174000, please check the job status via /jobs/:jobId'
'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'
'500':
description: Internal server error
summary: Perform invoice action
tags:
- Customers
/v3/customers/{id}/invoices/{invoiceId}/payments/{paymentId}:
get:
operationId: IntegratorsApiCustomersController_getPayment
parameters:
- name: id
required: true
in: path
description: Customer Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: invoiceId
required: true
in: path
description: Invoice Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: paymentId
required: true
in: path
description: Payment Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
responses:
'200':
description: The payment
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/PaymentsV3Dto'
'404':
description: Payment not found
summary: Get invoice payment by ID
tags:
- Customers
/v3/customers/{id}/invoices/{invoiceId}/payments:
post:
operationId: IntegratorsApiCustomersController_createPayment
parameters:
- name: id
required: true
in: path
description: Customer Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: invoiceId
required: true
in: path
description: Invoice Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePaymentV3Dto'
responses:
'200':
description: Created payment
summary: Create invoice payment
tags:
- Customers
/v3/customers/{id}/invoices/{invoiceId}/attachments:
post:
operationId: IntegratorsApiCustomersController_uploadAttachmentToInvoice
parameters:
- name: id
required: true
in: path
description: Customer Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: invoiceId
required: true
in: path
description: Invoice Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: attachment uploaded successfully
'404':
description: Invoice not found
'500':
description: Internal server error
summary: Upload invoice attachment
tags:
- Customers
/v3/customers/{id}/autocharge:
put:
operationId: IntegratorsApiCustomersController_updateCustomerAutoCharge
parameters:
- name: id
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCustomerAutoChargeV3Dto'
responses:
'200':
description: Updated customer auto charge
'404':
description: Customer not found
'500':
description: Internal server error
summary: Update customer auto-charge
tags:
- Customers
/v3/customers/{id}/cc-fees-exemption:
put:
operationId: IntegratorsApiCustomersController_updateCustomerCCFeesExemption
parameters:
- name: id
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCustomerCCFeesExemptionV3Dto'
responses:
'200':
description: Updated customer CC fees exemption
content:
application/json:
schema:
$ref: '#/components/schemas/IntegratorsApiResponse'
'404':
description: Customer not found
content:
application/json:
schema:
$ref: '#/components/schemas/IntegratorsApiResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/IntegratorsApiResponse'
summary: Update customer credit card fees exemption
tags:
- Customers
/v3/customers/{id}/custom-field:
put:
operationId: IntegratorsApiCustomersController_updateCustomerCustomField
parameters:
- name: id
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UpdateCustomerCustomFieldV3Dto'
responses:
'200':
description: Updated customer custom field
'400':
description: Invalid request body structure or UUID format
'404':
description: Customer or custom field not found
'500':
description: Internal server error
summary: Update customer custom fields
tags:
- Customers
/v3/customers/{id}/contacts:
post:
operationId: IntegratorsApiCustomersController_createContacts
parameters:
- name: id
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateContactV3Dto'
responses:
'200':
description: Created contacts
'400':
description: Invalid email address was provided or top level customers cannot be modified
'404':
description: Customer not found
'500':
description: Internal server error
summary: Create customer contacts
tags:
- Customers
get:
operationId: IntegratorsApiCustomersController_getContacts
parameters:
- name: id
required: true
in: path
schema:
type: string
- name: page
required: true
in: query
description: Page Number
schema:
default: 1
type: number
- name: limit
required: true
in: query
description: Number of items to return
schema:
default: 50
type: number
- name: filter
required: false
in: query
description: 'Supported items for filter: firstName, lastName, email, isPrimaryContact, isCCEmail, lastUpdatedAt. Date format for lastUpdatedAt: YYYY-MM-DD'
schema:
type: string
responses:
'200':
description: Get all Customers by filter
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDTO'
- properties:
data:
type: array
items:
$ref: '#/components/schemas/ContactV3Dto'
limit:
type: number
totalItems:
type: number
currentPage:
type: number
'404':
description: Customer not found
'500':
description: Internal server error
summary: List customer contacts
tags:
- Customers
/v3/customers/{id}/address:
post:
operationId: IntegratorsApiCustomersController_createAddress
parameters:
- name: id
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertAddressV3Dto'
responses:
'200':
description: Created address
'400':
description: Top level customers cannot be modified
'404':
description: Customer not found
'500':
description: Internal server error
summary: Create customer address
tags:
- Customers
/v3/customers/{id}/contacts/{contactId}:
patch:
operationId: IntegratorsApiCustomersController_updateContact
parameters:
- name: id
required: true
in: path
schema:
type: string
- name: contactId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateContactV3Dto'
responses:
'200':
description: Updated contact
'400':
description: Top level customers cannot be modified
'404':
description: Contact not found
'500':
description: Internal server error
summary: Update customer contact
tags:
- Customers
/v3/customers/{id}/external-ids:
post:
operationId: IntegratorsApiCustomersController_upsertCustomerExternalId
parameters:
- name: id
required: true
in: path
description: Customer ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertCustomerExternalIdV3Dto'
responses:
'200':
description: Customer external ID upserted successfully
content:
application/json:
schema:
properties:
payload:
$ref: '#/components/schemas/UpsertCustomerExternalIdV3Dto'
'400':
description: Bad request
'404':
description: Customer not found
summary: Upsert customer external ID
tags:
- Customers
/v3/customers/{id}/invoices/{invoiceId}/credit-memos:
get:
operationId: IntegratorsApiCustomersController_getCreditMemosByInvoice
parameters:
- name: id
required: true
in: path
description: Customer ID
schema:
format: uuid
type: string
- name: invoiceId
required: true
in: path
description: Invoice ID
schema:
format: uuid
type: string
responses:
'200':
description: Credit memos retrieved successfully
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
type: array
items:
$ref: '#/components/schemas/CreditMemoDto'
'404':
description: Credit memos for invoice not found
'500':
description: Internal server error - Failed to get credit memo by invoice
summary: List invoice credit memos
tags:
- Customers
/v3/customers/{id}/name:
patch:
operationId: IntegratorsApiCustomersController_updateCustomerName
parameters:
- name: id
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
required:
- name
responses:
'200':
description: Updated customer name
'400':
description: Top level customers cannot be modified
'404':
description: Customer not found
'500':
description: Internal server error
summary: Update customer name
tags:
- Customers
/v3/customers/{id}/invoices/{invoiceId}/po:
put:
operationId: IntegratorsApiCustomersController_updateInvoicePO
parameters:
- name: id
required: true
in: path
description: Customer ID
schema:
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: invoiceId
required: true
in: path
description: Invoice ID
schema:
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateInvoicePODto'
responses:
'200':
description: Updated PO number
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/UpdateInvoicePOResponseDto'
'404':
description: Customer not found or invoice not found
'500':
description: Internal server error
summary: Update invoice PO number
tags:
- Customers
/v3/customers/{id}/invoices/{invoiceId}/memo:
put:
operationId: IntegratorsApiCustomersController_updateInvoiceMemo
parameters:
- name: id
required: true
in: path
description: Customer ID
schema:
format: uuid
type: string
- name: invoiceId
required: true
in: path
description: Invoice ID
schema:
format: uuid
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateInvoiceMemoBodyDto'
responses:
'200':
description: Updated memo successfully
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/UpdateInvoiceMemoResponseDto'
'404':
description: Customer not found or invoice not found
'500':
description: Internal server error
summary: Update invoice memo
tags:
- Customers
components:
schemas:
UpdateCustomerCCFeesExemptionV3Dto:
type: object
properties:
ccFeesExempt:
type: boolean
description: CC Fees Exemption updated
example: true
required:
- ccFeesExempt
CreditMemoExternalIdDto:
type: object
properties:
externalId:
type: string
description: External ID
example: EXT-123
sourceType:
type: string
description: Source type
example: NETSUITE
required:
- externalId
- sourceType
CreditMemoApplicationDto:
type: object
properties:
id:
type: string
description: Application ID
example: 123e4567-e89b-12d3-a456-426614174000
creditMemoId:
type: string
description: Credit memo ID
example: 123e4567-e89b-12d3-a456-426614174000
invoiceId:
type: string
description: Invoice ID
example: 123e4567-e89b-12d3-a456-426614174000
amountApplied:
type: number
description: Amount applied
example: 100
invoiceNumber:
type: string
description: Invoice number
example: INV-001
invoicePrefix:
type: string
description: Invoice prefix
example: INV
appliedAt:
format: date-time
type: string
description: Applied at
example: '2023-01-01T00:00:00.000Z'
required:
- id
- creditMemoId
- invoiceId
- amountApplied
- invoiceNumber
- invoicePrefix
- appliedAt
UpdateInvoicePODto:
type: object
properties:
poNumber:
type: string
description: Purchase Order number for the invoice
example: PO-12345
maxLength: 30
required:
- poNumber
UpdateContactV3Dto:
type: object
properties:
firstName:
type: string
description: Contact First Name
example: John
lastName:
type: string
description: Contact Last Name
example: Doe
email:
type: string
description: Contact Email
example: john.doe@example.com
isPrimaryContact:
type: boolean
description: Is Primary Contact
example: true
isCCEmail:
type: boolean
description: Is CC Email
example: false
CreateContactV3Dto:
type: object
properties:
firstName:
type: string
description: Contact First Name
example: John
lastName:
type: string
description: Contact Last Name
example: Doe
email:
type: string
description: Contact Email
example: john.doe@example.com
required:
- email
SendInvoiceDto:
type: object
properties:
action:
type: string
description: Action to perform
example: SEND
enum:
- SEND
- MARK_INVOICE_TO_SENT_OFF_TABS
- MARK_INVOICE_AS_PENDING
- MARK_INVOICE_AS_SCHEDULED
- MARK_INVOICE_AS_VOID
- SEND_REMINDER_EMAIL
sendToErp:
type: boolean
description: Send the invoice to the ERP
example: true
sendToCustomer:
type: boolean
description: Send the invoice to the customer
example: true
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.
example: true
required:
- action
- sendToErp
- sendToCustomer
ContactV3Dto:
type: object
properties:
id:
type: string
description: Contact ID
example: 123e4567-e89b-12d3-a456-426614174000
firstName:
type: string
description: Contact First Name
example: John
lastName:
type: string
description: Contact Last Name
example: Doe
email:
type: string
description: Contact Email
example: john.doe@example.com
isPrimaryContact:
type: boolean
description: Is Primary Contact
example: true
isCCEmail:
type: boolean
description: Is CC Email
example: false
required:
- id
- email
- isPrimaryContact
- isCCEmail
CreateCustomerV3Dto:
type: object
properties:
name:
type: string
# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tabs/refs/heads/main/openapi/tabs-customers-api-openapi.yml