API reference / Recurring
Recurring API
8 endpoints. Scopes: Scalar360.recurring.READ, .CREATE, .UPDATE, .DELETE or .ALL. All calls need Authorization: Scalar360-oauthtoken <access_token> — see Authentication.
GET
List
/api/v1/recurring
Scope: Scalar360.recurring.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string | No |
active | query | string | No |
page | query | integer | No |
pageSize | query | integer | No |
sortBy | query | string | No |
sortDir | query | string | No |
startDate | query | string (date) | No |
endDate | query | string (date) | No |
curl -X GET "https://api.scalar360.com/api/v1/recurring" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"POST
Create
/api/v1/recurring
Scope: Scalar360.recurring.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
customerId | string (uuid) | ||
customerName | string | ||
frequency | string | Yes | required, not blank |
amount | number | ||
startDate | string (date) | ||
nextDate | string (date) | ||
endDate | string (date) | ||
neverExpires | boolean | ||
dueDays | integer | ||
active | boolean | ||
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/recurring" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"frequency":"string","lines":[{"itemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","description":"string","hsn":"string","qty":100,"unit":"string","rate":100}]}'GET
Get
/api/v1/recurring/{id}
Scope: Scalar360.recurring.READ
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/recurring/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"PUT
Update
/api/v1/recurring/{id}
Scope: Scalar360.recurring.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
customerId | string (uuid) | ||
customerName | string | ||
frequency | string | Yes | required, not blank |
amount | number | ||
startDate | string (date) | ||
nextDate | string (date) | ||
endDate | string (date) | ||
neverExpires | boolean | ||
dueDays | integer | ||
active | boolean | ||
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 PUT "https://api.scalar360.com/api/v1/recurring/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"customerId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","customerName":"string","frequency":"string","amount":100,"startDate":"2026-10-12","nextDate":"2026-10-12"}'DELETE
Delete
/api/v1/recurring/{id}
Scope: Scalar360.recurring.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/recurring/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"POST
Generate
/api/v1/recurring/{id}/generate
Scope: Scalar360.recurring.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/recurring/{id}/generate" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"POST
Toggle
/api/v1/recurring/{id}/toggle
Scope: Scalar360.recurring.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/recurring/{id}/toggle" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"POST
From invoice
/api/v1/recurring/from-invoice/{invoiceId}
Scope: Scalar360.recurring.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
invoiceId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
customerId | string (uuid) | ||
customerName | string | ||
frequency | string | Yes | required, not blank |
amount | number | ||
startDate | string (date) | ||
nextDate | string (date) | ||
endDate | string (date) | ||
neverExpires | boolean | ||
dueDays | integer | ||
active | boolean | ||
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/recurring/from-invoice/{invoiceId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"frequency":"string","lines":[{"itemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","description":"string","hsn":"string","qty":100,"unit":"string","rate":100}]}'