Download OpenAPI specification:
The Tactill API is built on HTTP and is RESTful. It has predictable resource URLs and returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. Use your favorite HTTP/REST library in your programming language when using this API, or use the Tactill TypeScript SDK for seamless integration.
Most actions in the Tactill Backoffice are supported by an API which is documented and available for use, so that you may automate any necessary workflows or processes. This API reference documentation contains the most commonly integrated resources.
This topic describes the authentication method available in the Tactill API.
Tactill uses API keys for authentication. Each API key is scoped to a single organization and grants the permissions configured at issue time.
To authenticate your requests, send your API key in the X-Api-Key header on every call:
X-Api-Key: v5_<your-api-key>
API keys are prefixed with v5_. Keep them secret — never embed them in client-side code or commit them to source control. If a key is compromised, revoke it from the Tactill Backoffice and issue a new one.
Tactill follows the error response format.
{
status_code: number,
error: string,
message: string
}
As with any API responses, your client must be prepared to gracefully handle additional members of the response.
All error responses include structured information to help you understand and resolve issues quickly.
Tactill enforces rate limits on the API to ensure optimal performance and fair usage across all partners.
Rate limits are applied per organization and are designed to accommodate typical business operations.
In sandbox environment, rate limits are enforced for non-GET endpoints and are set at 3000 requests per 10 minutes.
You can find the exact number of consumed requests in the X-RateLimit-Limit and X-RateLimit-Remaining headers in the response.
If the rate limit is exceeded, the API returns a 429 Too Many Requests response
and a X-RateLimit-Retry-After header that includes a UTC timestamp of when the rate limit resets.
All resources support test and production modes. The mode is bound to your API key — it is not a request-body parameter.
To switch environments, use a different API key. Reach out to support to provision a test key alongside your production key.
Responses include test: true or test: false on each resource so you can confirm which environment the data belongs to.
All APIs follow consistent conventions:
2024-01-01T10:00:00Z)next_tokenTactill provides a TypeScript SDK to help interact with the Tactill API. However, no SDK is required to use the API. All TypeScript SDK code examples are included in the SDK's reference documentation on NPM.
For developers who prefer using Postman for API testing and exploration, we provide a comprehensive Postman collection that includes all available endpoints with example requests and responses.
The collection contains pre-configured requests for all API operations, making it easy to get started with the Tactill API without writing code. You can import the collection directly into Postman and begin testing endpoints immediately.
Download the Postman collection: Tactill API Postman Collection
The full Tactill API provides comprehensive access to manage your business operations. This includes managing products, customers, orders, inventory, and much more. If you would like to implement a particular use case, contact us for guidance and feedback on the best API operations to use for the task.
To integrate Tactill and become a partner, reach out to us at hello@tactill.com.
Products are the individual items sold in your cash register system. Each product belongs to a category, has an associated tax system, and can be customized with options, tags, and custom fields. This resource is the core of your sales catalog.
Warning: Products belong to either the test or production environment based on the API key used to create them — they are not visible across modes. A product must have an associated category and tax rate when created.
Consistent pricing: Always define a buy_price (purchase price) and a sell_price (selling price) to correctly calculate your margins.
Categorization: Organize your products in logical categories to facilitate navigation and reporting.
Barcodes and references: Use unique barcodes and clear internal references for inventory management.
Custom fields: Store business-specific information (allergens, origin, brand, etc.) in custom fields.
Smart tags: Use tags for cross-cutting groupings (organic, seasonal, promotion, etc.).
Variations: For products with variants (size, color), use the variation system for centralized management.
Optimized images: Store image URLs on a CDN for better cash register performance.
Creates a new product in the desired catalog.
Product creation payload
| name required | string Display name of the product as shown to customers |
| buy_price required | number Cost price paid by the merchant to acquire the product (in cents) - used for profit calculations |
| sell_price required | number Retail price charged to customers (in cents) - this is the base price before taxes or discounts |
required | object or string |
required | object or string |
Array of objects or strings Default: [] List of tags for product organization and filtering - helps customers find related products | |
| options | Array of strings Default: [] List of product variant options (size, color, etc.) that customers can select with potential price adjustments |
Array of objects Default: [] Additional custom data fields specific to your business needs (e.g. warehouse codes, supplier info) | |
| photo | string URL of the main product image displayed to customers in the catalog |
{- "name": "Blue shorts",
- "buy_price": 1000,
- "sell_price": 1200,
- "category": {
- "name": "Bathing shorts",
- "color": "BLUE",
- "icon_text": "C"
}, - "tax": {
- "rate": 2000
}, - "tags": [
- {
- "name": "clothing"
}
], - "options": [
- "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726"
], - "custom_fields": [
- {
- "custom_field_id": "catalog__product_champpersonombre1",
- "value": "CODE_BARRE_ENTREPOT_1234"
}
],
}{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "catalog_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "test": true,
- "name": "Blue shorts",
- "color": "BLUE",
- "icon_text": "BS",
- "category_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "tax_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "bulk_type": "string",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": "MY_BARCODE",
- "reference": "MY_REFERENCE",
- "variations": [
- {
- "name": "Color",
- "options": [
- "Red",
- "Blue",
- "Green"
]
}, - {
- "name": "Size",
- "options": [
- "Small",
- "Medium",
- "Large"
]
}
], - "variants_count": 0,
- "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "category": {
- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Bathing shorts",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-06-30T15:32:27.290Z"
}, - "tags": [
- {
- "id": "9c2ebf3c-2cd7-4ec9-9d66-899705da2095",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "clothing",
- "created_at": "2025-06-30T15:32:29.318Z",
- "updated_at": "2025-07-02T09:44:07.410Z"
}
], - "custom_fields": [
- {
- "value": "CODE_BARRE_ENTREPOT_1234",
- "id": "catalog__product_champpersonombre1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Warehouse barcode",
- "key": "product_champpersotexte1",
- "object_type": "PRODUCT",
- "value_type": "TEXT"
}
], - "options": [
- {
- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2025-07-01T07:49:04.961Z",
- "created_at": "2025-07-01T07:49:04.960Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Wrapping paper",
- "values": [
- {
- "name": "kraft",
- "price": 400
}
]
}
],
}Updates specific fields of an existing product.
Product patch payload
| id required | string Product unique identifier |
| name | string Product name |
| buy_price | number Product buy price (in cents) |
| sell_price | number Product sell price (in cents) |
| barcode | string or null Product barcode |
| reference | string or null Product reference |
| category_id | string Category ID |
| tax_id | string Tax ID |
{- "id": "prod_123",
- "name": "Updated Blue Shorts",
- "buy_price": 1100,
- "sell_price": 1300,
- "barcode": "1234567890123",
- "reference": "REF-001",
- "category_id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0"
}{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "catalog_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "test": true,
- "name": "Blue shorts",
- "color": "BLUE",
- "icon_text": "BS",
- "category_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "tax_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "bulk_type": "string",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": "MY_BARCODE",
- "reference": "MY_REFERENCE",
- "variations": [
- {
- "name": "Color",
- "options": [
- "Red",
- "Blue",
- "Green"
]
}, - {
- "name": "Size",
- "options": [
- "Small",
- "Medium",
- "Large"
]
}
], - "variants_count": 0,
- "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "category": {
- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Bathing shorts",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-06-30T15:32:27.290Z"
}, - "tags": [
- {
- "id": "9c2ebf3c-2cd7-4ec9-9d66-899705da2095",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "clothing",
- "created_at": "2025-06-30T15:32:29.318Z",
- "updated_at": "2025-07-02T09:44:07.410Z"
}
], - "custom_fields": [
- {
- "value": "CODE_BARRE_ENTREPOT_1234",
- "id": "catalog__product_champpersonombre1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Warehouse barcode",
- "key": "product_champpersotexte1",
- "object_type": "PRODUCT",
- "value_type": "TEXT"
}
], - "options": [
- {
- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2025-07-01T07:49:04.961Z",
- "created_at": "2025-07-01T07:49:04.960Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Wrapping paper",
- "values": [
- {
- "name": "kraft",
- "price": 400
}
]
}
],
}Requests a list of products with optional filtering and sorting.
Product request payload
object Request input parameters |
{- "input": {
- "filter": {
- "name": {
- "contains": "iPhone"
}
}, - "sort": {
- "field": "name",
- "direction": "ASC"
}, - "limit": 20
}
}{- "items": [
- {
- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "catalog_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "test": true,
- "name": "Blue shorts",
- "color": "BLUE",
- "icon_text": "BS",
- "category_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "tax_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "bulk_type": "string",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": "MY_BARCODE",
- "reference": "MY_REFERENCE",
- "variations": [
- {
- "name": "Color",
- "options": [
- "Red",
- "Blue",
- "Green"
]
}, - {
- "name": "Size",
- "options": [
- "Small",
- "Medium",
- "Large"
]
}
], - "variants_count": 0,
- "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "category": {
- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Bathing shorts",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-06-30T15:32:27.290Z"
}, - "tags": [
- {
- "id": "9c2ebf3c-2cd7-4ec9-9d66-899705da2095",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "clothing",
- "created_at": "2025-06-30T15:32:29.318Z",
- "updated_at": "2025-07-02T09:44:07.410Z"
}
], - "custom_fields": [
- {
- "value": "CODE_BARRE_ENTREPOT_1234",
- "id": "catalog__product_champpersonombre1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Warehouse barcode",
- "key": "product_champpersotexte1",
- "object_type": "PRODUCT",
- "value_type": "TEXT"
}
], - "options": [
- {
- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2025-07-01T07:49:04.961Z",
- "created_at": "2025-07-01T07:49:04.960Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Wrapping paper",
- "values": [
- {
- "name": "kraft",
- "price": 400
}
]
}
],
}
], - "next_token": "xxx.yyy.zzz",
- "total": 10
}Fetches a product by its unique identifier.
| id required | string <uuid> Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the product |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "catalog_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "test": true,
- "name": "Blue shorts",
- "color": "BLUE",
- "icon_text": "BS",
- "category_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "tax_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "bulk_type": "string",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": "MY_BARCODE",
- "reference": "MY_REFERENCE",
- "variations": [
- {
- "name": "Color",
- "options": [
- "Red",
- "Blue",
- "Green"
]
}, - {
- "name": "Size",
- "options": [
- "Small",
- "Medium",
- "Large"
]
}
], - "variants_count": 0,
- "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "category": {
- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Bathing shorts",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-06-30T15:32:27.290Z"
}, - "tags": [
- {
- "id": "9c2ebf3c-2cd7-4ec9-9d66-899705da2095",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "clothing",
- "created_at": "2025-06-30T15:32:29.318Z",
- "updated_at": "2025-07-02T09:44:07.410Z"
}
], - "custom_fields": [
- {
- "value": "CODE_BARRE_ENTREPOT_1234",
- "id": "catalog__product_champpersonombre1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Warehouse barcode",
- "key": "product_champpersotexte1",
- "object_type": "PRODUCT",
- "value_type": "TEXT"
}
], - "options": [
- {
- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2025-07-01T07:49:04.961Z",
- "created_at": "2025-07-01T07:49:04.960Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Wrapping paper",
- "values": [
- {
- "name": "kraft",
- "price": 400
}
]
}
],
}Deletes a product by its unique identifier.
| id required | string <uuid> Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the product |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "catalog_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "test": true,
- "name": "Blue shorts",
- "color": "BLUE",
- "icon_text": "BS",
- "category_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "tax_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "bulk_type": "string",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": "MY_BARCODE",
- "reference": "MY_REFERENCE",
- "variations": [
- {
- "name": "Color",
- "options": [
- "Red",
- "Blue",
- "Green"
]
}, - {
- "name": "Size",
- "options": [
- "Small",
- "Medium",
- "Large"
]
}
], - "variants_count": 0,
}Deletes the connection between a product and a custom field.
| id required | string <uuid> Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the product |
| custom_field_id required | string Example: ba19240a-0442-4bd9-8c15-01b8409e1346__product_champpersotexte1 Unique identifier of the custom field to remove from the product |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d"
}Deletes the connection between a product and a tag.
| id required | string <uuid> Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the product |
| tag_id required | string <uuid> Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the tag to remove from the product |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d"
}Deletes the connection between a product and an option.
| id required | string <uuid> Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the product |
| option_id required | string <uuid> Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the option to remove from the product |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d"
}Updates the name of a specific product variation.
| id required | string <uuid> Example: 74112fef-687b-469e-a6ca-74fcf456ca42 Unique identifier of the product |
| variation_name required | string non-empty Example: couleur Current name of the variation to update |
Product variation name update payload
| new_name required | string non-empty New name for the product variation |
{- "new_name": "couleurs"
}{- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "product_id": "74112fef-687b-469e-a6ca-74fcf456ca42",
- "product": {
- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "catalog_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "test": true,
- "name": "Blue shorts",
- "color": "BLUE",
- "icon_text": "BS",
- "category_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "tax_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "bulk_type": "string",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": "MY_BARCODE",
- "reference": "MY_REFERENCE",
- "variations": [
- {
- "name": "Color",
- "options": [
- "Red",
- "Blue",
- "Green"
]
}
], - "variants_count": 6,
- "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "category": {
- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Bathing shorts",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-06-30T15:32:27.290Z"
}, - "tags": [
- {
- "id": "9c2ebf3c-2cd7-4ec9-9d66-899705da2095",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "clothing",
- "created_at": "2025-06-30T15:32:29.318Z",
- "updated_at": "2025-07-02T09:44:07.410Z"
}
], - "custom_fields": [
- {
- "value": "CODE_BARRE_ENTREPOT_1234",
- "id": "catalog__product_champpersonombre1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Warehouse barcode",
- "key": "product_champpersotexte1",
- "object_type": "PRODUCT",
- "value_type": "TEXT"
}
], - "options": [
- {
- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2025-07-01T07:49:04.961Z",
- "created_at": "2025-07-01T07:49:04.960Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Wrapping paper",
- "values": [
- {
- "name": "kraft",
- "price": 400
}
]
}
],
}, - "variations": [
- {
- "name": "Color",
- "options": [
- "Red",
- "Blue",
- "Green"
]
}
], - "insertions": [
- {
- "id": "74112fef-687b-469e-a6ca-74fcf456ca42__ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "updated_at": "2025-08-19T09:52:37.307Z",
- "created_at": "2025-08-19T08:13:44.314Z",
- "deprecated": null,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "product_id": "74112fef-687b-469e-a6ca-74fcf456ca42",
- "variant_id": "ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "order": 1,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": null,
- "reference": null,
- "options": [
- {
- "name": "Color",
- "value": "Red"
}
], - "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "is_selected": null
}
], - "modifications": [
- {
- "id": "74112fef-687b-469e-a6ca-74fcf456ca42__ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "updated_at": "2025-08-19T09:52:37.307Z",
- "created_at": "2025-08-19T08:13:44.314Z",
- "deprecated": null,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "product_id": "74112fef-687b-469e-a6ca-74fcf456ca42",
- "variant_id": "ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "order": 1,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": null,
- "reference": null,
- "options": [
- {
- "name": "Color",
- "value": "Red"
}
], - "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "is_selected": null
}
], - "deletions": [
- {
- "id": "74112fef-687b-469e-a6ca-74fcf456ca42__ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "updated_at": "2025-08-19T09:52:37.307Z",
- "created_at": "2025-08-19T08:13:44.314Z",
- "deprecated": null,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "product_id": "74112fef-687b-469e-a6ca-74fcf456ca42",
- "variant_id": "ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "order": 1,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": null,
- "reference": null,
- "options": [
- {
- "name": "Color",
- "value": "Red"
}
], - "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "is_selected": null
}
]
}Updates the value of a specific product variation option.
| id required | string <uuid> Example: 74112fef-687b-469e-a6ca-74fcf456ca42 Unique identifier of the product |
| variation_name required | string non-empty Example: couleur Name of the variation containing the option to update |
| option_value required | string non-empty Example: rouge Current value of the option to update |
Product variation option value update payload
| new_value required | string non-empty New value for the product variation option |
{- "new_value": "red"
}{- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "product_id": "74112fef-687b-469e-a6ca-74fcf456ca42",
- "product": {
- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "catalog_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "test": true,
- "name": "Blue shorts",
- "color": "BLUE",
- "icon_text": "BS",
- "category_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "tax_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "bulk_type": "string",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": "MY_BARCODE",
- "reference": "MY_REFERENCE",
- "variations": [
- {
- "name": "Color",
- "options": [
- "Red",
- "Blue",
- "Green"
]
}
], - "variants_count": 6,
- "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "category": {
- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Bathing shorts",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-06-30T15:32:27.290Z"
}, - "tags": [
- {
- "id": "9c2ebf3c-2cd7-4ec9-9d66-899705da2095",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "clothing",
- "created_at": "2025-06-30T15:32:29.318Z",
- "updated_at": "2025-07-02T09:44:07.410Z"
}
], - "custom_fields": [
- {
- "value": "CODE_BARRE_ENTREPOT_1234",
- "id": "catalog__product_champpersonombre1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Warehouse barcode",
- "key": "product_champpersotexte1",
- "object_type": "PRODUCT",
- "value_type": "TEXT"
}
], - "options": [
- {
- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2025-07-01T07:49:04.961Z",
- "created_at": "2025-07-01T07:49:04.960Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Wrapping paper",
- "values": [
- {
- "name": "kraft",
- "price": 400
}
]
}
],
}, - "variations": [
- {
- "name": "Color",
- "options": [
- "Red",
- "Blue",
- "Green"
]
}
], - "insertions": [
- {
- "id": "74112fef-687b-469e-a6ca-74fcf456ca42__ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "updated_at": "2025-08-19T09:52:37.307Z",
- "created_at": "2025-08-19T08:13:44.314Z",
- "deprecated": null,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "product_id": "74112fef-687b-469e-a6ca-74fcf456ca42",
- "variant_id": "ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "order": 1,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": null,
- "reference": null,
- "options": [
- {
- "name": "Color",
- "value": "Red"
}
], - "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "is_selected": null
}
], - "modifications": [
- {
- "id": "74112fef-687b-469e-a6ca-74fcf456ca42__ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "updated_at": "2025-08-19T09:52:37.307Z",
- "created_at": "2025-08-19T08:13:44.314Z",
- "deprecated": null,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "product_id": "74112fef-687b-469e-a6ca-74fcf456ca42",
- "variant_id": "ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "order": 1,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": null,
- "reference": null,
- "options": [
- {
- "name": "Color",
- "value": "Red"
}
], - "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "is_selected": null
}
], - "deletions": [
- {
- "id": "74112fef-687b-469e-a6ca-74fcf456ca42__ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "updated_at": "2025-08-19T09:52:37.307Z",
- "created_at": "2025-08-19T08:13:44.314Z",
- "deprecated": null,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "product_id": "74112fef-687b-469e-a6ca-74fcf456ca42",
- "variant_id": "ccd12fd6-e92b-4710-8621-9830b7cee2f1",
- "order": 1,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "buy_price": 1000,
- "sell_price": 1200,
- "barcode": null,
- "reference": null,
- "options": [
- {
- "name": "Color",
- "value": "Red"
}
], - "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000,
- "created_at": "2025-06-30T15:10:33.218Z",
- "updated_at": "2025-07-02T09:44:04.051Z"
}, - "is_selected": null
}
]
}Discounts allow you to apply commercial reductions to your sales. They can be percentage-based or fixed amounts and are used for promotions, loyalty programs, or commercial gestures. Discounts are referenced in sales for commercial performance tracking.
Warning: Discounts belong to either the test or production environment based on the API key used to create them — they are not visible across modes. For percentage discounts, the rate must be between 0 and 100. For numeric discounts, the amount is in cents.
Appropriate types: Use PERCENTAGE for proportional discounts (e.g. 10%) and NUMERIC for fixed amounts (e.g. €5).
Explicit naming: Choose clear names that indicate the nature of the discount ("Black Friday 20%", "Loyalty €5").
Rate validation: For PERCENTAGE discounts, verify that the rate remains between 0 and 100.
Seasonal discounts: Create specific discounts for your commercial campaigns with dated names.
Performance tracking: Regularly analyze your discount usage through statistics to optimize your strategies.
Rights management: Control access to discounts according to user profiles to prevent abuse.
Archiving: Maintain a history of your discounts even when expired for accounting and commercial tracking.
Creates a new discount in the desired catalog.
Discount creation payload
| name required | string Display name of the discount shown to staff and customers |
| type required | string Enum: "PERCENTAGE" "NUMERIC" Type of discount calculation: PERCENTAGE for percentage-based discounts or NUMERIC for fixed amount discounts |
| rate required | number >= 0 Discount value - for PERCENTAGE type: percentage value (0-100), for NUMERIC type: amount in cents |
{- "name": "Black Friday",
- "type": "PERCENTAGE",
- "rate": 10
}{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Black Friday",
- "type": "PERCENTAGE",
- "rate": 10,
- "created_at": "2024-01-01T00:00:00.000Z",
- "updated_at": "2024-01-01T00:00:00.000Z"
}Updates specific fields of an existing discount.
Discount patch payload
| id required | string Discount unique identifier |
| name | string Discount name |
| type | string Enum: "PERCENTAGE" "NUMERIC" Discount type |
| rate | number >= 0 Discount rate (percentage or amount in cents) |
{- "id": "disc_123",
- "name": "Updated Black Friday",
- "type": "PERCENTAGE",
- "rate": 15
}{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Black Friday",
- "type": "PERCENTAGE",
- "rate": 10,
- "created_at": "2024-01-01T00:00:00.000Z",
- "updated_at": "2024-01-01T00:00:00.000Z"
}Requests a list of discounts with optional filtering and sorting.
Discount request payload
| filter | any Filter criteria for discounts with support for and/or/not operators |
object Sort criteria for discounts | |
| limit | integer [ 1 .. 100 ] Maximum number of discounts to return |
| next_token | string Token for pagination |
{- "filter": {
- "name": {
- "contains": "Black"
}, - "and": [
- {
- "created_at": {
- "gte": "2024-01-01T00:00:00Z"
}
}, - {
- "type": {
- "eq": "PERCENTAGE"
}
}
], - "or": [
- {
- "rate": {
- "eq": 10
}
}, - {
- "name": {
- "contains": "sale"
}
}
]
}, - "sort": {
- "field": "name",
- "direction": "asc"
}, - "limit": 20,
- "next_token": "eyJpZCI6IjEyMyJ9"
}{- "items": [
- {
- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Black Friday",
- "type": "PERCENTAGE",
- "rate": 10,
- "created_at": "2024-01-01T00:00:00.000Z",
- "updated_at": "2024-01-01T00:00:00.000Z"
}
], - "next_token": "xxx.yyy.zzz",
- "total": 10
}Fetches a discount by its unique identifier.
| id required | string Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the discount |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Black Friday",
- "type": "PERCENTAGE",
- "rate": 10,
- "created_at": "2024-01-01T00:00:00.000Z",
- "updated_at": "2024-01-01T00:00:00.000Z"
}Deletes a discount by its unique identifier.
| id required | string Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the discount |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Black Friday",
- "type": "PERCENTAGE",
- "rate": 10,
- "created_at": "2024-01-01T00:00:00.000Z",
- "updated_at": "2024-01-01T00:00:00.000Z"
}Customers represent your customer base in the cash register system. They enable management of named sales, loyalty, customer accounts, and commercial tracking. Customers belong to a company and can have accounts with balances.
Warning: Customers belong to either the test or production environment based on the API key used to create them — they are not visible across modes. A customer can be created without email or phone, but at least one contact method is recommended for customer relations.
Complete data: Fill in as much information as possible (name, email, phone, address) for better customer relations.
GDPR management: Comply with personal data regulations and only store necessary information.
Customer accounts: Use the customer account system for deferred billing and installment payments.
Loyalty cards: Assign unique loyalty card numbers for your loyalty programs.
Segmentation: Use custom fields to segment your clientele (VIP, professional, individual).
Standardized addresses: Follow standard address formats with valid postal codes for deliveries.
Duplicate merging: Regularly check for duplicates on email/phone to maintain a clean database.
Useful notes: Use the note field to store important information about customer preferences.
Creates a new customer in the desired catalog.
Customer creation payload
| original_id | string or null External customer ID from your existing system or third-party integrations |
| first_name | string or null Customer's first name or given name |
| last_name | string or null Customer's last name or family name |
string or null Customer's email address for communication and marketing | |
| phone | string or null Complete phone number including country code |
| phone_code | string or null International dialing code for the phone number (e.g., +33 for France) |
| company_name | string or null Name of the company or organization the customer represents |
| color | string or null Enum: "GREEN" "LIME" "RED" "BLUE" "YELLOW" "ORANGE" "PINK" "PURPLE" "TURQUOISE" "GREY" "BROWN" "BLACK" Visual color theme for the customer profile in the user interface |
| icon_text | string or null Short text (usually initials) displayed as customer avatar in the interface |
object or null | |
| note | string or null Internal notes or comments about the customer for staff reference |
| fidelity_card_number | string or null Loyalty program card number or membership ID for rewards and points tracking |
Array of objects Default: [] Additional custom data fields specific to your business needs for customer management |
{- "original_id": "4r5Ty67",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone": "+33123456789",
- "phone_code": "+33",
- "company_name": "Acme Corp",
- "color": "BLUE",
- "icon_text": "JD",
- "address": {
- "address": "123 Main St",
- "zipcode": "75001",
- "city": "Paris",
- "country": "FR"
}, - "note": "VIP customer",
- "fidelity_card_number": "FIDELITY123",
- "custom_fields": [
- {
- "custom_field_id": "customer_champpersotext1",
- "value": "5th floor"
}
]
}{- "id": "ed18750a-0442-4be9-8c15-034e409ef225",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "company_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "original_id": "4r5Ty67",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone": "+33123456789",
- "company_name": "Acme Corp",
- "color": "BLUE",
- "icon_text": "JD",
- "address": {
- "address": "123 Main St",
- "zipcode": "75001",
- "city": "Paris",
- "country": "FR"
}, - "note": "VIP customer",
- "fidelity_card_number": "FIDELITY123",
- "test": true,
- "custom_fields": [
- {
- "value": "5th floor",
- "id": "customer_champpersotext1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "store floor number",
- "object_type": "CUSTOMER",
- "value_type": "TEXT"
}
]
}Updates specific fields of an existing customer.
Customer patch payload
| id required | string Customer unique identifier |
| first_name | string Customer first name |
| last_name | string Customer last name |
string <email> Customer email | |
| phone | string Customer phone |
object Customer address | |
| company_name | string Customer company name |
| company_vat_number | string Customer company VAT number |
{- "id": "cust_123",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone": "+1234567890",
- "address": {
- "address": "123 Main St",
- "city": "New York",
- "zipcode": "10001",
- "country": "US"
}, - "company_name": "ACME Corp",
- "company_vat_number": "VAT123456789"
}{- "id": "ed18750a-0442-4be9-8c15-034e409ef225",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "company_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "original_id": "4r5Ty67",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone": "+33123456789",
- "company_name": "Acme Corp",
- "color": "BLUE",
- "icon_text": "JD",
- "address": {
- "address": "123 Main St",
- "zipcode": "75001",
- "city": "Paris",
- "country": "FR"
}, - "note": "VIP customer",
- "fidelity_card_number": "FIDELITY123",
- "test": true,
- "custom_fields": [
- {
- "value": "5th floor",
- "id": "customer_champpersotext1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "store floor number",
- "object_type": "CUSTOMER",
- "value_type": "TEXT"
}
]
}Fetches a customer by its unique identifier.
| id required | string Example: c123 Unique identifier of the customer |
{- "id": "ed18750a-0442-4be9-8c15-034e409ef225",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "company_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "original_id": "4r5Ty67",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone": "+33123456789",
- "company_name": "Acme Corp",
- "color": "BLUE",
- "icon_text": "JD",
- "address": {
- "address": "123 Main St",
- "zipcode": "75001",
- "city": "Paris",
- "country": "FR"
}, - "note": "VIP customer",
- "fidelity_card_number": "FIDELITY123",
- "test": true,
- "custom_fields": [
- {
- "value": "5th floor",
- "id": "customer_champpersotext1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "store floor number",
- "object_type": "CUSTOMER",
- "value_type": "TEXT"
}
]
}Deletes a customer by its unique identifier.
| id required | string Example: c123 Unique identifier of the customer |
{- "id": "ed18750a-0442-4be9-8c15-034e409ef225",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "company_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "original_id": "4r5Ty67",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone": "+33123456789",
- "company_name": "Acme Corp",
- "color": "BLUE",
- "icon_text": "JD",
- "address": {
- "address": "123 Main St",
- "zipcode": "75001",
- "city": "Paris",
- "country": "FR"
}, - "note": "VIP customer",
- "fidelity_card_number": "FIDELITY123",
- "test": true
}Deletes the connection between a customer and a custom field.
| id required | string <uuid> Example: ed18750a-0442-4be9-8c15-034e409ef225 Unique identifier of the customer |
| custom_field_id required | string Example: ba19240a-0442-4bd9-8c15-01b8409e1346__customer_champpersotext1 Unique identifier of the custom field to remove from the customer |
{- "id": "ed18750a-0442-4be9-8c15-034e409ef225"
}Requests a list of customers with optional filtering and sorting.
Customer request payload
| filter | any Filter criteria for customers with support for and/or/not operators |
object Sort criteria for customers | |
| limit | integer [ 1 .. 100 ] Maximum number of customers to return |
| next_token | string Token for pagination |
{- "filter": {
- "first_name": {
- "contains": "John"
}, - "and": [
- {
- "email": {
- "contains": "@example.com"
}
}, - {
- "created_at": {
- "gte": "2024-01-01T00:00:00Z"
}
}
], - "or": [
- {
- "company_name": {
- "eq": "Acme Corp"
}
}, - {
- "phone": {
- "starts_with": "+1"
}
}
]
}, - "sort": {
- "field": "first_name",
- "direction": "asc"
}, - "limit": 20,
- "next_token": "eyJpZCI6IjEyMyJ9"
}{- "items": [
- {
- "id": "ed18750a-0442-4be9-8c15-034e409ef225",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "company_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "original_id": "4r5Ty67",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone": "+33123456789",
- "company_name": "Acme Corp",
- "color": "BLUE",
- "icon_text": "JD",
- "address": {
- "address": "123 Main St",
- "zipcode": "75001",
- "city": "Paris",
- "country": "FR"
}, - "note": "VIP customer",
- "fidelity_card_number": "FIDELITY123",
- "test": true,
- "custom_fields": [
- {
- "value": "5th floor",
- "id": "customer_champpersotext1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "store floor number",
- "object_type": "CUSTOMER",
- "value_type": "TEXT"
}
]
}
], - "next_token": "xxx.yyy.zzz",
- "total": 10
}Categories allow you to organize and structure your product catalog. They facilitate cash register navigation, menu organization, and generation of sales reports by segment. Each product must belong to a category.
Warning: Categories belong to either the test or production environment based on the API key used to create them — they are not visible across modes. Deletion of a category that contains products is blocked by the system.
Logical hierarchy: Organize your categories intuitively for your teams (e.g. "Beverages", "Hot dishes", "Desserts").
Color codes: Use distinct colors for each category to facilitate visual identification at the cash register.
Explicit icons: Choose short and meaningful icon_text (emojis or abbreviations) for quick recognition.
Custom fields: Store category metadata (sales commission, target margin, etc.) in custom fields.
Quality images: Use representative images to improve user experience at the cash register.
Naming convention: Adopt a consistent and scalable nomenclature for your categories.
Optimal granularity: Neither too broad (difficult to manage) nor too specific (complex navigation) - find the right balance.
⚠️ Blocking case: It is impossible to delete a category that currently contains one or more products.
Behavior:
403 ForbiddenSolution:
Best practice: Before deleting a category, verify it is empty by using the product search API filtered by category.
Creates a new category in the desired catalog.
Category creation payload
| id | string or null Unique identifier of the category (auto-generated if not provided) |
| created_at | string or null ISO 8601 timestamp when the category was created |
| updated_at | string or null ISO 8601 timestamp when the category was last modified |
| name required | string Display name of the category used for product organization and navigation |
| color | string or null Visual color theme for the category in the user interface (hex color code or palette name) |
| icon_text | string or null Short text (usually 1-2 characters) or emoji displayed as category icon in the interface |
Array of objects Default: [] Additional custom data fields specific to your business needs for category management |
{- "id": "cat_123",
- "created_at": "2024-01-01T00:00:00Z",
- "updated_at": "2024-01-02T00:00:00Z",
- "name": "Beverages",
- "color": "#FF0000",
- "icon_text": "🍹",
- "custom_fields": [
- {
- "custom_field_id": "catalog__category_champpersonombre1",
- "value": "CODE_BARRE_ENTREPOT_1234"
}
]
}{- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Ma catégorie 1",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-07-07T08:52:01.492Z",
- "custom_fields": [
- {
- "value": "5th floor",
- "id": "category_champpersotext1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "store floor number",
- "key": "category_champpersotexte1",
- "object_type": "CATEGORY",
- "value_type": "TEXT"
}
]
}Updates specific fields of an existing category.
Category patch payload
| id required | string Category unique identifier |
| name | string Category name |
| color | string Color palette (hex or palette name) |
| icon_text | string Icon text for the category |
{- "id": "cat_123",
- "name": "Updated Beverages",
- "color": "#FF0000",
- "icon_text": "🍹"
}{- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Ma catégorie 1",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-07-07T08:52:01.492Z",
- "custom_fields": [
- {
- "value": "5th floor",
- "id": "category_champpersotext1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "store floor number",
- "key": "category_champpersotexte1",
- "object_type": "CATEGORY",
- "value_type": "TEXT"
}
]
}Requests a list of categories with optional filtering and sorting.
Category request payload
| filter | any Filter criteria for categories with support for and/or/not operators |
object Sort criteria for categories | |
| limit | integer [ 1 .. 100 ] Maximum number of categories to return |
| next_token | string Token for pagination |
{- "filter": {
- "name": {
- "contains": "catégorie"
}, - "and": [
- {
- "name": {
- "contains": "Beverages"
}
}, - {
- "created_at": {
- "gte": "2024-01-01T00:00:00Z"
}
}
], - "or": [
- {
- "name": {
- "eq": "Electronics"
}
}, - {
- "name": {
- "eq": "Books"
}
}
]
}, - "sort": {
- "field": "name",
- "direction": "asc"
}, - "limit": 20,
- "next_token": "eyJpZCI6IjEyMyJ9"
}{- "items": [
- {
- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Ma catégorie 1",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-07-07T08:52:01.492Z",
- "custom_fields": [
- {
- "value": "5th floor",
- "id": "category_champpersotext1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "store floor number",
- "key": "category_champpersotexte1",
- "object_type": "CATEGORY",
- "value_type": "TEXT"
}
]
}
], - "next_token": "xxx.yyy.zzz",
- "total": 10
}Fetches a category by its unique identifier.
| id required | string Example: c123 Unique identifier of the category |
{- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Ma catégorie 1",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-07-07T08:52:01.492Z",
- "custom_fields": [
- {
- "value": "5th floor",
- "id": "category_champpersotext1",
- "updated_at": "2025-07-01T08:04:17.042Z",
- "created_at": "2025-07-01T08:04:17.042Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "store floor number",
- "key": "category_champpersotexte1",
- "object_type": "CATEGORY",
- "value_type": "TEXT"
}
]
}Deletes a category by its unique identifier.
| id required | string Example: c123 Unique identifier of the category |
{- "id": "ea9f3f98-6f35-41e3-8c47-92fc313be733",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "name": "Ma catégorie 1",
- "color": "BLUE",
- "icon_text": "C",
- "created_at": "2025-06-30T15:32:27.290Z",
- "updated_at": "2025-07-07T08:52:01.492Z"
}Deletes the connection between a category and a custom field.
| id required | string <uuid> Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the category |
| custom_field_id required | string Example: ba19240a-0442-4bd9-8c15-01b8409e1346__category_champpersotexte1 Unique identifier of the custom field to remove from the category |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d"
}Custom Fields allow you to extend system objects (products, categories, customers, etc.) with data specific to your business needs. They offer the flexibility to add information not covered by standard fields.
Warning: Custom fields belong to either the test or production environment based on the API key used to create them — they are not visible across modes. Each field has a defined data type (text, number, boolean) that determines possible values.
Explicit naming: Choose clear field names that are understandable by the entire team.
Unique keys: Use consistent and durable system keys (key) for technical integration.
Appropriate types: Select the right value type (TEXT, NUMBER, BOOLEAN) according to intended use.
Organization by object: Logically group your fields by object type to simplify management.
Internal documentation: Document the usage and expected values of each custom field.
Scalability: Anticipate future needs to avoid multiplication of similar fields.
Business validation: Implement consistency checks on the application side for critical values.
Secure migration: Plan structure changes carefully to preserve existing data.
Performance: Limit the number of custom fields per object to maintain display performance.
Creates a new custom field for data collection
Custom field creation payload
| name required | string [ 1 .. 100 ] characters Human-readable name of the custom field displayed in the user interface |
| object_type required | string Enum: "PRODUCT" "PACK" "CATEGORY" "CASHBOOK" "CUSTOMER" Type of object this custom field applies to (PRODUCT for products, CATEGORY for categories, CUSTOMER for customers, etc.) |
| value_type required | string Enum: "TEXT" "DATE" "NUMBER" Data type of the custom field value (TEXT for text strings, NUMBER for numeric values, BOOLEAN for true/false, etc.) |
| key required | string non-empty Internal unique key used to identify this custom field in the system (must be unique within the object type) |
{- "name": "Brand",
- "object_type": "PRODUCT",
- "value_type": "TEXT",
- "key": "brand_field"
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Brand",
- "object_type": "PRODUCT",
- "value_type": "TEXT",
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}Retrieves a custom field by its unique identifier
| id required | string Example: 123e4567-e89b-12d3-a456-426614174000 Unique identifier of the custom field definition |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Brand",
- "object_type": "PRODUCT",
- "value_type": "TEXT",
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}Deletes a custom field by its unique identifier
| id required | string Example: 123e4567-e89b-12d3-a456-426614174000 Unique identifier of the custom field definition |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Brand",
- "object_type": "PRODUCT",
- "value_type": "TEXT",
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}Options define the available variants for products (size, color, ingredients, etc.). Each option contains several possible values with their respective price adjustments, allowing customization of items according to customer choices.
Warning: Options belong to either the test or production environment based on the API key used to create them — they are not visible across modes. Each option must contain at least one value. Prices are in cents.
Logical categories: Create options by type of variation (Size, Color, Material, Supplement).
Complete values: Define all possible variants with explicit names ("Small", "Medium", "Large").
Adjusted prices: Use additional_price for supplements (positive) or discounts (negative) linked to options.
Pricing consistency: Maintain consistent pricing logic between different values of the same option.
Combinable options: Consider possible combinations between options on the same product.
Stock management: Coordinate options with your stock management if variants have separate inventories.
Clear interface: Organize your options for intuitive selection at the cash register or customer interface.
Scalability: Structure your options to easily add new values without redesign.
Creates a new option in the desired catalog.
Option creation payload
| name required | string Name of the option category that defines the type of variant (e.g., "Size", "Color", "Material") |
required | Array of objects non-empty Available choices for this option that customers can select, each with its own pricing |
{- "name": "Size",
- "values": [
- {
- "name": "Small",
- "price": 0
}, - {
- "name": "Large",
- "price": 100
}
]
}{- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2024-04-01T12:00:00.000Z",
- "created_at": "2024-04-01T11:00:00.000Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "name": "Size",
- "values": [
- {
- "name": "Small",
- "price": 0
}, - {
- "name": "Large",
- "price": 100
}
]
}Updates specific fields of an existing option.
Option patch payload
| id required | string Option unique identifier |
| name | string Option name |
Array of objects Option values |
{- "id": "opt_123",
- "name": "Updated Size",
- "values": [
- {
- "name": "Large",
- "price": 200
}
]
}{- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2024-04-01T12:00:00.000Z",
- "created_at": "2024-04-01T11:00:00.000Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "name": "Size",
- "values": [
- {
- "name": "Small",
- "price": 0
}, - {
- "name": "Large",
- "price": 100
}
]
}Requests a list of options with optional filtering and sorting.
Option request payload
| filter | any Filter criteria for options with support for and/or/not operators |
object Sort criteria for options | |
| limit | integer [ 1 .. 100 ] Maximum number of options to return |
| next_token | string Token for pagination |
{- "filter": {
- "name": {
- "contains": "Size"
}, - "and": [
- {
- "created_at": {
- "gte": "2024-01-01T00:00:00Z"
}
}, - {
- "name": {
- "starts_with": "opt_"
}
}
], - "or": [
- {
- "name": {
- "eq": "Color"
}
}, - {
- "name": {
- "contains": "variant"
}
}
]
}, - "sort": {
- "field": "name",
- "direction": "asc"
}, - "limit": 20,
- "next_token": "eyJpZCI6IjEyMyJ9"
}{- "items": [
- {
- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2024-04-01T12:00:00.000Z",
- "created_at": "2024-04-01T11:00:00.000Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "name": "Size",
- "values": [
- {
- "name": "Small",
- "price": 0
}, - {
- "name": "Large",
- "price": 100
}
]
}
], - "next_token": "xxx.yyy.zzz",
- "total": 10
}Fetches a option by its unique identifier.
| id required | string <uuid> Example: 0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726 Unique identifier of the option |
{- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2024-04-01T12:00:00.000Z",
- "created_at": "2024-04-01T11:00:00.000Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "name": "Size",
- "values": [
- {
- "name": "Small",
- "price": 0
}, - {
- "name": "Large",
- "price": 100
}
]
}Deletes a option by its unique identifier.
| id required | string <uuid> Example: 0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726 Unique identifier of the option |
{- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "updated_at": "2024-04-01T12:00:00.000Z",
- "created_at": "2024-04-01T11:00:00.000Z",
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "name": "Size",
- "values": [
- {
- "name": "Small",
- "price": 0
}, - {
- "name": "Large",
- "price": 100
}
]
}Packs are product bundles that allow grouping several items into a single sellable element. A pack can contain different product variations with specific quantities and price adjustments. This resource is essential for creating combined offers, menus, or kits in your cash register system.
Warning: Packs belong to either the test or production environment based on the API key used to create them — they are not visible across modes. Make sure to create your packs with the correct mode according to your environment.
Consistent naming: Use a clear naming convention for your packs (e.g. "Menu [Name]", "Pack [Season]")
Price management: The pack's sell_price replaces individual pricing. Use additional_price in options for fine adjustments.
Test mode: Always test your packs in test mode before deploying to production.
Multiple variations: Use multiple variations to offer choices (size, quality level, etc.)
Custom fields: Use custom fields to store business-specific metadata (allergens, ingredients, etc.)
Creates a new pack in the desired catalog.
Pack creation payload
| name required | string Display name of the product bundle shown to customers |
| color | string Enum: "GREEN" "LIME" "RED" "BLUE" "YELLOW" "ORANGE" "PINK" "PURPLE" "TURQUOISE" "GREY" "BROWN" "BLACK" Visual color theme for the pack in the user interface |
| icon_text | string Short text (usually initials) displayed as pack icon in the interface |
| photo | string URL of the main pack image displayed to customers |
| barcode | string Barcode number for the complete pack for inventory and scanning |
| reference | string Internal reference code for the pack used for identification and inventory |
| sell_price | number Total retail price for the complete pack in cents (overrides individual product pricing) |
required | Array of objects non-empty Different combinations of products that can be included in this pack bundle |
Array of objects Default: [] Additional custom data fields specific to your business needs for pack management |
{- "name": "Summer Pack",
- "color": "BLUE",
- "icon_text": "SP",
- "barcode": "1234567890",
- "reference": "PACK-001",
- "sell_price": 2500,
- "pack_variations": [
- {
- "options": [
- {
- "product_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "quantity": 2,
- "additional_price": 500
}
]
}
], - "custom_fields": [
- {
- "custom_field_id": "catalog__pack_champpersotext1",
- "value": "Special pack for summer"
}
]
}{- "id": "ed18750a-0442-4be9-8c15-034e409ef225",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "catalog_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "test": true,
- "name": "Summer Pack",
- "color": "BLUE",
- "icon_text": "SP",
- "barcode": "1234567890",
- "reference": "PACK-001",
- "sell_price": 2500,
- "pack_variations": [
- {
- "options": [
- {
- "product_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "quantity": 2,
- "additional_price": 500
}
]
}
], - "custom_fields": [
- {
- "id": "catalog__pack_champpersotext1",
- "value": "Special pack for summer"
}
]
}Updates specific fields of an existing pack.
Pack patch payload
| id required | string Pack unique identifier |
| name | string Pack name |
| barcode | string or null Pack barcode |
| reference | string or null Pack reference |
| sell_price | number Pack sell price (in cents) |
Array of objects Pack variations |
{- "id": "pack_123",
- "name": "Updated Combo Pack",
- "barcode": "1234567890123",
- "reference": "PACK-001",
- "sell_price": 2500,
- "pack_variations": [
- {
- "options": [
- {
- "product_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "quantity": 2,
- "additional_price": 500
}
]
}
]
}{- "id": "ed18750a-0442-4be9-8c15-034e409ef225",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "catalog_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "test": true,
- "name": "Summer Pack",
- "color": "BLUE",
- "icon_text": "SP",
- "barcode": "1234567890",
- "reference": "PACK-001",
- "sell_price": 2500,
- "pack_variations": [
- {
- "options": [
- {
- "product_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "quantity": 2,
- "additional_price": 500
}
]
}
], - "custom_fields": [
- {
- "id": "catalog__pack_champpersotext1",
- "value": "Special pack for summer"
}
]
}Fetches a pack by its unique identifier.
| id required | string Example: ed18750a-0442-4be9-8c15-034e409ef225 Unique identifier of the pack |
{- "id": "ed18750a-0442-4be9-8c15-034e409ef225",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "catalog_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "test": true,
- "name": "Summer Pack",
- "color": "BLUE",
- "icon_text": "SP",
- "barcode": "1234567890",
- "reference": "PACK-001",
- "sell_price": 2500,
- "pack_variations": [
- {
- "options": [
- {
- "product_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "quantity": 2,
- "additional_price": 500
}
]
}
], - "custom_fields": [
- {
- "id": "catalog__pack_champpersotext1",
- "value": "Special pack for summer"
}
]
}Deletes a pack by its unique identifier.
| id required | string Example: ed18750a-0442-4be9-8c15-034e409ef225 Unique identifier of the pack |
{- "id": "ed18750a-0442-4be9-8c15-034e409ef225",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "catalog_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "test": true,
- "name": "Summer Pack",
- "color": "BLUE",
- "icon_text": "SP",
- "barcode": "1234567890",
- "reference": "PACK-001",
- "sell_price": 2500,
- "pack_variations": [
- {
- "options": [
- {
- "product_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "quantity": 2,
- "additional_price": 500
}
]
}
], - "custom_fields": [
- {
- "id": "catalog__pack_champpersotext1",
- "value": "Special pack for summer"
}
]
}Deletes the connection between a pack and a custom field.
| id required | string <uuid> Example: ed18750a-0442-4be9-8c15-034e409ef225 Unique identifier of the pack |
| custom_field_id required | string Example: ba19240a-0442-4bd9-8c15-01b8409e1346__pack_champpersotext1 Unique identifier of the custom field to remove from the pack |
{- "id": "ed18750a-0442-4be9-8c15-034e409ef225"
}Requests a list of packs with optional filtering and sorting.
Pack request payload
| filter | any Filter criteria for packs with support for and/or/not operators |
object Sort criteria for packs | |
| limit | integer [ 1 .. 100 ] Maximum number of packs to return |
| next_token | string Token for pagination |
{- "filter": {
- "name": {
- "contains": "Summer"
}, - "color": {
- "eq": "BLUE"
}, - "and": [
- {
- "sell_price": {
- "gte": 1000
}
}, - {
- "created_at": {
- "gte": "2024-01-01T00:00:00Z"
}
}
], - "or": [
- {
- "barcode": {
- "starts_with": "789"
}
}, - {
- "reference": {
- "contains": "PACK"
}
}
]
}, - "sort": {
- "field": "name",
- "direction": "asc"
}, - "limit": 20,
- "next_token": "eyJpZCI6IjEyMyJ9"
}{- "items": [
- {
- "id": "ed18750a-0442-4be9-8c15-034e409ef225",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "catalog_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "test": true,
- "name": "Summer Pack",
- "color": "BLUE",
- "icon_text": "SP",
- "barcode": "1234567890",
- "reference": "PACK-001",
- "sell_price": 2500,
- "pack_variations": [
- {
- "options": [
- {
- "product_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "quantity": 2,
- "additional_price": 500
}
]
}
], - "custom_fields": [
- {
- "id": "catalog__pack_champpersotext1",
- "value": "Special pack for summer"
}
]
}
], - "next_token": "xxx.yyy.zzz",
- "total": 10
}Tags allow labeling and classifying products in a way that cuts across categories. They facilitate search, filtering, and creation of custom business groupings for sales analysis and catalog management.
Warning: Tags belong to either the test or production environment based on the API key used to create them — they are not visible across modes. Tags must be associated with products through specific connections.
Consistent system: Define a clear tagging strategy (origin, seasonality, promotion, allergens, etc.).
Standardized names: Use a uniform naming convention to avoid duplicates ("Organic", "Vegetarian", "Gluten-Free").
Functional tags: Create tags useful for your business processes (promotion, new product,...).
Reasonable limit: Don't overload your products with too many tags to maintain readability.
Temporary tags: Use tags for temporary campaigns ("Summer Sale 2024", "Black Friday").
Optimized search: Leverage tags to create advanced search filters in your sales interface.
Targeted analysis: Use tags to generate sales reports by segment or product characteristic.
Maintenance: Periodically review your tags to remove obsolete ones and maintain relevance.
Creates a new tag for organizing products
Tag creation payload
| name required | string [ 1 .. 100 ] characters Name of the tag used for product organization and filtering (e.g., "Premium", "Seasonal", "New Arrival") |
{- "name": "Premium"
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium",
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}Updates specific fields of an existing tag.
Tag patch payload
| id required | string Tag unique identifier |
| name | string Tag name |
{- "id": "tag_123",
- "name": "Updated Tag"
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium",
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}Retrieves a tag by its unique identifier
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 Unique identifier of the tag |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium",
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}Deletes a tag by its unique identifier
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 Unique identifier of the tag |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium",
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}Requests a list of tags with optional filtering and sorting.
Tag request payload
| filter | any Filter criteria for tags with support for and/or/not operators |
object Sort criteria for tags | |
| limit | integer [ 1 .. 100 ] Maximum number of tags to return |
| next_token | string Token for pagination |
{- "filter": {
- "name": {
- "contains": "Premium"
}, - "and": [
- {
- "created_at": {
- "gte": "2024-01-01T00:00:00Z"
}
}, - {
- "name": {
- "starts_with": "tag_"
}
}
], - "or": [
- {
- "name": {
- "eq": "featured"
}
}, - {
- "name": {
- "contains": "special"
}
}
]
}, - "sort": {
- "field": "name",
- "direction": "asc"
}, - "limit": 20,
- "next_token": "eyJpZCI6IjEyMyJ9"
}{- "items": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium",
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}
], - "next_token": "xxx.yyy.zzz",
- "total": 10
}Taxes define the tax rates applied to products and packs in your cash register system. Each product must be associated with a tax rate for correct calculation of tax-inclusive amounts and generation of tax reports.
Warning: Taxes belong to either the test or production environment based on the API key used to create them — they are not visible across modes. Rates are expressed in basis points (1 basis point = 0.01%), so 1900 = 19% VAT.
Standard rates: Create the common tax rates for your country (VAT 20%, 10%, 5.5%, etc.) from initialization.
Explicit naming: Use clear names like "VAT 20%", "Reduced VAT 5.5%" to facilitate selection.
Basis points: Follow the basis point format (2000 for 20%, 550 for 5.5%) to avoid calculation errors.
Tax compliance: Verify conformity of your rates with current local tax regulations.
Regulatory changes: Create new rates rather than modifying existing ones during regulatory changes.
Archiving: Keep old tax rates even when obsolete for sales history and accounting.
Validation: Test your tax calculations with reference amounts before production deployment.
⚠️ Blocking case: It is impossible to delete a tax rate that is currently associated with one or more products.
Behavior:
403 ForbiddenSolution:
Best practice: Before deleting a tax rate, use the search API to verify that no product references it.
Creates a new tax rate for products
| rate required | number [ 0 .. 10000 ] Tax rate in basis points where 1 basis point = 0.01% (e.g., 1900 for 19% VAT, 2000 for 20% sales tax) |
{- "rate": 1900
}{- "rate": 1900
}Updates specific fields of an existing tax.
Tax patch payload
| id required | string Tax unique identifier |
| rate | number >= 0 Tax rate (in basis points, e.g. 2000 = 20%) |
{- "id": "tax_123",
- "rate": 2100
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "rate": 1900,
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}Retrieves a tax by its unique identifier
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 Unique identifier of the tax rate configuration |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "rate": 1900,
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}Deletes a tax by its unique identifier
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 Unique identifier of the tax rate configuration |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "rate": 1900,
- "test": false,
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-01-01T00:00:00Z",
- "catalog_id": "456e7890-e89b-12d3-a456-426614174001"
}Cashbooks represent work sessions at a point of sale, from opening to closing. They group all sales and payments from a period, enable fund control, and ensure accounting traceability of operations.
Warning: Cashbooks belong to either the test or production environment based on the API key used to create them — they are not visible across modes. A cashbook can only be closed after reconciliation of expected and actual amounts.
Single session: Only one open cashbook per point of sale to avoid accounting conflicts.
Controlled opening: Precisely document the initial cash drawer amount by payment method.
Tracked movements: Record all cash additions/withdrawals with explicit reasons.
Rigorous closing: Verify concordance between expected and counted amounts before closing.
Legal archiving: Maintain cashbook history according to current accounting obligations.
Bank reconciliation: Use cashbook data to facilitate daily bank reconciliations.
Creates a new cashbook with the provided data.
Cashbook creation payload
| shop_id required | string Unique identifier of the shop where this cashbook operates |
| source_id required | string Identifier of the POS terminal or system creating this cashbook |
| source_name required | string Human-readable name of the POS terminal or system for identification |
| number required | number Sequential number of this cashbook session for the day or period |
| state required | string Enum: "OPEN" "CLOSED" Initial state of the cashbook - typically OPEN when creating a new session |
| total | number Initial total sales amount for this cashbook session in cents |
| total_tax_free | number Initial total amount excluding taxes for this session in cents |
| min_sale_number | number Starting minimum sale number for this cashbook session |
| max_sale_number | number Starting maximum sale number for this cashbook session |
| sales_count | number Initial count of sales for this session |
| min_payment_number | number Starting minimum payment number for this cashbook session |
| max_payment_number | number Starting maximum payment number for this cashbook session |
| payments_count | number Initial count of payments for this session |
| opened_at required | string ISO 8601 timestamp when the cashbook session is opened |
| closed_at | string ISO 8601 timestamp when the cashbook session will be closed (optional at creation) |
| note | string Optional notes or comments about this cashbook session for reference |
| opening_seller_id | string Unique identifier of the seller opening this cashbook |
| closing_seller_id | string Unique identifier of the seller who will close this cashbook (optional at creation) |
| total_expected | number Expected total cash amount that should be in the drawer at closing in cents |
| total_difference | number Difference between expected and actual cash amounts in cents (calculated at closing) |
Array of objects Initial cash movements (additions or removals) for this cashbook session | |
Array of objects Starting cash amounts by payment method at the beginning of the cashbook session | |
Array of objects Final cash amounts by payment method at the end of the cashbook session (optional at creation) | |
Array of objects Additional custom data fields specific to your business needs for cashbook management |
{- "shop_id": "shop_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "source_id": "pos_terminal_001",
- "source_name": "Main Register",
- "number": 1,
- "state": "OPEN",
- "total": 0,
- "total_tax_free": 0,
- "min_sale_number": 1001,
- "max_sale_number": 1000,
- "sales_count": 0,
- "min_payment_number": 2001,
- "max_payment_number": 2000,
- "payments_count": 0,
- "opened_at": "2023-01-01T09:00:00Z",
- "closed_at": "2023-01-01T18:00:00Z",
- "note": "Starting new shift",
- "opening_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "closing_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "total_expected": 15000,
- "total_difference": 0,
- "movements": [
- {
- "type": "IN",
- "amount": 5000,
- "motive": "Starting cash float",
- "created_at": "2023-01-01T09:00:00Z"
}
], - "opening_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 15000
}
], - "closing_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 60670
}
], - "custom_fields": [
- {
- "custom_field_id": "cashbook_register_number",
- "name": "Register Number",
- "value_type": "TEXT",
- "value": "Register #3"
}
]
}{- "id": "cb_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "original_id": "CB-2023-001",
- "updated_at": "2023-01-01T18:00:00Z",
- "created_at": "2023-01-01T09:00:00Z",
- "deprecated": false,
- "company_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "shop_id": "shop_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "source_id": "pos_terminal_001",
- "source_name": "Main Register",
- "number": 1,
- "state": "OPEN",
- "total": 45670,
- "total_tax_free": 38000,
- "min_sale_number": 1001,
- "max_sale_number": 1045,
- "sales_count": 45,
- "min_payment_number": 2001,
- "max_payment_number": 2087,
- "payments_count": 87,
- "opened_at": "2023-01-01T09:00:00Z",
- "closed_at": "2023-01-01T18:00:00Z",
- "opening_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "closing_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "note": "Busy Saturday shift",
- "total_expected": 45000,
- "total_difference": 670,
- "opening_seller": {
- "id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "closing_seller": {
- "id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "movements": [
- {
- "type": "IN",
- "amount": 2500,
- "motive": "Starting cash float",
- "created_at": "2023-01-01T09:00:00Z"
}
], - "opening_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 15000
}
], - "closing_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 15000
}
], - "custom_fields": [
- {
- "custom_field_id": "cashbook_register_number",
- "name": "Register Number",
- "value_type": "TEXT",
- "value": "Register #3"
}
], - "stats": {
- "number_of_sales": 45,
- "min_sale_number": 1001,
- "max_sale_number": 1045,
- "sales_count": 45,
- "max_payment_number": 2087,
- "min_payment_number": 2001,
- "payments_count": 87
}
}Retrieves a cashbook by its unique identifier.
| id required | string <uuid> Example: cb_ba19240a-0442-4bd9-8c15-01b8409e1346 Cashbook ID |
{- "id": "cb_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "original_id": "CB-2023-001",
- "updated_at": "2023-01-01T18:00:00Z",
- "created_at": "2023-01-01T09:00:00Z",
- "deprecated": false,
- "company_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "shop_id": "shop_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "source_id": "pos_terminal_001",
- "source_name": "Main Register",
- "number": 1,
- "state": "OPEN",
- "total": 45670,
- "total_tax_free": 38000,
- "min_sale_number": 1001,
- "max_sale_number": 1045,
- "sales_count": 45,
- "min_payment_number": 2001,
- "max_payment_number": 2087,
- "payments_count": 87,
- "opened_at": "2023-01-01T09:00:00Z",
- "closed_at": "2023-01-01T18:00:00Z",
- "opening_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "closing_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "note": "Busy Saturday shift",
- "total_expected": 45000,
- "total_difference": 670,
- "opening_seller": {
- "id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "closing_seller": {
- "id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "movements": [
- {
- "type": "IN",
- "amount": 2500,
- "motive": "Starting cash float",
- "created_at": "2023-01-01T09:00:00Z"
}
], - "opening_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 15000
}
], - "closing_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 15000
}
], - "custom_fields": [
- {
- "custom_field_id": "cashbook_register_number",
- "name": "Register Number",
- "value_type": "TEXT",
- "value": "Register #3"
}
], - "stats": {
- "number_of_sales": 45,
- "min_sale_number": 1001,
- "max_sale_number": 1045,
- "sales_count": 45,
- "max_payment_number": 2087,
- "min_payment_number": 2001,
- "payments_count": 87
}
}Updates an existing cashbook with the provided data.
| id required | string <uuid> Cashbook ID |
Cashbook update payload
| id required | string <uuid> Unique identifier of the cashbook |
| state | string Enum: "OPEN" "CLOSED" Updated state of the cashbook - use CLOSED to finalize the session |
| total | number Updated total sales amount processed during this cashbook session in cents |
| total_tax_free | number Updated total amount excluding taxes processed during this session in cents |
| min_sale_number | number Updated lowest sale number recorded in this cashbook session |
| max_sale_number | number Updated highest sale number recorded in this cashbook session |
| sales_count | number Updated total number of sales processed in this session |
| min_payment_number | number Updated lowest payment number recorded in this cashbook session |
| max_payment_number | number Updated highest payment number recorded in this cashbook session |
| payments_count | number Updated total number of payments processed in this session |
| closed_at | string ISO 8601 timestamp when the cashbook session was closed |
| note | string Updated notes or comments about this cashbook session for reference |
| closing_seller_id | string Unique identifier of the seller closing this cashbook |
| total_expected | number Updated expected total cash amount that should be in the drawer at closing in cents |
| total_difference | number Updated difference between expected and actual cash amounts at closing in cents (positive = surplus, negative = shortage) |
Array of objects Updated list of cash movements (additions or removals) during this cashbook session | |
Array of objects Updated final cash amounts by payment method at the end of the cashbook session | |
Array of objects Updated custom data fields specific to your business needs for cashbook management |
{- "id": "0dd7eeee-3f87-4bd7-a950-b1f1b7fb8726",
- "state": "CLOSED",
- "total": 45670,
- "total_tax_free": 38000,
- "min_sale_number": 1001,
- "max_sale_number": 1045,
- "sales_count": 45,
- "min_payment_number": 2001,
- "max_payment_number": 2087,
- "payments_count": 87,
- "closed_at": "2023-01-01T18:00:00Z",
- "note": "Successful busy day shift",
- "closing_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "total_expected": 45000,
- "total_difference": 670,
- "movements": [
- {
- "type": "OUT",
- "amount": -1000,
- "motive": "Cash withdrawal",
- "created_at": "2023-01-01T15:30:00Z"
}
], - "closing_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 60670
}
], - "custom_fields": [
- {
- "custom_field_id": "cashbook_register_number",
- "name": "Register Number",
- "value_type": "TEXT",
- "value": "Register #3"
}
]
}{- "id": "cb_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "original_id": "CB-2023-001",
- "updated_at": "2023-01-01T18:00:00Z",
- "created_at": "2023-01-01T09:00:00Z",
- "deprecated": false,
- "company_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "shop_id": "shop_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "source_id": "pos_terminal_001",
- "source_name": "Main Register",
- "number": 1,
- "state": "OPEN",
- "total": 45670,
- "total_tax_free": 38000,
- "min_sale_number": 1001,
- "max_sale_number": 1045,
- "sales_count": 45,
- "min_payment_number": 2001,
- "max_payment_number": 2087,
- "payments_count": 87,
- "opened_at": "2023-01-01T09:00:00Z",
- "closed_at": "2023-01-01T18:00:00Z",
- "opening_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "closing_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "note": "Busy Saturday shift",
- "total_expected": 45000,
- "total_difference": 670,
- "opening_seller": {
- "id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "closing_seller": {
- "id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "movements": [
- {
- "type": "IN",
- "amount": 2500,
- "motive": "Starting cash float",
- "created_at": "2023-01-01T09:00:00Z"
}
], - "opening_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 15000
}
], - "closing_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 15000
}
], - "custom_fields": [
- {
- "custom_field_id": "cashbook_register_number",
- "name": "Register Number",
- "value_type": "TEXT",
- "value": "Register #3"
}
], - "stats": {
- "number_of_sales": 45,
- "min_sale_number": 1001,
- "max_sale_number": 1045,
- "sales_count": 45,
- "max_payment_number": 2087,
- "min_payment_number": 2001,
- "payments_count": 87
}
}Deletes a cashbook by its unique identifier.
| id required | string <uuid> Example: cb_ba19240a-0442-4bd9-8c15-01b8409e1346 Cashbook ID |
{- "id": "cb_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "success": true
}Retrieves a list of cashbooks based on the provided filters.
Cashbook request payload with filters
object Filter cashbooks by creation date range using ISO 8601 timestamps | |
object Filter cashbooks by last update date range using ISO 8601 timestamps | |
object Filter cashbooks by opening date range using ISO 8601 timestamps | |
object Filter cashbooks by closing date range using ISO 8601 timestamps | |
object Filter cashbooks by POS terminal or system name using string operations | |
object Filter cashbooks by notes content using string search operations | |
object Filter cashbooks by sequential number using numeric comparisons | |
object Filter cashbooks by total sales amount range in cents using numeric comparisons | |
object Filter cashbooks by tax-free total amount range in cents using numeric comparisons | |
object Filter cashbooks by minimum sale number range using numeric comparisons | |
object Filter cashbooks by maximum sale number range using numeric comparisons | |
object Filter cashbooks by sales count range using numeric comparisons | |
object Filter cashbooks by minimum payment number range using numeric comparisons | |
object Filter cashbooks by maximum payment number range using numeric comparisons | |
object Filter cashbooks by payments count range using numeric comparisons | |
object Filter cashbooks by expected total amount range in cents using numeric comparisons | |
object Filter cashbooks by cash difference range in cents using numeric comparisons (positive = surplus, negative = shortage) | |
object Filter cashbooks by state (OPEN for active sessions, CLOSED for completed sessions) | |
object Filter cashbooks by shop identifier using exact match or list operations | |
object Filter cashbooks by POS terminal or system identifier using exact match or list operations | |
object Filter cashbooks by opening seller identifier using exact match or list operations | |
object Filter cashbooks by closing seller identifier using exact match or list operations | |
object Sort criteria for cashbooks by field and direction (ascending or descending) | |
| limit | number [ 1 .. 100 ] Default: 20 Maximum number of cashbooks to return per page (1-100) |
| next_token | string Pagination token for retrieving the next page of results |
{- "created_at": {
- "gte": "2023-01-01T00:00:00Z",
- "lte": "2023-01-31T23:59:59Z"
}, - "updated_at": {
- "gte": "2023-01-01T00:00:00Z",
- "lte": "2023-01-31T23:59:59Z"
}, - "opened_at": {
- "gte": "2023-01-01T00:00:00Z",
- "lte": "2023-01-31T23:59:59Z"
}, - "closed_at": {
- "gte": "2023-01-01T00:00:00Z",
- "lte": "2023-01-31T23:59:59Z"
}, - "source_name": {
- "eq": "Main Register"
}, - "note": {
- "contains": "busy"
}, - "number": {
- "eq": 1
}, - "total": {
- "gte": 10000,
- "lte": 100000
}, - "total_tax_free": {
- "gte": 8000,
- "lte": 80000
}, - "min_sale_number": {
- "gte": 1000
}, - "max_sale_number": {
- "lte": 2000
}, - "sales_count": {
- "gte": 10,
- "lte": 100
}, - "min_payment_number": {
- "gte": 2000
}, - "max_payment_number": {
- "lte": 3000
}, - "payments_count": {
- "gte": 20,
- "lte": 200
}, - "total_expected": {
- "gte": 10000
}, - "total_difference": {
- "gte": -1000,
- "lte": 1000
}, - "state": {
- "eq": "OPEN"
}, - "shop_id": {
- "eq": "shop_ba19240a-0442-4bd9-8c15-01b8409e1346"
}, - "source_id": {
- "eq": "pos_terminal_001"
}, - "opening_seller_id": {
- "eq": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346"
}, - "closing_seller_id": {
- "eq": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346"
}, - "sort": {
- "field": "opened_at",
- "direction": "desc"
}, - "limit": 20,
- "next_token": "eyJpZCI6IjEyMyJ9"
}{- "items": [
- {
- "id": "cb_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "original_id": "CB-2023-001",
- "updated_at": "2023-01-01T18:00:00Z",
- "created_at": "2023-01-01T09:00:00Z",
- "deprecated": false,
- "company_id": "ba18760a-0442-4be9-8c15-01b8409ea236",
- "shop_id": "shop_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": false,
- "source_id": "pos_terminal_001",
- "source_name": "Main Register",
- "number": 1,
- "state": "OPEN",
- "total": 45670,
- "total_tax_free": 38000,
- "min_sale_number": 1001,
- "max_sale_number": 1045,
- "sales_count": 45,
- "min_payment_number": 2001,
- "max_payment_number": 2087,
- "payments_count": 87,
- "opened_at": "2023-01-01T09:00:00Z",
- "closed_at": "2023-01-01T18:00:00Z",
- "opening_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "closing_seller_id": "seller_ba19240a-0442-4bd9-8c15-01b8409e1346",
- "note": "Busy Saturday shift",
- "total_expected": 45000,
- "total_difference": 670,
- "opening_seller": {
- "id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "closing_seller": {
- "id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "updated_at": "2023-01-02T00:00:00Z",
- "created_at": "2023-01-01T00:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "movements": [
- {
- "type": "IN",
- "amount": 2500,
- "motive": "Starting cash float",
- "created_at": "2023-01-01T09:00:00Z"
}
], - "opening_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 15000
}
], - "closing_cash_fund": [
- {
- "payment_method_id": "pm_cash_eur",
- "payment_method_name": "Cash EUR",
- "payment_method_type": "CASH",
- "total": 15000
}
], - "custom_fields": [
- {
- "custom_field_id": "cashbook_register_number",
- "name": "Register Number",
- "value_type": "TEXT",
- "value": "Register #3"
}
], - "stats": {
- "number_of_sales": 45,
- "min_sale_number": 1001,
- "max_sale_number": 1045,
- "sales_count": 45,
- "max_payment_number": 2087,
- "min_payment_number": 2001,
- "payments_count": 87
}
}
], - "next_token": "eyJpZCI6IjEyMyJ9",
- "total": 25
}Payments record financial transactions associated with sales in your cash register system. They allow tracking collections by payment method, managing refunds, and ensuring accounting reconciliation.
Warning: Payments belong to either the test or production environment based on the API key used to create them — they are not visible across modes. A payment always belongs to a sale and uses a defined payment method.
Complete traceability: Record all payments with their method, amount, and precise timestamp.
Consistent links: Ensure each payment is correctly linked to its parent sale.
Standardized methods: Use consistent payment method identifiers (cash, credit card, check, etc.).
Error management: Document failed payments with their reasons for customer service.
Daily reconciliation: Verify concordance between recorded payments and bank deposits.
Fetches a payment by its unique identifier.
| id required | string <uuid> Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890 Payment ID |
{- "id": "pay_123456789",
- "original_id": "orig_987654321",
- "updated_at": "2024-01-02T14:30:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "comp_abc123def456",
- "shop_id": "shop_xyz789uvw012",
- "test": false,
- "sale_id": "sale_456789abc123",
- "source_id": "src_pos_terminal_01",
- "source_name": "POS Terminal #1",
- "state": "VALID",
- "type": "IN",
- "date": "2024-01-01T10:00:00Z",
- "number": 1001,
- "payment_method_id": "pm_cash_001",
- "payment_method_name": "Cash",
- "payment_method_type": "CASH",
- "source_payment_id": "sp_external_123456",
- "customer_movement_id": "cm_abc123def456",
- "cashbook_id": "cb_main_register",
- "amount": 1200,
- "total_tax_free": 1000,
- "total_tax": 200,
- "integration_payment_id": "stripe_pi_1234567890",
- "integration_refund_id": "stripe_re_0987654321",
- "taxes": [
- {
- "inclusive": true,
- "rate": 2000,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "total": 1200,
- "total_tax": 200,
- "total_tax_free": 1000
}
]
}Retrieves a list of payments based on specified filters and sorting criteria.
Payment request payload with filters and pagination options
object Filter payments by creation date range using comparison operators (gte, lte, gt, lt, eq) | |
object Filter payments by last update date range using comparison operators | |
object Filter payments by processing date range using comparison operators | |
object Filter payments by source name using string comparison operators (contains, eq, startsWith, endsWith) | |
object Filter payments by sequential number using numeric comparison operators | |
object Filter payments by amount in cents using numeric comparison operators | |
object Filter payments by tax-free amount in cents using numeric comparison operators | |
object Filter payments by tax amount in cents using numeric comparison operators | |
object Filter payments by processing state using enum comparison operators (in, eq) | |
object Filter payments by transaction type using enum comparison operators | |
object Filter payments by payment method type using enum comparison operators | |
object Filter payments by shop identifier using ID comparison operators | |
object Filter payments by sale identifier using ID comparison operators | |
object Filter payments by source identifier using ID comparison operators | |
object Filter payments by payment method identifier using ID comparison operators | |
object Filter payments by source payment identifier using ID comparison operators | |
object Filter payments by customer movement identifier using ID comparison operators | |
object Filter payments by cashbook identifier using ID comparison operators | |
object Filter payments by external integration payment identifier using ID comparison operators | |
object Filter payments by external integration refund identifier using ID comparison operators | |
object Sorting configuration to order the payment results | |
| limit | number [ 1 .. 100 ] Default: 20 Maximum number of payments to return per page (1-100) |
| next_token | string Pagination token for retrieving the next page of results |
{- "created_at": {
- "gte": "2024-01-01T00:00:00Z",
- "lte": "2024-01-31T23:59:59Z"
}, - "updated_at": {
- "gte": "2024-01-01T00:00:00Z"
}, - "date": {
- "gte": "2024-01-01T00:00:00Z",
- "lte": "2024-01-31T23:59:59Z"
}, - "source_name": {
- "contains": "POS"
}, - "number": {
- "gte": 1000,
- "lte": 2000
}, - "amount": {
- "gte": 1000,
- "lte": 5000
}, - "total_tax_free": {
- "gte": 800,
- "lte": 4000
}, - "total_tax": {
- "gte": 100,
- "lte": 800
}, - "state": {
- "in": [
- "COMPLETED",
- "PENDING"
]
}, - "type": {
- "eq": "PAYMENT"
}, - "payment_method_type": {
- "in": [
- "CASH",
- "CARD"
]
}, - "shop_id": {
- "eq": "shop_xyz789uvw012"
}, - "sale_id": {
- "eq": "sale_456789abc123"
}, - "source_id": {
- "eq": "src_pos_terminal_01"
}, - "payment_method_id": {
- "eq": "pm_cash_001"
}, - "source_payment_id": {
- "eq": "sp_external_123456"
}, - "customer_movement_id": {
- "eq": "cm_abc123def456"
}, - "cashbook_id": {
- "eq": "cb_main_register"
}, - "integration_payment_id": {
- "eq": "stripe_pi_1234567890"
}, - "integration_refund_id": {
- "eq": "stripe_re_0987654321"
}, - "sort": [
- {
- "field": "created_at",
- "direction": "desc"
}
], - "limit": 20,
- "next_token": "eyJpZCI6IjEyMyJ9"
}{- "items": [
- {
- "id": "pay_123456789",
- "original_id": "orig_987654321",
- "updated_at": "2024-01-02T14:30:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "comp_abc123def456",
- "shop_id": "shop_xyz789uvw012",
- "test": false,
- "sale_id": "sale_456789abc123",
- "source_id": "src_pos_terminal_01",
- "source_name": "POS Terminal #1",
- "state": "VALID",
- "type": "IN",
- "date": "2024-01-01T10:00:00Z",
- "number": 1001,
- "payment_method_id": "pm_cash_001",
- "payment_method_name": "Cash",
- "payment_method_type": "CASH",
- "source_payment_id": "sp_external_123456",
- "customer_movement_id": "cm_abc123def456",
- "cashbook_id": "cb_main_register",
- "amount": 1200,
- "total_tax_free": 1000,
- "total_tax": 200,
- "integration_payment_id": "stripe_pi_1234567890",
- "integration_refund_id": "stripe_re_0987654321",
- "taxes": [
- {
- "inclusive": true,
- "rate": 2000,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "total": 1200,
- "total_tax": 200,
- "total_tax_free": 1000
}
]
}
], - "next_token": "eyJpZCI6IjEyNCJ9",
- "total": 50
}Sales represent complete commercial transactions in your cash register system. They include products/packs sold, discounts applied, payments made, and all details necessary for accounting and commercial tracking.
Warning: Sales belong to either the test or production environment based on the API key used to create them — they are not visible across modes. A sale can have multiple states (open, closed, refunded) and distinct payment statuses.
Consistent states: Properly manage state transitions (open → closed → paid) according to your workflow.
Explanatory notes: Use the note field to document particular circumstances of sale.
Legal archiving: Maintain sales history according to legal obligations in your jurisdiction.
Creates a new sale in the desired company.
Sale creation payload
| original_id | string Original sale identifier if this is a copy or migration from another system - used for data traceability and audit purposes |
| shop_id required | string Unique identifier of the shop where the sale is taking place - determines inventory, pricing, and tax rules |
| source_id required | string Unique identifier of the source system or device creating the sale - used for tracking transaction origins |
| source_name required | string Human-readable name of the source system or device - helps staff identify which terminal processed the sale |
| cashbook_id | string Unique identifier of the cashbook associated with this sale - determines cash flow tracking and reporting |
| name | string Custom name or description for the sale transaction - useful for restaurant table management or special orders |
| number | number Sequential number assigned to the sale for reference - used for receipt numbering and record keeping |
| state required | string Enum: "OPEN" "AVAILABLE" "CLOSED" "DELETED" Current state of the sale (OPEN for in-progress, AVAILABLE for ready to pay, CLOSED for completed, DELETED for cancelled) |
| refund_status required | string Enum: "NONE" "PARTIAL" "FULL" Status of refund processing (NONE for no refunds, PARTIAL for some items refunded, FULL for completely refunded) |
| refunded_status required | string Enum: "NONE" "PARTIAL" "FULL" Status indicating if this sale has been refunded (NONE for original sale, PARTIAL/FULL for refunds of other sales) |
| payment_status required | string Enum: "NONE" "PARTIAL" "FULL" Status of payment processing (NONE for unpaid, PARTIAL for partially paid, FULL for completely paid) |
| note | string Additional notes or comments about the sale - used for special instructions or customer preferences |
| target_id | string Identifier of the target sale for refund or return operations - links this refund to the original sale |
| opened_at required | string ISO 8601 timestamp when the sale was opened - marks the beginning of the transaction |
| closed_at | string ISO 8601 timestamp when the sale was closed - marks the completion of the transaction |
| pending_at | string ISO 8601 timestamp when the sale was set to pending status - used for payment processing workflows |
| customer_id | string Unique identifier of the customer associated with this sale - enables loyalty programs and customer history |
| seller_id | string Unique identifier of the seller or employee handling the sale - used for commission tracking and performance analytics |
Array of objects List of sale line items containing products, quantities, and prices - represents the actual items being purchased | |
Array of objects List of discounts applied to the sale - includes percentage discounts, fixed amount discounts, and promotional codes | |
Array of objects List of payments made for this sale - supports multiple payment methods like cash, card, and digital payments | |
| total required | number Total amount of the sale including all taxes and discounts - this is the final amount the customer pays |
| total_discount required | number Total discount amount applied to the sale - sum of all discounts before tax calculations |
| total_tax_free required | number Total amount of the sale excluding taxes - used for tax reporting and accounting purposes |
| total_tax required | number Total tax amount applied to the sale - sum of all taxes calculated on the sale items |
| total_rest required | number Remaining amount to be paid for the sale - becomes 0 when sale is fully paid |
{- "original_id": "SALE-001",
- "shop_id": "123e4567-e89b-12d3-a456-426614174000",
- "source_id": "123e4567-e89b-12d3-a456-426614174001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174002",
- "name": "Table 5 - Lunch Service",
- "number": 1001,
- "state": "OPEN",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "NONE",
- "note": "Customer requested extra napkins",
- "target_id": "123e4567-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-15T10:00:00Z",
- "closed_at": "2024-01-15T10:30:00Z",
- "pending_at": "2024-01-15T10:25:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174000",
- "seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "lines": [
- {
- "details": {
- "salable_type": "PRODUCT",
- "product": {
- "product_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium Coffee",
- "bulk_type": "KG",
- "variant": {
- "variant_id": "123e4567-e89b-12d3-a456-426614174000",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}
]
}, - "category": {
- "category_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Beverages",
- "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Hot Drinks"
}
]
}, - "tax": {
- "tax_id": "123e4567-e89b-12d3-a456-426614174000",
- "rate": 20,
- "inclusive": true,
- "total": 125,
- "total_tax": 20.83,
- "total_tax_free": 104.17
}, - "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Organic"
}
], - "custom_fields": [
- {
- "custom_field_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Special Instructions",
- "value": "Extra spicy, no onions"
}
], - "options": [
- {
- "option_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Size Upgrade",
- "value": {
- "name": "Extra Large",
- "price": 5
}, - "total": 5,
- "total_tax_free": 4.17,
- "total_tax": 0.83,
- "total_global_discount_free": 5,
- "total_tax_free_global_discount_free": 4.17,
- "total_tax_global_discount_free": 0.83,
- "unit_price_global_discount_free": 5,
- "total_discount_free": 5,
- "total_tax_free_discount_free": 4.17,
- "total_tax_discount_free": 0.83,
- "unit_price_discount_free": 5
}
], - "total": 15.5,
- "total_tax_free": 12.92,
- "total_tax": 2.58,
- "total_global_discount_free": 15.5,
- "total_tax_free_global_discount_free": 12.92,
- "total_tax_global_discount_free": 2.58,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 15.5,
- "total_tax_free_discount_free": 12.92,
- "total_tax_discount_free": 2.58,
- "unit_price_discount_free": 15.5,
- "virtual_discounts": [
- {
- "rate": 10.5,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 25.5
}
]
}
}, - "quantity": 2,
- "price": 15.5,
- "refunded_quantity": 0,
- "discounts": [
- {
- "rate": 10.5,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 25.5
}
], - "payment_index": 0,
- "partial_totals": [
- {
- "total": 50,
- "payment_index": 1
}
], - "note": "Customer requested extra hot",
- "operation_type": "SALE",
- "state": "OK",
- "target_sale_line_index": 0,
- "motive": "Customer complained about quality",
- "total": 31,
- "total_sell_price": 31,
- "total_discount": 0,
- "total_tax_free": 25.83,
- "total_tax": 5.17,
- "total_global_discount_free": 31,
- "total_tax_free_global_discount_free": 25.83,
- "total_tax_global_discount_free": 5.17,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 31,
- "total_tax_free_discount_free": 25.83,
- "total_tax_discount_free": 5.17,
- "unit_price_discount_free": 15.5
}
], - "discounts": [
- {
- "rate": 10.5,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 25.5
}
], - "payments": [
- {
- "state": "VALID",
- "type": "IN",
- "date": "2024-01-15T14:30:00Z",
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Visa Credit Card",
- "payment_method_type": "CREDIT_CARD",
- "source_payment_id": "PAY-123456789",
- "customer_movement_id": "123e4567-e89b-12d3-a456-426614174000",
- "amount": 125.5,
- "total_tax_free": 104.17,
- "total_tax": 21.33,
- "payment_id": "123e4567-e89b-12d3-a456-426614174000",
- "integration_payment_id": "stripe_pi_1234567890",
- "integration_refund_id": "stripe_re_1234567890"
}
], - "total": 125.5,
- "total_discount": 12.5,
- "total_tax_free": 104.17,
- "total_tax": 21.33,
- "total_rest": 0
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "SALE-001",
- "updated_at": "2024-01-15T14:30:00Z",
- "created_at": "2024-01-15T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "123e4567-e89b-12d3-a456-426614174000",
- "test": false,
- "source_id": "123e4567-e89b-12d3-a456-426614174001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174002",
- "name": "Table 5 - Lunch Service",
- "number": 1001,
- "state": "OPEN",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "NONE",
- "note": "Customer requested extra napkins",
- "target_id": "123e4567-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-15T10:00:00Z",
- "closed_at": "2024-01-15T10:30:00Z",
- "pending_at": "2024-01-15T10:25:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174004",
- "seller_id": "123e4567-e89b-12d3-a456-426614174005",
- "total": 125.5,
- "total_discount": 12.5,
- "total_tax_free": 104.17,
- "total_tax": 21.33,
- "total_rest": 0,
- "cashbook": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-cashbook-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "number": 123,
- "state": "CLOSED",
- "total": 1250.75,
- "total_tax_free": 1041.46,
- "min_sale_number": 1,
- "max_sale_number": 25,
- "sales_count": 25,
- "min_payment_number": 1,
- "max_payment_number": 30,
- "payments_count": 30,
- "opened_at": "2024-01-01T08:00:00Z",
- "closed_at": "2024-01-01T18:00:00Z",
- "opening_seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "closing_seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "note": "End of day closing",
- "opening_seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "closing_seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "movements": [
- {
- "type": "IN",
- "amount": 250.5,
- "motive": "Daily opening balance",
- "created_at": "2024-01-01T10:00:00Z"
}
], - "opening_cash_fund": [
- {
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Cash",
- "payment_method_type": "CASH",
- "total": 500
}
], - "closing_cash_fund": [
- {
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Cash",
- "payment_method_type": "CASH",
- "total": 500
}
], - "total_expected": 1250.75,
- "total_difference": 0,
- "custom_fields": [
- {
- "custom_field_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Store Location",
- "value_type": "TEXT",
- "value": "Main Store"
}
], - "stats": {
- "number_of_sales": 25,
- "min_sale_number": 1,
- "max_sale_number": 25,
- "sales_count": 25,
- "max_payment_number": 30,
- "min_payment_number": 1,
- "payments_count": 30
}
}, - "customer": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "CUST-001",
- "updated_at": "2024-01-15T10:30:00Z",
- "created_at": "2024-01-01T09:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone_code": "+33",
- "phone_number": "123456789",
- "company_name": "Acme Corp",
- "address": {
- "address": "123 Main St",
- "city": "Paris",
- "zipcode": "75001",
- "country": "France"
}, - "fidelity_card_number": "FIDELITY-123456",
- "note": "VIP customer - prefers contactless payment",
- "color": "BLUE",
- "icon_text": "JD",
}, - "seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "target_sale": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-sale-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Morning Rush Sale",
- "number": 1001,
- "state": "CLOSED",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "FULL",
- "note": "Customer requested receipt by email",
- "target_id": "987e6543-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-01T09:00:00Z",
- "closed_at": "2024-01-01T09:15:00Z",
- "pending_at": "2024-01-01T09:10:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174000",
- "seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 125.5,
- "total_discount": 10.5,
- "total_tax_free": 104.58,
- "total_tax": 20.92,
- "total_rest": 0
}, - "refund_sales": {
- "items": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-sale-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Morning Rush Sale",
- "number": 1001,
- "state": "CLOSED",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "FULL",
- "note": "Customer requested receipt by email",
- "target_id": "987e6543-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-01T09:00:00Z",
- "closed_at": "2024-01-01T09:15:00Z",
- "pending_at": "2024-01-01T09:10:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174000",
- "seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 125.5,
- "total_discount": 10.5,
- "total_tax_free": 104.58,
- "total_tax": 20.92,
- "total_rest": 0
}
], - "next_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}, - "lines": [
- {
- "quantity": 2,
- "price": 15.5,
- "refunded_quantity": 0,
- "payment_index": 0,
- "note": "Customer requested extra hot",
- "operation_type": "SALE",
- "state": "OK",
- "target_sale_line_index": 0,
- "motive": "Customer complained about quality",
- "total": 31,
- "total_sell_price": 31,
- "total_discount": 0,
- "total_tax_free": 25.83,
- "total_tax": 5.17,
- "total_global_discount_free": 31,
- "total_tax_free_global_discount_free": 25.83,
- "total_tax_global_discount_free": 5.17,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 31,
- "total_tax_free_discount_free": 25.83,
- "total_tax_discount_free": 5.17,
- "unit_price_discount_free": 15.5,
- "partial_totals": [
- {
- "total": 50,
- "payment_index": 1
}
], - "details": {
- "__typename": "SaleLineProductDetails",
- "product_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium Coffee",
- "bulk_type": "KG",
- "total": 15.5,
- "total_tax_free": 12.92,
- "total_tax": 2.58,
- "total_global_discount_free": 15.5,
- "total_tax_free_global_discount_free": 12.92,
- "total_tax_global_discount_free": 2.58,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 15.5,
- "total_tax_free_discount_free": 12.92,
- "total_tax_discount_free": 2.58,
- "unit_price_discount_free": 15.5,
- "category": {
- "category_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Beverages",
- "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Organic"
}
]
}, - "variant": {
- "variant_id": "123e4567-e89b-12d3-a456-426614174000",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}
]
}, - "tax": {
- "tax_id": "123e4567-e89b-12d3-a456-426614174000",
- "rate": 20,
- "inclusive": true,
- "total": 125,
- "total_tax": 20.83,
- "total_tax_free": 104.17
}, - "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Organic"
}
], - "custom_fields": [
- {
- "custom_field_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Special Instructions",
- "value": "Extra spicy"
}
], - "options": [
- {
- "option_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Size Upgrade",
- "value": {
- "name": "Extra Large",
- "price": 5
}, - "total": 5,
- "total_tax_free": 4.17,
- "total_tax": 0.83,
- "total_global_discount_free": 5,
- "total_tax_free_global_discount_free": 4.17,
- "total_tax_global_discount_free": 0.83,
- "unit_price_global_discount_free": 5,
- "total_discount_free": 5,
- "total_tax_free_discount_free": 4.17,
- "total_tax_discount_free": 0.83,
- "unit_price_discount_free": 5
}
], - "virtual_discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
]
}, - "discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
]
}
], - "discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
], - "payments": [
- {
- "state": "VALID",
- "type": "IN",
- "date": "2024-01-15T10:30:00Z",
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Credit Card Terminal",
- "payment_method_type": "CREDIT_CARD",
- "source_payment_id": "123e4567-e89b-12d3-a456-426614174000",
- "customer_movement_id": "123e4567-e89b-12d3-a456-426614174000",
- "amount": 85.5,
- "total_tax_free": 70,
- "total_tax": 15.5,
- "payment_id": "123e4567-e89b-12d3-a456-426614174000",
- "integration_payment_id": "pi_1234567890abcdef",
- "integration_refund_id": "re_1234567890abcdef"
}
], - "stats": {
- "taxes": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 50.25
}
], - "margin": 125.5
}
}Updates an existing sale with the provided data.
Sale update payload
| id required | string (Sale Identifier) Unique identifier of the sale to update - this field is required to specify which sale transaction should be modified |
| source_id | string (Source System Identifier) Unique identifier of the source system or device - update to change which system is credited with processing the sale |
| source_name | string (Source System Name) Human-readable name of the source system or device - useful for updating terminal assignments or corrections |
| cashbook_id | string (Cashbook Identifier) Unique identifier of the cashbook to associate with this sale - change to move sale between cashbooks for accounting purposes |
| name | string (Sale Name) Custom name or description for the sale transaction - update for table reassignments or order clarifications |
| number | number (Sale Number) Sequential number assigned to the sale for reference - update for receipt numbering corrections or adjustments |
| state | string (Sale State) Enum: "OPEN" "AVAILABLE" "CLOSED" "DELETED" Current state of the sale transaction - update to progress sale through workflow (OPEN → AVAILABLE → CLOSED) or cancel (DELETED) |
| refund_status | string (Refund Processing Status) Enum: "NONE" "PARTIAL" "FULL" Status of refund processing for this sale - update when processing refunds (NONE → PARTIAL → FULL) |
| refunded_status | string (Refunded Transaction Status) Enum: "NONE" "PARTIAL" "FULL" Status indicating if this sale has been refunded by other transactions - system typically manages this automatically |
| payment_status | string (Payment Processing Status) Enum: "NONE" "PARTIAL" "FULL" Status of payment processing for this sale - update when payments are processed (NONE → PARTIAL → FULL) |
| note | string (Sale Notes) Additional notes or comments about the sale - update to add special instructions, customer preferences, or staff communications |
| target_id | string (Target Sale Identifier) Identifier of the target sale for refund operations - set when converting a sale to a refund or linking refund transactions |
| closed_at | string (Sale Closed Timestamp) ISO 8601 timestamp when the sale was closed - set when finalizing the transaction and completing payment |
| pending_at | string (Sale Pending Timestamp) ISO 8601 timestamp when the sale was set to pending status - set during payment processing workflows or approval processes |
| customer_id | string (Customer Identifier) Unique identifier of the customer - update to assign or change customer association for loyalty programs and history tracking |
| seller_id | string (Seller Identifier) Unique identifier of the seller or employee - update to reassign commission credit or correct staff assignments |
Array of objects (Sale Line Items) List of sale line items containing products, quantities, and prices - update to add, remove, or modify items in the sale | |
Array of objects (Applied Discounts) List of discounts applied to the sale - update to add promotional codes, loyalty discounts, or remove invalid discounts | |
Array of objects (Payment Transactions) List of payments made for this sale - update to process new payments, add payment methods, or handle refunds | |
| total | number (Sale Total Amount) Total amount of the sale including all taxes and discounts - typically calculated automatically but can be overridden for adjustments |
| total_discount | number (Total Discount Amount) Total discount amount applied to the sale - update when applying additional discounts or correcting discount calculations |
| total_tax_free | number (Tax-Free Total Amount) Total amount of the sale excluding taxes - typically calculated automatically for tax reporting compliance |
| total_tax | number (Total Tax Amount) Total tax amount applied to the sale - update when tax rates change or tax exemptions are applied |
| total_rest | number (Remaining Amount) Remaining amount to be paid for the sale - update when processing partial payments or adjusting payment amounts |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "source_id": "123e4567-e89b-12d3-a456-426614174001",
- "source_name": "POS Terminal 2",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174002",
- "name": "Table 7 - Dinner Service",
- "number": 1002,
- "state": "CLOSED",
- "refund_status": "PARTIAL",
- "refunded_status": "NONE",
- "payment_status": "FULL",
- "note": "Customer paid with cash - change given",
- "target_id": "123e4567-e89b-12d3-a456-426614174003",
- "closed_at": "2024-01-15T11:00:00Z",
- "pending_at": "2024-01-15T10:55:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174004",
- "seller_id": "123e4567-e89b-12d3-a456-426614174005",
- "lines": [
- {
- "details": {
- "salable_type": "PRODUCT",
- "product": {
- "product_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium Coffee",
- "bulk_type": "KG",
- "variant": {
- "variant_id": "123e4567-e89b-12d3-a456-426614174000",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}
]
}, - "category": {
- "category_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Beverages",
- "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Hot Drinks"
}
]
}, - "tax": {
- "tax_id": "123e4567-e89b-12d3-a456-426614174000",
- "rate": 20,
- "inclusive": true,
- "total": 125,
- "total_tax": 20.83,
- "total_tax_free": 104.17
}, - "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Organic"
}
], - "custom_fields": [
- {
- "custom_field_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Special Instructions",
- "value": "Extra spicy, no onions"
}
], - "options": [
- {
- "option_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Size Upgrade",
- "value": {
- "name": "Extra Large",
- "price": 5
}, - "total": 5,
- "total_tax_free": 4.17,
- "total_tax": 0.83,
- "total_global_discount_free": 5,
- "total_tax_free_global_discount_free": 4.17,
- "total_tax_global_discount_free": 0.83,
- "unit_price_global_discount_free": 5,
- "total_discount_free": 5,
- "total_tax_free_discount_free": 4.17,
- "total_tax_discount_free": 0.83,
- "unit_price_discount_free": 5
}
], - "total": 15.5,
- "total_tax_free": 12.92,
- "total_tax": 2.58,
- "total_global_discount_free": 15.5,
- "total_tax_free_global_discount_free": 12.92,
- "total_tax_global_discount_free": 2.58,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 15.5,
- "total_tax_free_discount_free": 12.92,
- "total_tax_discount_free": 2.58,
- "unit_price_discount_free": 15.5,
- "virtual_discounts": [
- {
- "rate": 10.5,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 25.5
}
]
}
}, - "quantity": 2,
- "price": 15.5,
- "refunded_quantity": 0,
- "discounts": [
- {
- "rate": 10.5,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 25.5
}
], - "payment_index": 0,
- "partial_totals": [
- {
- "total": 50,
- "payment_index": 1
}
], - "note": "Customer requested extra hot",
- "operation_type": "SALE",
- "state": "OK",
- "target_sale_line_index": 0,
- "motive": "Customer complained about quality",
- "total": 31,
- "total_sell_price": 31,
- "total_discount": 0,
- "total_tax_free": 25.83,
- "total_tax": 5.17,
- "total_global_discount_free": 31,
- "total_tax_free_global_discount_free": 25.83,
- "total_tax_global_discount_free": 5.17,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 31,
- "total_tax_free_discount_free": 25.83,
- "total_tax_discount_free": 5.17,
- "unit_price_discount_free": 15.5
}
], - "discounts": [
- {
- "rate": 10.5,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 25.5
}
], - "payments": [
- {
- "state": "VALID",
- "type": "IN",
- "date": "2024-01-15T14:30:00Z",
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Visa Credit Card",
- "payment_method_type": "CREDIT_CARD",
- "source_payment_id": "PAY-123456789",
- "customer_movement_id": "123e4567-e89b-12d3-a456-426614174000",
- "amount": 125.5,
- "total_tax_free": 104.17,
- "total_tax": 21.33,
- "payment_id": "123e4567-e89b-12d3-a456-426614174000",
- "integration_payment_id": "stripe_pi_1234567890",
- "integration_refund_id": "stripe_re_1234567890"
}
], - "total": 135.75,
- "total_discount": 15.25,
- "total_tax_free": 113.13,
- "total_tax": 22.62,
- "total_rest": 0
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "SALE-001",
- "updated_at": "2024-01-15T14:30:00Z",
- "created_at": "2024-01-15T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "123e4567-e89b-12d3-a456-426614174000",
- "test": false,
- "source_id": "123e4567-e89b-12d3-a456-426614174001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174002",
- "name": "Table 5 - Lunch Service",
- "number": 1001,
- "state": "OPEN",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "NONE",
- "note": "Customer requested extra napkins",
- "target_id": "123e4567-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-15T10:00:00Z",
- "closed_at": "2024-01-15T10:30:00Z",
- "pending_at": "2024-01-15T10:25:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174004",
- "seller_id": "123e4567-e89b-12d3-a456-426614174005",
- "total": 125.5,
- "total_discount": 12.5,
- "total_tax_free": 104.17,
- "total_tax": 21.33,
- "total_rest": 0,
- "cashbook": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-cashbook-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "number": 123,
- "state": "CLOSED",
- "total": 1250.75,
- "total_tax_free": 1041.46,
- "min_sale_number": 1,
- "max_sale_number": 25,
- "sales_count": 25,
- "min_payment_number": 1,
- "max_payment_number": 30,
- "payments_count": 30,
- "opened_at": "2024-01-01T08:00:00Z",
- "closed_at": "2024-01-01T18:00:00Z",
- "opening_seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "closing_seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "note": "End of day closing",
- "opening_seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "closing_seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "movements": [
- {
- "type": "IN",
- "amount": 250.5,
- "motive": "Daily opening balance",
- "created_at": "2024-01-01T10:00:00Z"
}
], - "opening_cash_fund": [
- {
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Cash",
- "payment_method_type": "CASH",
- "total": 500
}
], - "closing_cash_fund": [
- {
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Cash",
- "payment_method_type": "CASH",
- "total": 500
}
], - "total_expected": 1250.75,
- "total_difference": 0,
- "custom_fields": [
- {
- "custom_field_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Store Location",
- "value_type": "TEXT",
- "value": "Main Store"
}
], - "stats": {
- "number_of_sales": 25,
- "min_sale_number": 1,
- "max_sale_number": 25,
- "sales_count": 25,
- "max_payment_number": 30,
- "min_payment_number": 1,
- "payments_count": 30
}
}, - "customer": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "CUST-001",
- "updated_at": "2024-01-15T10:30:00Z",
- "created_at": "2024-01-01T09:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone_code": "+33",
- "phone_number": "123456789",
- "company_name": "Acme Corp",
- "address": {
- "address": "123 Main St",
- "city": "Paris",
- "zipcode": "75001",
- "country": "France"
}, - "fidelity_card_number": "FIDELITY-123456",
- "note": "VIP customer - prefers contactless payment",
- "color": "BLUE",
- "icon_text": "JD",
}, - "seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "target_sale": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-sale-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Morning Rush Sale",
- "number": 1001,
- "state": "CLOSED",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "FULL",
- "note": "Customer requested receipt by email",
- "target_id": "987e6543-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-01T09:00:00Z",
- "closed_at": "2024-01-01T09:15:00Z",
- "pending_at": "2024-01-01T09:10:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174000",
- "seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 125.5,
- "total_discount": 10.5,
- "total_tax_free": 104.58,
- "total_tax": 20.92,
- "total_rest": 0
}, - "refund_sales": {
- "items": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-sale-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Morning Rush Sale",
- "number": 1001,
- "state": "CLOSED",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "FULL",
- "note": "Customer requested receipt by email",
- "target_id": "987e6543-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-01T09:00:00Z",
- "closed_at": "2024-01-01T09:15:00Z",
- "pending_at": "2024-01-01T09:10:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174000",
- "seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 125.5,
- "total_discount": 10.5,
- "total_tax_free": 104.58,
- "total_tax": 20.92,
- "total_rest": 0
}
], - "next_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}, - "lines": [
- {
- "quantity": 2,
- "price": 15.5,
- "refunded_quantity": 0,
- "payment_index": 0,
- "note": "Customer requested extra hot",
- "operation_type": "SALE",
- "state": "OK",
- "target_sale_line_index": 0,
- "motive": "Customer complained about quality",
- "total": 31,
- "total_sell_price": 31,
- "total_discount": 0,
- "total_tax_free": 25.83,
- "total_tax": 5.17,
- "total_global_discount_free": 31,
- "total_tax_free_global_discount_free": 25.83,
- "total_tax_global_discount_free": 5.17,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 31,
- "total_tax_free_discount_free": 25.83,
- "total_tax_discount_free": 5.17,
- "unit_price_discount_free": 15.5,
- "partial_totals": [
- {
- "total": 50,
- "payment_index": 1
}
], - "details": {
- "__typename": "SaleLineProductDetails",
- "product_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium Coffee",
- "bulk_type": "KG",
- "total": 15.5,
- "total_tax_free": 12.92,
- "total_tax": 2.58,
- "total_global_discount_free": 15.5,
- "total_tax_free_global_discount_free": 12.92,
- "total_tax_global_discount_free": 2.58,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 15.5,
- "total_tax_free_discount_free": 12.92,
- "total_tax_discount_free": 2.58,
- "unit_price_discount_free": 15.5,
- "category": {
- "category_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Beverages",
- "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Organic"
}
]
}, - "variant": {
- "variant_id": "123e4567-e89b-12d3-a456-426614174000",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}
]
}, - "tax": {
- "tax_id": "123e4567-e89b-12d3-a456-426614174000",
- "rate": 20,
- "inclusive": true,
- "total": 125,
- "total_tax": 20.83,
- "total_tax_free": 104.17
}, - "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Organic"
}
], - "custom_fields": [
- {
- "custom_field_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Special Instructions",
- "value": "Extra spicy"
}
], - "options": [
- {
- "option_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Size Upgrade",
- "value": {
- "name": "Extra Large",
- "price": 5
}, - "total": 5,
- "total_tax_free": 4.17,
- "total_tax": 0.83,
- "total_global_discount_free": 5,
- "total_tax_free_global_discount_free": 4.17,
- "total_tax_global_discount_free": 0.83,
- "unit_price_global_discount_free": 5,
- "total_discount_free": 5,
- "total_tax_free_discount_free": 4.17,
- "total_tax_discount_free": 0.83,
- "unit_price_discount_free": 5
}
], - "virtual_discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
]
}, - "discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
]
}
], - "discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
], - "payments": [
- {
- "state": "VALID",
- "type": "IN",
- "date": "2024-01-15T10:30:00Z",
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Credit Card Terminal",
- "payment_method_type": "CREDIT_CARD",
- "source_payment_id": "123e4567-e89b-12d3-a456-426614174000",
- "customer_movement_id": "123e4567-e89b-12d3-a456-426614174000",
- "amount": 85.5,
- "total_tax_free": 70,
- "total_tax": 15.5,
- "payment_id": "123e4567-e89b-12d3-a456-426614174000",
- "integration_payment_id": "pi_1234567890abcdef",
- "integration_refund_id": "re_1234567890abcdef"
}
], - "stats": {
- "taxes": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 50.25
}
], - "margin": 125.5
}
}Retrieves a sale by its unique identifier.
| id required | string (Sale Identifier) Example: 123e4567-e89b-12d3-a456-426614174000 Unique identifier of the sale to perform operations on - used in URL path parameters to specify which sale to retrieve, update, or delete |
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "SALE-001",
- "updated_at": "2024-01-15T14:30:00Z",
- "created_at": "2024-01-15T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "123e4567-e89b-12d3-a456-426614174000",
- "test": false,
- "source_id": "123e4567-e89b-12d3-a456-426614174001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174002",
- "name": "Table 5 - Lunch Service",
- "number": 1001,
- "state": "OPEN",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "NONE",
- "note": "Customer requested extra napkins",
- "target_id": "123e4567-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-15T10:00:00Z",
- "closed_at": "2024-01-15T10:30:00Z",
- "pending_at": "2024-01-15T10:25:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174004",
- "seller_id": "123e4567-e89b-12d3-a456-426614174005",
- "total": 125.5,
- "total_discount": 12.5,
- "total_tax_free": 104.17,
- "total_tax": 21.33,
- "total_rest": 0,
- "cashbook": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-cashbook-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "number": 123,
- "state": "CLOSED",
- "total": 1250.75,
- "total_tax_free": 1041.46,
- "min_sale_number": 1,
- "max_sale_number": 25,
- "sales_count": 25,
- "min_payment_number": 1,
- "max_payment_number": 30,
- "payments_count": 30,
- "opened_at": "2024-01-01T08:00:00Z",
- "closed_at": "2024-01-01T18:00:00Z",
- "opening_seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "closing_seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "note": "End of day closing",
- "opening_seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "closing_seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "movements": [
- {
- "type": "IN",
- "amount": 250.5,
- "motive": "Daily opening balance",
- "created_at": "2024-01-01T10:00:00Z"
}
], - "opening_cash_fund": [
- {
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Cash",
- "payment_method_type": "CASH",
- "total": 500
}
], - "closing_cash_fund": [
- {
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Cash",
- "payment_method_type": "CASH",
- "total": 500
}
], - "total_expected": 1250.75,
- "total_difference": 0,
- "custom_fields": [
- {
- "custom_field_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Store Location",
- "value_type": "TEXT",
- "value": "Main Store"
}
], - "stats": {
- "number_of_sales": 25,
- "min_sale_number": 1,
- "max_sale_number": 25,
- "sales_count": 25,
- "max_payment_number": 30,
- "min_payment_number": 1,
- "payments_count": 30
}
}, - "customer": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "CUST-001",
- "updated_at": "2024-01-15T10:30:00Z",
- "created_at": "2024-01-01T09:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone_code": "+33",
- "phone_number": "123456789",
- "company_name": "Acme Corp",
- "address": {
- "address": "123 Main St",
- "city": "Paris",
- "zipcode": "75001",
- "country": "France"
}, - "fidelity_card_number": "FIDELITY-123456",
- "note": "VIP customer - prefers contactless payment",
- "color": "BLUE",
- "icon_text": "JD",
}, - "seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "target_sale": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-sale-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Morning Rush Sale",
- "number": 1001,
- "state": "CLOSED",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "FULL",
- "note": "Customer requested receipt by email",
- "target_id": "987e6543-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-01T09:00:00Z",
- "closed_at": "2024-01-01T09:15:00Z",
- "pending_at": "2024-01-01T09:10:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174000",
- "seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 125.5,
- "total_discount": 10.5,
- "total_tax_free": 104.58,
- "total_tax": 20.92,
- "total_rest": 0
}, - "refund_sales": {
- "items": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-sale-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Morning Rush Sale",
- "number": 1001,
- "state": "CLOSED",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "FULL",
- "note": "Customer requested receipt by email",
- "target_id": "987e6543-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-01T09:00:00Z",
- "closed_at": "2024-01-01T09:15:00Z",
- "pending_at": "2024-01-01T09:10:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174000",
- "seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 125.5,
- "total_discount": 10.5,
- "total_tax_free": 104.58,
- "total_tax": 20.92,
- "total_rest": 0
}
], - "next_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}, - "lines": [
- {
- "quantity": 2,
- "price": 15.5,
- "refunded_quantity": 0,
- "payment_index": 0,
- "note": "Customer requested extra hot",
- "operation_type": "SALE",
- "state": "OK",
- "target_sale_line_index": 0,
- "motive": "Customer complained about quality",
- "total": 31,
- "total_sell_price": 31,
- "total_discount": 0,
- "total_tax_free": 25.83,
- "total_tax": 5.17,
- "total_global_discount_free": 31,
- "total_tax_free_global_discount_free": 25.83,
- "total_tax_global_discount_free": 5.17,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 31,
- "total_tax_free_discount_free": 25.83,
- "total_tax_discount_free": 5.17,
- "unit_price_discount_free": 15.5,
- "partial_totals": [
- {
- "total": 50,
- "payment_index": 1
}
], - "details": {
- "__typename": "SaleLineProductDetails",
- "product_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium Coffee",
- "bulk_type": "KG",
- "total": 15.5,
- "total_tax_free": 12.92,
- "total_tax": 2.58,
- "total_global_discount_free": 15.5,
- "total_tax_free_global_discount_free": 12.92,
- "total_tax_global_discount_free": 2.58,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 15.5,
- "total_tax_free_discount_free": 12.92,
- "total_tax_discount_free": 2.58,
- "unit_price_discount_free": 15.5,
- "category": {
- "category_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Beverages",
- "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Organic"
}
]
}, - "variant": {
- "variant_id": "123e4567-e89b-12d3-a456-426614174000",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}
]
}, - "tax": {
- "tax_id": "123e4567-e89b-12d3-a456-426614174000",
- "rate": 20,
- "inclusive": true,
- "total": 125,
- "total_tax": 20.83,
- "total_tax_free": 104.17
}, - "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Organic"
}
], - "custom_fields": [
- {
- "custom_field_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Special Instructions",
- "value": "Extra spicy"
}
], - "options": [
- {
- "option_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Size Upgrade",
- "value": {
- "name": "Extra Large",
- "price": 5
}, - "total": 5,
- "total_tax_free": 4.17,
- "total_tax": 0.83,
- "total_global_discount_free": 5,
- "total_tax_free_global_discount_free": 4.17,
- "total_tax_global_discount_free": 0.83,
- "unit_price_global_discount_free": 5,
- "total_discount_free": 5,
- "total_tax_free_discount_free": 4.17,
- "total_tax_discount_free": 0.83,
- "unit_price_discount_free": 5
}
], - "virtual_discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
]
}, - "discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
]
}
], - "discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
], - "payments": [
- {
- "state": "VALID",
- "type": "IN",
- "date": "2024-01-15T10:30:00Z",
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Credit Card Terminal",
- "payment_method_type": "CREDIT_CARD",
- "source_payment_id": "123e4567-e89b-12d3-a456-426614174000",
- "customer_movement_id": "123e4567-e89b-12d3-a456-426614174000",
- "amount": 85.5,
- "total_tax_free": 70,
- "total_tax": 15.5,
- "payment_id": "123e4567-e89b-12d3-a456-426614174000",
- "integration_payment_id": "pi_1234567890abcdef",
- "integration_refund_id": "re_1234567890abcdef"
}
], - "stats": {
- "taxes": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 50.25
}
], - "margin": 125.5
}
}Retrieves a list of sales based on the provided filters.
Sale request payload with filters
object (Filter Criteria) Advanced filtering options for sale queries - supports filtering by timestamps, financial amounts, identifiers, states, and related entities to narrow down search results | |
object (Sort Configuration) List of sorting rules applied to query results - supports multiple sort criteria with field names and directions for complex result ordering | |
| limit | integer (Result Limit) ( 0 .. 100 ] Maximum number of sales to return in a single response - must be a positive integer between 1 and 100 for performance and pagination efficiency |
| next_token | string (Pagination Token) Token for retrieving the next page of results - obtained from previous query responses to continue pagination through large result sets |
{- "filter": {
- "state": {
- "eq": "CLOSED"
}, - "total": {
- "gte": 1000
}, - "created_at": {
- "gte": "2024-01-01T00:00:00Z"
}
}, - "sort": [
- {
- "field": "created_at",
- "direction": "desc"
}
], - "limit": 20,
- "next_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}{- "items": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "SALE-001",
- "updated_at": "2024-01-15T14:30:00Z",
- "created_at": "2024-01-15T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "123e4567-e89b-12d3-a456-426614174000",
- "test": false,
- "source_id": "123e4567-e89b-12d3-a456-426614174001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174002",
- "name": "Table 5 - Lunch Service",
- "number": 1001,
- "state": "OPEN",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "NONE",
- "note": "Customer requested extra napkins",
- "target_id": "123e4567-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-15T10:00:00Z",
- "closed_at": "2024-01-15T10:30:00Z",
- "pending_at": "2024-01-15T10:25:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174004",
- "seller_id": "123e4567-e89b-12d3-a456-426614174005",
- "total": 125.5,
- "total_discount": 12.5,
- "total_tax_free": 104.17,
- "total_tax": 21.33,
- "total_rest": 0,
- "cashbook": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-cashbook-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "number": 123,
- "state": "CLOSED",
- "total": 1250.75,
- "total_tax_free": 1041.46,
- "min_sale_number": 1,
- "max_sale_number": 25,
- "sales_count": 25,
- "min_payment_number": 1,
- "max_payment_number": 30,
- "payments_count": 30,
- "opened_at": "2024-01-01T08:00:00Z",
- "closed_at": "2024-01-01T18:00:00Z",
- "opening_seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "closing_seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "note": "End of day closing",
- "opening_seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "closing_seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "movements": [
- {
- "type": "IN",
- "amount": 250.5,
- "motive": "Daily opening balance",
- "created_at": "2024-01-01T10:00:00Z"
}
], - "opening_cash_fund": [
- {
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Cash",
- "payment_method_type": "CASH",
- "total": 500
}
], - "closing_cash_fund": [
- {
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Cash",
- "payment_method_type": "CASH",
- "total": 500
}
], - "total_expected": 1250.75,
- "total_difference": 0,
- "custom_fields": [
- {
- "custom_field_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Store Location",
- "value_type": "TEXT",
- "value": "Main Store"
}
], - "stats": {
- "number_of_sales": 25,
- "min_sale_number": 1,
- "max_sale_number": 25,
- "sales_count": 25,
- "max_payment_number": 30,
- "min_payment_number": 1,
- "payments_count": 30
}
}, - "customer": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "CUST-001",
- "updated_at": "2024-01-15T10:30:00Z",
- "created_at": "2024-01-01T09:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone_code": "+33",
- "phone_number": "123456789",
- "company_name": "Acme Corp",
- "address": {
- "address": "123 Main St",
- "city": "Paris",
- "zipcode": "75001",
- "country": "France"
}, - "fidelity_card_number": "FIDELITY-123456",
- "note": "VIP customer - prefers contactless payment",
- "color": "BLUE",
- "icon_text": "JD",
}, - "seller": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "first_name": "John",
- "last_name": "Doe",
- "color": "BLUE",
- "icon_text": "JD",
- "email": "john.doe@example.com"
}, - "target_sale": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-sale-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Morning Rush Sale",
- "number": 1001,
- "state": "CLOSED",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "FULL",
- "note": "Customer requested receipt by email",
- "target_id": "987e6543-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-01T09:00:00Z",
- "closed_at": "2024-01-01T09:15:00Z",
- "pending_at": "2024-01-01T09:10:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174000",
- "seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 125.5,
- "total_discount": 10.5,
- "total_tax_free": 104.58,
- "total_tax": 20.92,
- "total_rest": 0
}, - "refund_sales": {
- "items": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "original_id": "original-sale-123",
- "updated_at": "2024-01-01T10:00:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "deprecated": false,
- "company_id": "456e7890-e89b-12d3-a456-426614174001",
- "shop_id": "789e0123-e89b-12d3-a456-426614174002",
- "test": false,
- "source_id": "pos-terminal-001",
- "source_name": "POS Terminal 1",
- "cashbook_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Morning Rush Sale",
- "number": 1001,
- "state": "CLOSED",
- "refund_status": "NONE",
- "refunded_status": "NONE",
- "payment_status": "FULL",
- "note": "Customer requested receipt by email",
- "target_id": "987e6543-e89b-12d3-a456-426614174003",
- "opened_at": "2024-01-01T09:00:00Z",
- "closed_at": "2024-01-01T09:15:00Z",
- "pending_at": "2024-01-01T09:10:00Z",
- "customer_id": "123e4567-e89b-12d3-a456-426614174000",
- "seller_id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 125.5,
- "total_discount": 10.5,
- "total_tax_free": 104.58,
- "total_tax": 20.92,
- "total_rest": 0
}
], - "next_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}, - "lines": [
- {
- "quantity": 2,
- "price": 15.5,
- "refunded_quantity": 0,
- "payment_index": 0,
- "note": "Customer requested extra hot",
- "operation_type": "SALE",
- "state": "OK",
- "target_sale_line_index": 0,
- "motive": "Customer complained about quality",
- "total": 31,
- "total_sell_price": 31,
- "total_discount": 0,
- "total_tax_free": 25.83,
- "total_tax": 5.17,
- "total_global_discount_free": 31,
- "total_tax_free_global_discount_free": 25.83,
- "total_tax_global_discount_free": 5.17,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 31,
- "total_tax_free_discount_free": 25.83,
- "total_tax_discount_free": 5.17,
- "unit_price_discount_free": 15.5,
- "partial_totals": [
- {
- "total": 50,
- "payment_index": 1
}
], - "details": {
- "__typename": "SaleLineProductDetails",
- "product_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Premium Coffee",
- "bulk_type": "KG",
- "total": 15.5,
- "total_tax_free": 12.92,
- "total_tax": 2.58,
- "total_global_discount_free": 15.5,
- "total_tax_free_global_discount_free": 12.92,
- "total_tax_global_discount_free": 2.58,
- "unit_price_global_discount_free": 15.5,
- "total_discount_free": 15.5,
- "total_tax_free_discount_free": 12.92,
- "total_tax_discount_free": 2.58,
- "unit_price_discount_free": 15.5,
- "category": {
- "category_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Beverages",
- "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Organic"
}
]
}, - "variant": {
- "variant_id": "123e4567-e89b-12d3-a456-426614174000",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}
]
}, - "tax": {
- "tax_id": "123e4567-e89b-12d3-a456-426614174000",
- "rate": 20,
- "inclusive": true,
- "total": 125,
- "total_tax": 20.83,
- "total_tax_free": 104.17
}, - "tags": [
- {
- "tag_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Organic"
}
], - "custom_fields": [
- {
- "custom_field_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Special Instructions",
- "value": "Extra spicy"
}
], - "options": [
- {
- "option_id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Size Upgrade",
- "value": {
- "name": "Extra Large",
- "price": 5
}, - "total": 5,
- "total_tax_free": 4.17,
- "total_tax": 0.83,
- "total_global_discount_free": 5,
- "total_tax_free_global_discount_free": 4.17,
- "total_tax_global_discount_free": 0.83,
- "unit_price_global_discount_free": 5,
- "total_discount_free": 5,
- "total_tax_free_discount_free": 4.17,
- "total_tax_discount_free": 0.83,
- "unit_price_discount_free": 5
}
], - "virtual_discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
]
}, - "discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
]
}
], - "discounts": [
- {
- "rate": 15,
- "type": "PERCENTAGE",
- "discount_id": "123e4567-e89b-12d3-a456-426614174000",
- "discount_name": "Summer Sale 2024",
- "amount": 12.5
}
], - "payments": [
- {
- "state": "VALID",
- "type": "IN",
- "date": "2024-01-15T10:30:00Z",
- "payment_method_id": "123e4567-e89b-12d3-a456-426614174000",
- "payment_method_name": "Credit Card Terminal",
- "payment_method_type": "CREDIT_CARD",
- "source_payment_id": "123e4567-e89b-12d3-a456-426614174000",
- "customer_movement_id": "123e4567-e89b-12d3-a456-426614174000",
- "amount": 85.5,
- "total_tax_free": 70,
- "total_tax": 15.5,
- "payment_id": "123e4567-e89b-12d3-a456-426614174000",
- "integration_payment_id": "pi_1234567890abcdef",
- "integration_refund_id": "re_1234567890abcdef"
}
], - "stats": {
- "taxes": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "total": 50.25
}
], - "margin": 125.5
}
}
], - "next_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
- "total": 1523
}Creates a new inventory movement operation in the specified catalog.
Inventory movement creation data
| update_prices | boolean (Update Price) Default: false Whether to update the prices of the products in the inventory movement |
| state required | string (State) Enum: "DRAFT" "CLOSED" "CANCELLED" Initial state of the inventory movement |
| motive | string (Motive) Reason or motivation for the inventory movement operation |
| origin | string (Origin) Enum: "SHOP" "SUPPLIER" Source location type where inventory is being moved from |
| origin_id | string (Origin ID) Unique identifier of the specific origin location |
| destination | string (Destination) Enum: "SHOP" "TRASH" Target location type where inventory is being moved to |
| destination_id | string (Destination ID) Unique identifier of the specific destination location |
Array of objects (Insertions) Array of product line items to add to the inventory movement |
{- "update_prices": false,
- "state": "DRAFT",
- "motive": "Regular stock transfer between locations",
- "origin": "SHOP",
- "origin_id": "shop-a-001",
- "destination": "SHOP",
- "destination_id": "shop-b-002",
- "insertions": [
- {
- "product_id": "prod-001",
- "variant_id": "variant-001",
- "quantity": 100,
- "price": 1500
}
]
}{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "deprecated": false,
- "company_id": "company-001",
- "test": false,
- "state": "DRAFT",
- "state_date": "2025-07-02T10:26:31.829Z",
- "motive": "Stock transfer between shops",
- "origin": "SHOP",
- "origin_id": "shop-001",
- "destination": "SHOP",
- "destination_id": "shop-002",
- "total_quantity": 500,
- "number_of_products": 25,
- "number_of_variants": 15,
- "number_of_products_or_variants": 40,
- "number_of_lines": 30,
- "number_of_lines_with_price": 28,
- "number_of_lines_with_quantity": 30
}Updates specific fields of an existing inventory movement.
Inventory movement update data
| id required | string <uuid> (ID) Unique identifier of the inventory movement to update |
| state | string (State) Enum: "DRAFT" "CLOSED" "CANCELLED" Updated state of the inventory movement |
| name | string (Name) New display name for the inventory movement |
| motive | string (Motive) Updated reason for the inventory movement operation |
| origin | string (Origin) Enum: "SHOP" "SUPPLIER" Updated source location type for the inventory movement |
| origin_id | string (Origin ID) Updated unique identifier of the origin location |
| destination | string (Destination) Enum: "SHOP" "TRASH" Updated target location type for the inventory movement |
| destination_id | string (Destination ID) Updated unique identifier of the destination location |
Array of objects (Insertions) Array of product line items to add to the inventory movement | |
Array of objects (Deletions) Array of product line items to delete from the inventory movement | |
Array of objects (Modifications) Array of product line items to modify in the inventory movement | |
| update_prices required | boolean Update prices of the products? |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "state": "DRAFT",
- "name": "Updated Stock Transfer Operation",
- "motive": "Emergency stock rebalancing",
- "origin": "SHOP",
- "origin_id": "shop-main-001",
- "destination": "SHOP",
- "destination_id": "shop-branch-002",
- "insertions": [
- {
- "product_id": "prod-001",
- "variant_id": "variant-001",
- "quantity": 100,
- "price": 1500
}
], - "deletions": [
- {
- "product_id": "prod-001",
- "variant_id": "variant-001"
}
], - "modifications": [
- {
- "product_id": "prod-001",
- "variant_id": "variant-001",
- "quantity": 100,
- "price": 1500
}
], - "update_prices": true
}{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "deprecated": false,
- "company_id": "company-001",
- "test": false,
- "state": "DRAFT",
- "state_date": "2025-07-02T10:26:31.829Z",
- "motive": "Stock transfer between shops",
- "origin": "SHOP",
- "origin_id": "shop-001",
- "destination": "SHOP",
- "destination_id": "shop-002",
- "total_quantity": 500,
- "number_of_products": 25,
- "number_of_variants": 15,
- "number_of_products_or_variants": 40,
- "number_of_lines": 30,
- "number_of_lines_with_price": 28,
- "number_of_lines_with_quantity": 30
}Retrieves a specific inventory movement by its unique identifier.
| id required | string <uuid> (ID) Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the inventory movement |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "deprecated": false,
- "company_id": "company-001",
- "test": false,
- "state": "DRAFT",
- "state_date": "2025-07-02T10:26:31.829Z",
- "motive": "Stock transfer between shops",
- "origin": "SHOP",
- "origin_id": "shop-001",
- "destination": "SHOP",
- "destination_id": "shop-002",
- "total_quantity": 500,
- "number_of_products": 25,
- "number_of_variants": 15,
- "number_of_products_or_variants": 40,
- "number_of_lines": 30,
- "number_of_lines_with_price": 28,
- "number_of_lines_with_quantity": 30
}Deletes a specific inventory movement by its unique identifier.
| id required | string <uuid> (ID) Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d Unique identifier of the inventory movement |
{- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d"
}Retrieves a list of inventory movements based on specified criteria.
Inventory movement request criteria
| filter | any (Filter) Filter criteria for inventory movements with support for and/or/not operators |
object (Sort) Sort criteria for inventory movements | |
| limit | integer (Limit) [ 1 .. 100 ] Maximum number of inventory movements to return |
| next_token | string (Next Token) Pagination token for fetching next set of results |
{- "filter": {
- "state": {
- "eq": "DRAFT"
}, - "origin": {
- "eq": "SHOP"
}, - "and": [
- {
- "total_quantity": {
- "gte": 100
}
}, - {
- "created_at": {
- "gte": "2024-01-01T00:00:00Z"
}
}
], - "or": [
- {
- "motive": {
- "contains": "transfer"
}
}, - {
- "destination": {
- "eq": "SHOP"
}
}
]
}, - "sort": {
- "field": "created_at",
- "direction": "desc"
}, - "limit": 20,
- "next_token": "next-token-001"
}[- {
- "id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "deprecated": false,
- "company_id": "company-001",
- "test": false,
- "state": "DRAFT",
- "state_date": "2025-07-02T10:26:31.829Z",
- "motive": "Stock transfer between shops",
- "origin": "SHOP",
- "origin_id": "shop-001",
- "destination": "SHOP",
- "destination_id": "shop-002",
- "total_quantity": 500,
- "number_of_products": 25,
- "number_of_variants": 15,
- "number_of_products_or_variants": 40,
- "number_of_lines": 30,
- "number_of_lines_with_price": 28,
- "number_of_lines_with_quantity": 30
}
]Creates a new product variant in the desired catalog.
Product variant creation payload
| product_id required | string (Parent Product ID) The unique identifier of the parent product to which this variant belongs |
| variant_id | string (Variant ID) An optional unique identifier for the variant, if not provided it will be generated automatically |
required | Array of objects (Variation Options) An array of variation options that define the specific characteristics of this product variant |
| tax_id required | string (Tax Rate ID) The unique identifier of the tax rate that will be applied to this product variant during sales transactions |
| buy_price | number (Buy Price) The cost price that the merchant pays to acquire this product variant, expressed in cents (e.g., 1500 = $15.00) |
| sell_price | number (Sell Price) The retail price that customers pay to purchase this product variant, expressed in cents (e.g., 2000 = $20.00) |
| barcode | string or null (Barcode) The barcode identifier used for inventory management and point-of-sale scanning of this specific product variant |
| reference | string or null (Reference Code) An internal reference code used for inventory tracking and variant identification within the merchant system |
{- "product_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "variant_id": "var_cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}, - {
- "name": "Color",
- "value": "Blue"
}
], - "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "buy_price": 1500,
- "sell_price": 2000,
- "barcode": "1234567890123",
- "reference": "SHIRT-L-BLUE"
}{- "id": "7c5b8017-c28b-4e89-b056-5287f88d0a3d__20572f85-6236-4645-a65e-32dc1126dd99",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "deprecated": false,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "product_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "variant_id": "var_cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}
], - "order": 1,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "updated_at": "2025-07-02T09:44:04.051Z",
- "created_at": "2025-06-30T15:10:33.218Z",
- "deprecated": false,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000
}, - "buy_price": 1500,
- "sell_price": 2000,
- "barcode": "1234567890123",
- "reference": "SHIRT-L-BLUE",
- "is_selected": false
}Updates specific fields of an existing product variant.
Product variant update payload
| product_id required | string (Parent Product ID) The unique identifier of the parent product to which this variant belongs |
| variant_id required | string (Variant ID) The unique identifier of the variant being updated |
Array of objects (Updated Variation Options) The updated array of variation options that define the characteristics of this product variant | |
| tax_id | string (Updated Tax ID) The updated unique identifier of the tax rate to be applied to this product variant |
| buy_price | number (Updated Buy Price) The updated cost price in cents that the business pays to acquire this product variant |
| sell_price | number (Updated Sell Price) The updated retail price in cents that customers pay to purchase this product variant |
| barcode | string or null (Updated Barcode) The updated barcode identifier for inventory management and point-of-sale scanning |
| reference | string or null (Updated Reference Code) The updated internal reference code for inventory tracking and variant identification |
{- "product_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "variant_id": "var_cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}, - {
- "name": "Color",
- "value": "Red"
}
], - "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "buy_price": 1600,
- "sell_price": 2100,
- "barcode": "9876543210987",
- "reference": "SHIRT-L-RED"
}{- "id": "7c5b8017-c28b-4e89-b056-5287f88d0a3d__20572f85-6236-4645-a65e-32dc1126dd99",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "deprecated": false,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "product_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "variant_id": "var_cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}
], - "order": 1,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "updated_at": "2025-07-02T09:44:04.051Z",
- "created_at": "2025-06-30T15:10:33.218Z",
- "deprecated": false,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000
}, - "buy_price": 1500,
- "sell_price": 2000,
- "barcode": "1234567890123",
- "reference": "SHIRT-L-BLUE",
- "is_selected": false
}Fetches a product variant by its unique identifier.
| productId required | string <uuid> (Product ID) Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d The unique identifier of the parent product in UUID format |
| variantId required | string (Variant ID) Example: var_cb75a73d-0c3b-4b38-8064-56b6ec77c10d The unique identifier of the specific product variant |
{- "id": "7c5b8017-c28b-4e89-b056-5287f88d0a3d__20572f85-6236-4645-a65e-32dc1126dd99",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "deprecated": false,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "product_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "variant_id": "var_cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}
], - "order": 1,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "tax": {
- "id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "updated_at": "2025-07-02T09:44:04.051Z",
- "created_at": "2025-06-30T15:10:33.218Z",
- "deprecated": false,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "rate": 2000
}, - "buy_price": 1500,
- "sell_price": 2000,
- "barcode": "1234567890123",
- "reference": "SHIRT-L-BLUE",
- "is_selected": false
}Deletes a product variant by its unique identifier.
| productId required | string <uuid> (Product ID) Example: cb75a73d-0c3b-4b38-8064-56b6ec77c10d The unique identifier of the parent product in UUID format |
| variantId required | string (Variant ID) Example: var_cb75a73d-0c3b-4b38-8064-56b6ec77c10d The unique identifier of the specific product variant |
{- "id": "7c5b8017-c28b-4e89-b056-5287f88d0a3d__20572f85-6236-4645-a65e-32dc1126dd99",
- "updated_at": "2025-07-02T10:26:31.829Z",
- "created_at": "2025-07-02T10:26:31.829Z",
- "deprecated": false,
- "catalog_id": "ba19240a-0442-4bd9-8c15-01b8409e1346",
- "test": true,
- "product_id": "cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "variant_id": "var_cb75a73d-0c3b-4b38-8064-56b6ec77c10d",
- "options": [
- {
- "name": "Size",
- "value": "Large"
}
], - "order": 1,
- "tax_id": "dcc2a3cf-7357-40ab-8a3b-adc43d93afb0",
- "buy_price": 1500,
- "sell_price": 2000,
- "barcode": "1234567890123",
- "reference": "SHIRT-L-BLUE",
- "is_selected": false
}