API reference / Invoices
Invoices API
21 endpoints. Scopes: Scalar360.invoices.READ, .CREATE, .UPDATE, .DELETE or .ALL. All calls need Authorization: Scalar360-oauthtoken <access_token> — see Authentication.
List
/api/v1/invoices
Scope: Scalar360.invoices.READ
| Parameter | In | Type | Required |
|---|---|---|---|
status | query | string | No |
customerId | query | string (uuid) | No |
q | query | string | No |
hasIrn | query | boolean | No |
posOnly | query | boolean | No |
page | query | integer | No |
pageSize | query | integer | No |
sortBy | query | string | No |
sortDir | query | string | No |
archivedOnly | query | boolean | No |
startDate | query | string (date) | No |
endDate | query | string (date) | No |
curl -X GET "https://api.scalar360.com/api/v1/invoices" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create
/api/v1/invoices
Scope: Scalar360.invoices.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
customerId | string (uuid) | ||
warehouseId | string (uuid) | ||
customerName | string | ||
issueDate | string (date) | ||
dueDate | string (date) | ||
notes | string | ||
poRef | string | ||
supplyType | string | ||
reverseCharge | boolean | ||
recurringProfileId | string (uuid) | ||
occurrenceDate | string (date) | ||
lines | array of object | Yes | required, not empty |
lines[].itemId | string (uuid) | ||
lines[].description | string | Yes | required, not blank |
lines[].hsn | string | ||
lines[].qty | number | >= 0 | |
lines[].unit | string | ||
lines[].rate | number | >= 0 | |
lines[].gstRate | number | >= 0 | |
lines[].discount | number | >= 0 |
curl -X POST "https://api.scalar360.com/api/v1/invoices" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"lines":[{"itemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","description":"string","hsn":"string","qty":100,"unit":"string","rate":100}]}'Get
/api/v1/invoices/{id}
Scope: Scalar360.invoices.READ
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/invoices/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update
/api/v1/invoices/{id}
Scope: Scalar360.invoices.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
customerId | string (uuid) | ||
warehouseId | string (uuid) | ||
customerName | string | ||
issueDate | string (date) | ||
dueDate | string (date) | ||
notes | string | ||
poRef | string | ||
supplyType | string | ||
reverseCharge | boolean | ||
recurringProfileId | string (uuid) | ||
occurrenceDate | string (date) | ||
lines | array of object | Yes | required, not empty |
lines[].itemId | string (uuid) | ||
lines[].description | string | Yes | required, not blank |
lines[].hsn | string | ||
lines[].qty | number | >= 0 | |
lines[].unit | string | ||
lines[].rate | number | >= 0 | |
lines[].gstRate | number | >= 0 | |
lines[].discount | number | >= 0 |
curl -X PUT "https://api.scalar360.com/api/v1/invoices/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"customerId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","warehouseId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","customerName":"string","issueDate":"2026-10-12","dueDate":"2026-10-12","notes":"string"}'Delete draft
/api/v1/invoices/{id}
Scope: Scalar360.invoices.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/invoices/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Cancel
/api/v1/invoices/{id}/cancel
Scope: Scalar360.invoices.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
cancellationDate | string (date) | ||
reason | string | Yes | required, not blank, max length 500 |
curl -X POST "https://api.scalar360.com/api/v1/invoices/{id}/cancel" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"reason":"string"}'Email draft
/api/v1/invoices/{id}/email
Scope: Scalar360.invoices.READ
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/invoices/{id}/email" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"/api/v1/invoices/{id}/email
Scope: Scalar360.invoices.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/invoices/{id}/email" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Issue
/api/v1/invoices/{id}/issue
Scope: Scalar360.invoices.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/invoices/{id}/issue" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Payment
/api/v1/invoices/{id}/payments
Scope: Scalar360.invoices.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
amount | number | >= 0 | |
method | string | ||
reference | string | ||
date | string (date) |
curl -X POST "https://api.scalar360.com/api/v1/invoices/{id}/payments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"amount":100,"method":"string","reference":"string","date":"2026-10-12"}'Reverse payment
/api/v1/invoices/{id}/payments/{paymentId}/reverse
Scope: Scalar360.invoices.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
paymentId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
reversalDate | string (date) | ||
reason | string | Yes | required, not blank, max length 500 |
curl -X POST "https://api.scalar360.com/api/v1/invoices/{id}/payments/{paymentId}/reverse" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"reason":"string"}'/api/v1/invoices/{id}/pdf
Scope: Scalar360.invoices.READ
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/invoices/{id}/pdf" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Ship
/api/v1/invoices/{id}/ship
Scope: Scalar360.invoices.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
warehouseId | string (uuid) | ||
shipDate | string (date) | ||
carrier | string | ||
trackingNumber | string | ||
notes | string | ||
items | array of object | Yes | required, not empty |
items[].invoiceLineId | string (uuid) | ||
items[].quantity | number | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/invoices/{id}/ship" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"items":[{"invoiceLineId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","quantity":100}]}'Fulfilment
/api/v1/invoices/{id}/shipments
Scope: Scalar360.invoices.READ
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/invoices/{id}/shipments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update shipping
/api/v1/invoices/{id}/shipping
Scope: Scalar360.invoices.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
status | string | ||
carrier | string | ||
trackingNumber | string | ||
shipDate | string (date) |
curl -X PATCH "https://api.scalar360.com/api/v1/invoices/{id}/shipping" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status":"string","carrier":"string","trackingNumber":"string","shipDate":"2026-10-12"}'Update terms
/api/v1/invoices/{id}/terms
Scope: Scalar360.invoices.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
dueDate | string (date) | ||
notes | string | ||
poRef | string |
curl -X PATCH "https://api.scalar360.com/api/v1/invoices/{id}/terms" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"dueDate":"2026-10-12","notes":"string","poRef":"string"}'Archive invoices
/api/v1/invoices/archive
Scope: Scalar360.invoices.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
ids | array of string (uuid) | Yes | required, not empty |
archived | boolean |
curl -X POST "https://api.scalar360.com/api/v1/invoices/archive" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ids":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Preview pdf
/api/v1/invoices/preview-pdf
Scope: Scalar360.invoices.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | ||
address | string | ||
gstin | string | ||
pan | string | ||
phone | string | ||
email | string | ||
bankAccountNo | string | ||
bankName | string | ||
bankIfsc | string | ||
bankAddress | string | ||
accentColor | string | ||
logoUrl | string | ||
invoiceFooter | string | ||
invoiceTemplate | string | ||
termsAndConditions | string | ||
invoiceLayoutConfig | string |
curl -X POST "https://api.scalar360.com/api/v1/invoices/preview-pdf" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","address":"string","gstin":"string","pan":"string","phone":"string","email":"string"}'Quick
/api/v1/invoices/quick
Scope: Scalar360.invoices.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
customerName | string | ||
customerId | string (uuid) | ||
customerPhone | string | ||
customerState | string | ||
supplyType | string | ||
reverseCharge | boolean | ||
issueImmediately | boolean | ||
paidNow | boolean | ||
paymentMethod | string | ||
warehouseId | string (uuid) | ||
issueDate | string (date) | ||
dueDate | string (date) | ||
notes | string | ||
lines | array of object | Yes | required, not empty |
lines[].itemId | string (uuid) | ||
lines[].description | string | Yes | required, not blank |
lines[].hsn | string | ||
lines[].qty | number | >= 0 | |
lines[].unit | string | ||
lines[].rate | number | >= 0 | |
lines[].gstRate | number | >= 0 | |
lines[].discount | number | >= 0 |
curl -X POST "https://api.scalar360.com/api/v1/invoices/quick" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"lines":[{"itemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","description":"string","hsn":"string","qty":100,"unit":"string","rate":100}]}'Sales register pdf
/api/v1/invoices/register/pdf
Scope: Scalar360.invoices.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
startDate | string (date) | Yes | |
endDate | string (date) | Yes | |
status | string | ||
posOnly | boolean | ||
q | string | ||
sortBy | string | ||
sortDir | string | ||
columns | array of object | Yes | required, not empty |
columns[].key | string | Yes | required |
columns[].label | string | Yes | required |
columns[].fieldKey | string |
curl -X POST "https://api.scalar360.com/api/v1/invoices/register/pdf" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startDate":"2026-10-12","endDate":"2026-10-12","columns":[{"key":"string","label":"string","fieldKey":"string"}]}'Search invoices
/api/v1/invoices/search
Scope: Scalar360.invoices.READ
| Parameter | In | Type | Required |
|---|---|---|---|
search | query | string (default ) | No |
curl -X GET "https://api.scalar360.com/api/v1/invoices/search" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"