Download OpenAPI specification:Download
Below is an overview of our REST API, including endpoints related to our general ledger and other components of SoftLedger's accounting software.
SoftLedger has the following endpoints.
Site | Endpoint |
---|---|
Production | https://api.softledger.com/v2 |
Europe | https://eu-api.softledger.com/v2 |
Please contact support@softledger.com to request access to the API.
Previous versions documentation of the API are available at the linke below
Note that these docs are deprecated and will reach end of life on April 30th, 2024.
SoftLedger API uses OAuth2.0 to access it's API. For any request to the API, you'll need to pass a JWT.
Prior to making any API request you'll need to request an OAuth token.
After you receive a token, add the following headers to every subsequent request:
{
"Authorization": "Bearer {access_token}",
"Content-Type": "application/json"
}
Request OAuth Token
This endpoint uses the base URL without version as the request URL
https://api.softledger.com/oauth/token
https://eu-api.softledger.com/oauth/token
The following Legacy URLs will continue to be supported
https://auth.accounting-auth.com/oauth/token
https://eu.accounting-auth.com/oauth/token
grant_type required | string The OAuth grant type used to generate the toekn.
|
audience required | string API reference. Will be one of these two values
|
client_id required | string The Client ID of the OAuth client |
client_secret required | string The Client Secret of the OAuth client |
tenantUUID | string Note: This is only required for multi-tenant api keys The Tenant UUID to request data for |
{- "grant_type": "string",
- "tenantUUID": "string",
- "audience": "string",
- "client_id": "string",
- "client_secret": "string"
}
{- "access_token": "string",
- "expires_in": 0,
- "scope": "string"
}
Actions performed by the api will have their audit logs labelled with the name of the api key generated by the SoftLedger team.
Performing requests on behalf of users / Labeling audit log entries
If you would like to use an alternate label, or perform actions on behalf of a user, you can pass the x-softledger-auditlabel
header with the email of a user or a string label. This label will then be used in the audit log entry.
Requests to the SoftLedger API are rate limited to 200 requests per minute.
A rate limited request will return a HTTP Status of 429.
Every request to the API will return the following headers:
X-RateLimit-Remaining: String<integer>
- The number of api requests left during the interval.
X-RateLimit-RetryAfter: String<integer>
- The number of seconds remaining until the next interval.
The query paramaters for most GET requests limit
and cursor
allow pagination through large sets of data.
By default limit
is set to 25
In order to page forward set the cursor
query param to the cursor
value returned in the previous requests response data.
The query parameter filter
and filterType
for most GET endpoints allows you to filter on the requested data.
The filter
paramater should be a JSON.stringified key: value object.
The filterType
should be one of all
or any
. It defaults to all
.
If set to all
all results that match ALL filters are returned.
If set to any
all restults that match ANY filters are returned.
For example, if we wanted to get all Invoices that were paid, the where clause would be:
{
"status": {
"equals": "paid"
}
}
This would then be stringified prior to attaching in the URL
let tmp = JSON.stringify({
status: {
equals: "paid"
}
});
Then the request URL would look as follows
https://api.softledger.com/api/invoices?filter=tmp&filterType=any
Key | Description |
---|---|
equals | Exactly equals |
contains | Column contains. *String values only |
not | Does not equal |
gt | Greater than |
gte | Greater than or equal to |
lt | Less than |
lte | Less than or equal to |
in | Column is exactly any of the passed columns. Its value should be an array of values |
isNull | Boolean. Pass true to return columns with a null value and false to return columns with a set value. |
Get all created or approved bills posted after "2020-01-01"
{
"status": {
"in": ["created", "approved"]
},
"postingDate": {
"gt": "2020-01-01"
}
}
Get all Transactions where the reconcileId is not set. Indicating they are not reconciled
{
"reconcileId": {
"isNull": true
}
}
Successful API request responses will be described inline throughout the document 401,403,404 Messages will not contain a body as the error is implied. Other 4xx error codes will return as following:
{
error: "Error Message"
}
Webhooks allow you to subscribe to events that happen in SoftLedger. When one of those events is triggered, we'll send an HTTP POST payload to the webhook's configured URL.
Webhooks are sent with an 'at-least' once method. We recommend utilizing the uuid
field to ensure that you do not process the same webhook multiple times.
Webhook endpoints should be respond immediately with a http 200 status code. The system that receives the webhook should then process the webhook asynchronously and not wait for its work to complete prior to responding to the webhook request. If the endpoint is slow to respond or returns a non 200 status code, the webhook endpoint will be blacklisted by SoftLedger. Please contact support@softledger.com
to resolve the issue if this occurs.
The webhook payload will be sent as a JSON object with the following structure:
{
"uuid": "Unique identifier for the webhook",
"date": "ISO timestamp for when the webhook was triggered",
"tenantId": "The tenantUUID that triggered the webhook",
"objectType": "The type of object that triggered the webhook",
"objectId": "The _id of the object that triggered the webhook",
"action": "The action that triggered the webhook",
}
Each endpoint below specifies what webhooks are sent for each request. The list will contain the objectType
and action
that will be sent in the webhook payload.
Returns a list of webhooks in ascending order by uri
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "uri": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}
]
}
creates a new webhook
JSON body to create new Webhook
uri required | string |
{- "uri": "string"
}
{- "_id": 0,
- "uri": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
label | ✅ | ✅ |
line1 | ✅ | ❌ |
line2 | ✅ | ❌ |
city | ✅ | ❌ |
state | ✅ | ❌ |
zip | ✅ | ❌ |
country | ✅ | ❌ |
isDefault | ✅ | ❌ |
isVerified | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
CustomerId | ✅ | ❌ |
VendorId | ✅ | ❌ |
Customer.name | ❌ | ✅ |
Vendor.name | ❌ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "label:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string",
- "isDefault": true,
- "isVerified": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "CustomerId": 0,
- "VendorId": 0,
- "Customer": {
- "name": "string"
}, - "Vendor": {
- "name": "string"
}
}
]
}
Creates a new address
JSON body to create new Address
Only one of [CustomerId, VendorId, Customer.name, Vendor.name]
can be set
label required | string |
line1 | string |
line2 | string |
city | string |
state | string |
zip | string |
country | string |
isDefault | boolean Set this as the default address for the Customer or Vendor |
CustomerId | integer Ref: Customer._id |
VendorId | integer Ref: Vendor._id |
object | |
object |
{- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string",
- "isDefault": true,
- "CustomerId": 0,
- "VendorId": 0,
- "Customer": {
- "name": "string"
}, - "Vendor": {
- "name": "string"
}
}
{- "_id": 0,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string",
- "isDefault": true,
- "isVerified": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "CustomerId": 0,
- "VendorId": 0
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
{- "count": "string",
- "estimate": true
}
Update One Address
id required | string Address Id |
JSON body containing key and values to update
label | string |
line1 | string |
line2 | string |
city | string |
state | string |
zip | string |
country | string |
isDefault | boolean Set this as the default address for the Customer or Vendor |
CustomerId | integer Ref: Customer._id |
VendorId | integer Ref: Vendor._id |
object | |
object |
{- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string",
- "isDefault": true,
- "CustomerId": 0,
- "VendorId": 0,
- "Customer": {
- "name": "string"
}, - "Vendor": {
- "name": "string"
}
}
{- "_id": 0,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string",
- "isDefault": true,
- "isVerified": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "CustomerId": 0,
- "VendorId": 0
}
{- "_id": 0,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string",
- "isDefault": true,
- "isVerified": true,
- "CustomerId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "VendorId": 0,
- "Customer": {
- "name": "string"
}, - "Vendor": {
- "name": "string"
}
}
[- {
- "client_id": "string",
- "name": "string",
- "active": true,
- "permissions": [
- "string"
], - "audience": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
Creates a new api key
JSON body to create new api key
Ensure to record the returned client_secret as it will not be visible again.
name required | string >= 5 characters |
permissions | Array of strings |
{- "name": "string",
- "permissions": [
- "string"
]
}
{- "client_id": "string",
- "client_secret": "string",
- "audience": "string",
- "name": "string",
- "permissions": [
- "string"
], - "active": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Set the permissions for an api key
client_id required | string Api Key client_id |
List of full permissions to set for api key..
This list will replace the existing permission list.
permissions required | Array of strings Must have at least one permission. Duplicates ignored |
{- "permissions": [
- "string"
]
}
Returns a list of audit logs in descending order by date
Field | Filterable |
---|---|
_id | ✅ |
date | ✅ |
object | ❌ |
objectType | ✅ |
objectId | ✅ |
message | ✅ |
user | ❌ |
api | ❌ |
userType | ✅ |
userLabel | ✅ |
where | string JSON Key:Value object to filter results on |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": "string",
- "date": "2019-08-24T14:15:22Z",
- "object": { },
- "objectType": "string",
- "objectId": "string",
- "message": "string",
- "user": "string",
- "api": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "userType": "string",
- "userLabel": "string"
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
status | ✅ | ✅ |
referenceNumber | ✅ | ✅ |
postedDate | ✅ | ✅ |
paymentDate | ✅ | ✅ |
currency | ✅ | ✅ |
amount | ✅ | ✅ |
LocationId | ✅ | ❌ |
ClearingAccountId | ✅ | ❌ |
CashAccountId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "referenceNumber:DESC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "status": "created",
- "referenceNumber": "string",
- "postedDate": "2019-08-24",
- "paymentDate": "2019-08-24",
- "memo": "string",
- "currency": "string",
- "amount": "string",
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ClearingAccountId": 0,
- "ClearingAccount": {
- "name": "string",
- "number": "string"
}, - "CashAccountId": 0,
- "CashAccount": {
- "name": "string",
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com"
}
]
}
creates a new Batch Payment
JSON body to create new Batch Payment
Created batch payments will be created in created
status unless the setting for Auto-Approve (AP) is enabled, then the status will be approved
paymentDate required | string <date> |
referenceNumber required | string |
CashAccountId required | integer Ref: LedgerAccount._id |
ClearingAccountId required | integer Ref: LedgerAccount._id |
required | Array of objects All bills require, "_id" and "amount". Bills must be from the same location and be in the same currency. |
postedDate | string <date> |
memo | string |
{- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "referenceNumber": "string",
- "memo": "string",
- "CashAccountId": 0,
- "ClearingAccountId": 0,
- "Bills": [
- {
- "_id": 0,
- "amount": "string",
- "memo": "string"
}
]
}
{- "_id": 0,
- "referenceNumber": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "CashAccountId": 0,
- "ClearingAccountId": 0,
- "LocationId": 0,
- "currency": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
This endpoint returns bills for the specified batch payment. The parameters of this endpoint are the same as for Bills Search
id required | string BatchPayment._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "paymentAmount": "string",
- "paymentMemo": "string",
- "_id": 0,
- "status": "created",
- "approvalStatus": "unapproved",
- "paymentStatus": "unpaid",
- "externalId": "string",
- "invoiceNumber": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "currency": "string",
- "amount": "string",
- "dueAmount": "string",
- "customFields": { },
- "SystemJobId": "string",
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "VendorId": 0,
- "Vendor": {
- "name": "string"
}, - "APAccountId": 0,
- "APAccount": {
- "name": "string",
- "number": "string"
}, - "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
The same filters as Search can be used here.
id required | string BatchPayment._id |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
credit | boolean Default: false If true, only returns AP Credits i.e. bills with a negative amount. If false or not specified, only returns bills with a positive amount. |
{- "count": "string",
- "estimate": true
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
{- "count": "string",
- "estimate": true
}
Get one Batch Payment
id required | string BatchPayment._id |
{- "_id": 0,
- "status": "created",
- "referenceNumber": "string",
- "postedDate": "2019-08-24",
- "paymentDate": "2019-08-24",
- "memo": "string",
- "currency": "string",
- "amount": "string",
- "VendorIds": [
- 0
], - "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ClearingAccountId": 0,
- "ClearingAccount": {
- "name": "string",
- "number": "string"
}, - "CashAccountId": 0,
- "CashAccount": {
- "name": "string",
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com"
}
This endpoint returns payments for the specified batch payment. The parameters of this endpoint are the same as for Payments Search
id required | string BatchPayment._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "paymentAmount": "string",
- "paymentMemo": "string",
- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "checkNumber": "string",
- "number": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "VendorId": 0,
- "CustomerId": 0,
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Address": {
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string",
- "email": "user@example.com",
- "nameOnCheck": "string"
}, - "Bill": {
- "invoiceNumber": "string",
- "description": "string"
}, - "Invoice": {
- "number": "string",
- "reference": "string"
}, - "Customer": {
- "id": "string",
- "name": "string",
- "email": "user@example.com"
}, - "VendorCredit": {
- "number": "string"
}, - "CashReceipt": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "BatchPayment": {
- "referenceNumber": "string"
}
}
]
}
]
}
The same filters as Search can be used here.
id required | string BatchPayment._id |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
type | string Enum: "ap" "ar" Filter by AP or AR payments If not specified, all payment types will be returned |
{- "count": "string",
- "estimate": true
}
Void Batch Payment
id required | string BatchPayment._id |
JSON body containing void details. Can only void a batch in "approved" status
description | string |
voidDate | string <date> Date of the void. Defaults to today. Must be today or earlier. |
{- "description": "string",
- "voidDate": "2019-08-24"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
invoiceNumber | ✅ | ✅ |
externalId | ✅ | ✅ |
description | ✅ | ✅ |
invoiceDate | ✅ | ✅ |
postedDate | ✅ | ✅ |
dueDate | ✅ | ✅ |
dueAmount | ✅ | ✅ |
amount | ✅ | ✅ |
VendorId | ✅ | ❌ |
Vendor.name | ❌ | ✅ |
customFields | ✅ | ❌ |
currency | ✅ | ✅ |
LocationId | ✅ | ❌ |
ICLocationId | ✅ | ❌ |
status | ✅ | ✅ |
approvalStatus | ✅ | ✅ |
paymentStatus | ✅ | ✅ |
PurchaseOrderId | ✅ | ❌ |
APAccountId | ✅ | ❌ |
SystemJobId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "number:ASC" Order to return results in. ex "date:desc" |
credit | boolean Default: false If true, only returns AP Credits i.e. bills with a negative amount. If false or not specified, only returns bills with a positive amount. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "status": "created",
- "approvalStatus": "unapproved",
- "paymentStatus": "unpaid",
- "externalId": "string",
- "invoiceNumber": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "currency": "string",
- "amount": "string",
- "dueAmount": "string",
- "customFields": { },
- "SystemJobId": "string",
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "VendorId": 0,
- "Vendor": {
- "name": "string"
}, - "APAccountId": 0,
- "APAccount": {
- "name": "string",
- "number": "string"
}, - "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
creates a new Bill
JSON body to create new Bill
One of [Vendor.name, VendorId]
is Required
One of [Location.id, LocationId]
is Required
One of [APAccount.number, APAccountId]
is Required
invoiceDate required | string <date> | |||||||||||||||||||||||||||||||||||
postingDate required | string <date> | |||||||||||||||||||||||||||||||||||
VendorId required | integer Ref: Vendor._id | |||||||||||||||||||||||||||||||||||
LocationId required | integer Ref: Location._id | |||||||||||||||||||||||||||||||||||
APAccountId required | integer Ref: LedgerAccount._id | |||||||||||||||||||||||||||||||||||
currency required | string <ISO4217 3 Char Code> | |||||||||||||||||||||||||||||||||||
externalId | string | |||||||||||||||||||||||||||||||||||
dueDate | string <date> | |||||||||||||||||||||||||||||||||||
notes | string | |||||||||||||||||||||||||||||||||||
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents | |||||||||||||||||||||||||||||||||||
description | string | |||||||||||||||||||||||||||||||||||
customFields | object Default: {} Key -> Value hash of custom fields, must be defined via the UI to show up in the UI | |||||||||||||||||||||||||||||||||||
object | ||||||||||||||||||||||||||||||||||||
ICLocationId | integer Ref: Location._id | |||||||||||||||||||||||||||||||||||
object | ||||||||||||||||||||||||||||||||||||
object | ||||||||||||||||||||||||||||||||||||
object | ||||||||||||||||||||||||||||||||||||
PurchaseOrderId | integer Ref: PurchaseOrder._id | |||||||||||||||||||||||||||||||||||
object | ||||||||||||||||||||||||||||||||||||
Array of objects Handling of LedgerAccountId:
** If LedgerAccountId is set, it will override the LedgerAccount.number ** Tax Logic:
|
{- "externalId": "string",
- "invoiceDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "description": "string",
- "currency": "string",
- "customFields": { },
- "LocationId": 0,
- "Location": {
- "id": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string"
}, - "VendorId": 0,
- "Vendor": {
- "name": "string"
}, - "APAccountId": 0,
- "APAccount": {
- "number": "string"
}, - "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string"
}, - "BillLineItems": [
- {
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}
}
]
}
{- "_id": 0,
- "externalId": "string",
- "invoiceNumber": "string",
- "invoiceDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "description": "string",
- "currency": "string",
- "amount": "string",
- "customFields": { },
- "LocationId": 0,
- "ICLocationId": 0,
- "VendorId": 0,
- "APAccountId": 0,
- "PurchaseOrderId": 0,
- "status": "created",
- "approvalStatus": "unapproved",
- "paymentStatus": "unpaid"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
idx | ✅ | ✅ |
description | ✅ | ✅ |
amount | ✅ | ✅ |
quantity | ✅ | ✅ |
taxAmount | ✅ | ✅ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
BillId | ✅ | ❌ |
Bill.invoiceNumber | ✅ | ✅ |
Bill.status | ✅ | ✅ |
Bill.approvalStatus | ✅ | ✅ |
Bill.paymentStatus | ✅ | ✅ |
Bill.currency | ✅ | ✅ |
Bill.description | ✅ | ✅ |
Bill.invoiceDate | ✅ | ✅ |
Bill.postingDate | ✅ | ✅ |
Bill.dueDate | ✅ | ✅ |
Bill.customFields | ✅ | ❌ |
Bill.createdAt | ✅ | ✅ |
Bill.updatedAt | ✅ | ✅ |
Bill.VendorId | ✅ | ❌ |
Bill.APAccountId | ✅ | ❌ |
Bill.LocationId | ✅ | ❌ |
Bill.ICLocationId | ✅ | ❌ |
APAccount.number | ❌ | ✅ |
BillAccount.number | ❌ | ✅ |
LedgerAccountId | ✅ | ❌ |
LedgerAccount.number | ❌ | ✅ |
Vendor.name | ❌ | ✅ |
Vendor.is1099 | ✅ | ✅ |
Location.name | ❌ | ✅ |
ICLocation.name | ❌ | ✅ |
TaxCodeId | ✅ | ❌ |
TaxCode.code | ❌ | ✅ |
ItemId | ✅ | ❌ |
Item.name | ❌ | ✅ |
Item.salePrice | ✅ | ✅ |
Item.purchasePrice | ✅ | ✅ |
Custom1Id | ✅ | ❌ |
Custom2Id | ✅ | ❌ |
Custom3Id | ✅ | ❌ |
CostCenterId | ✅ | ❌ |
CostCenter.id | ❌ | ✅ |
ProductId | ✅ | ❌ |
Product.id | ❌ | ✅ |
JobId | ✅ | ❌ |
Job.number | ❌ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "Bill.invoiceNumber:ASC" Order to return results in. ex "date:desc" |
credit | boolean Filter by credit status of the Bill. Operates as follows:
|
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "idx": 0,
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "total": "string",
- "BillId": 0,
- "Bill": {
- "invoiceNumber": "string",
- "status": "created",
- "approvalStatus": "unapproved",
- "paymentStatus": "unpaid",
- "currency": "string",
- "description": "string",
- "invoiceDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "customFields": { },
- "createdAt": "2019-08-24",
- "updatedAt": "2019-08-24",
- "APAccountId": 0,
- "VendorId": 0,
- "LocationId": 0,
- "ICLocationId": 0
}, - "APAccount": {
- "name": "string",
- "number": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string",
- "is1099": true
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocation": {
- "id": "string",
- "name": "string"
}, - "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string",
- "salePrice": "string",
- "purchasePrice": "string",
- "BillAccount": {
- "name": "string",
- "number": "string"
}
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string",
- "name": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string",
- "name": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string",
- "name": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string",
- "name": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string",
- "name": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
This endpoint returns unpaid bills/credits.
The parameters of this endpoint are the same as for Bills Search
The following parameters are also supported in addition to the ones listed in Bills Search
filterCurrency | string Provide this to only show unpaid bills in the specified currency. This parameter is optional. |
filterLocationId | string <number> Ref: "Location"._id Provide this to only show unpaid bills from the specified location. Bills from child locations of the provided location are not included. This parameter is optional. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "status": "created",
- "approvalStatus": "unapproved",
- "paymentStatus": "unpaid",
- "externalId": "string",
- "invoiceNumber": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "currency": "string",
- "amount": "string",
- "dueAmount": "string",
- "customFields": { },
- "SystemJobId": "string",
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "VendorId": 0,
- "Vendor": {
- "name": "string"
}, - "APAccountId": 0,
- "APAccount": {
- "name": "string",
- "number": "string"
}, - "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
credit | boolean Default: false If true, only returns AP Credits i.e. bills with a negative amount. If false or not specified, only returns bills with a positive amount. |
{- "count": "string",
- "estimate": true
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
credit | boolean Filter by credit status of the Bill. Operates as follows:
|
{- "count": "string",
- "estimate": true
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
filterCurrency | string Provide this to only show unpaid bills in the specified currency. This parameter is optional. |
filterLocationId | string <number> Ref: "Location"._id Provide this to only show unpaid bills from the specified location. Bills from child locations of the provided location are not included. This parameter is optional. |
{- "count": "string",
- "estimate": true
}
creates a new Bill Line
id required | string Bill._id |
amount required | string <number> |
quantity required | string <number> |
description | string Required if ItemId is not set |
taxAmount | string <number> |
TaxCodeId | integer Ref: TaxCode._id |
object | |
ItemId | integer Ref: Item._id |
object | |
CostCenterId | integer Ref: Cost Center._id |
object | |
JobId | integer Ref: Job._id |
object | |
ProductId | integer Ref: Product._id |
object | |
Custom1Id | integer Ref: Custom1._id |
object | |
Custom2Id | integer Ref: Custom2._id |
object | |
Custom3Id | integer Ref: Custom3._id |
object | |
LedgerAccountId | integer Ref: LedgerAccount._id |
object |
{- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "id": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "ItemId": 0,
- "CostCenterId": 0,
- "JobId": 0,
- "ProductId": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0,
- "LedgerAccountId": 0
}
{- "_id": 0,
- "status": "created",
- "approvalStatus": "unapproved",
- "paymentStatus": "unpaid",
- "externalId": "string",
- "invoiceNumber": "string",
- "invoiceDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "description": "string",
- "currency": "string",
- "amount": "string",
- "dueAmount": "string",
- "customFields": { },
- "SystemJobId": "string",
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "VendorId": 0,
- "Vendor": {
- "id": "string",
- "name": "string",
- "email": "string"
}, - "APAccountId": 0,
- "APAccount": {
- "name": "string",
- "number": "string"
}, - "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "BillLineItems": [
- {
- "_id": 0,
- "idx": 0,
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string",
- "LedgerAccountId": 0
}, - "ItemId": 0,
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string",
- "salePrice": "string",
- "BillAccountId": 0,
- "BillAccount": {
- "name": "string",
- "number": 0
}
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string",
- "name": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string",
- "name": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string",
- "name": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string",
- "name": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string",
- "name": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string",
- "name": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Update One Bill
id required | string Bill Id |
JSON body containing key and values to update
Can only update an bill with "created" status
externalId | string |
invoiceDate | string <date> |
postingDate | string <date> |
dueDate | string <date> |
notes | string |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
description | string |
currency | string <ISO4217 3 Char Code> |
customFields | object Default: {} Key -> Value hash of custom fields, must be defined via the UI to show up in the UI |
LocationId | integer Ref: Location._id |
object | |
ICLocationId | integer Ref: Location._id |
object | |
VendorId | integer Ref: Vendor._id |
object | |
APAccountId | integer Ref: LedgerAccount._id |
object | |
PurchaseOrderId | integer Ref: PurchaseOrder._id |
object |
{- "externalId": "string",
- "invoiceDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "description": "string",
- "currency": "string",
- "customFields": { },
- "LocationId": 0,
- "Location": {
- "id": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string"
}, - "VendorId": 0,
- "Vendor": {
- "name": "string"
}, - "APAccountId": 0,
- "APAccount": {
- "number": "string"
}, - "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string"
}
}
{- "_id": 0,
- "externalId": "string",
- "invoiceNumber": "string",
- "invoiceDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "description": "string",
- "amount": "string",
- "dueAmount": "string",
- "currency": "string",
- "customFields": { },
- "LocationId": 0,
- "ICLocationId": 0,
- "VendorId": 0,
- "APAccountId": 0,
- "PurchaseOrderId": 0
}
Update a Bill Line
id required | string BillLineItem._id |
description | string Required if ItemId is not set |
amount | string <number> |
quantity | string <number> |
taxAmount | string <number> |
TaxCodeId | integer Ref: TaxCode._id |
object | |
ItemId | integer Ref: Item._id |
object | |
CostCenterId | integer Ref: Cost Center._id |
object | |
JobId | integer Ref: Job._id |
object | |
ProductId | integer Ref: Product._id |
object | |
Custom1Id | integer Ref: Custom1._id |
object | |
Custom2Id | integer Ref: Custom2._id |
object | |
Custom3Id | integer Ref: Custom3._id |
object | |
LedgerAccountId | integer Ref: LedgerAccount._id |
object |
{- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "id": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "ItemId": 0,
- "CostCenterId": 0,
- "JobId": 0,
- "ProductId": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0,
- "LedgerAccountId": 0
}
This endpoint returns only payments for the specified bill. The response and parameters of this endpoint are the same as for Payments Search
id required | string Bill._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "checkNumber": "string",
- "number": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "VendorId": 0,
- "CustomerId": 0,
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Address": {
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string",
- "email": "user@example.com",
- "nameOnCheck": "string"
}, - "Bill": {
- "invoiceNumber": "string",
- "description": "string"
}, - "Invoice": {
- "number": "string",
- "reference": "string"
}, - "Customer": {
- "id": "string",
- "name": "string",
- "email": "user@example.com"
}, - "VendorCredit": {
- "number": "string"
}, - "CashReceipt": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "BatchPayment": {
- "referenceNumber": "string"
}
}
]
}
Void Bill
id required | string Bill._id |
Bills with linked payments cannot be voided
Bills in created or voided status cannot be voided
description | string |
postingDate | string <date> |
{- "description": "string",
- "postingDate": "2019-08-24"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
number | ✅ | ✅ |
externalId | ✅ | ✅ |
type | ✅ | ✅ |
amount | ✅ | ✅ |
unused | ✅ | ✅ |
description | ✅ | ✅ |
currency | ✅ | ✅ |
receiveDate | ✅ | ✅ |
postingDate | ✅ | ✅ |
status | ✅ | ✅ |
applyToInvoices | ✅ | ❌ |
CustomerId | ✅ | ❌ |
LedgerAccountId | ✅ | ❌ |
UnappliedCashAccountId | ✅ | ❌ |
LocationId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "number:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "number": "string",
- "externalId": "string",
- "type": "charge",
- "amount": "string",
- "unused": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "status": "created",
- "applyToInvoices": true,
- "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string",
- "name": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "UnappliedCashAccountId": 0,
- "UnappliedCashAccount": {
- "number": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Creates a new Cash Receipt
JSON body to create new Cash Receipt
Only one of [Customer.id, CustomerId]
can be set
Only one of [LedgerAccount.number, LedgerAccountId]
can be set
Only one of [Location.id, LocationId]
can be set
Only one of [UnappliedCashAccount.number, UnappliedCashAccountId]
can be set
number required | string |
type required | string Enum: "charge" "check" "ach" "wire" "cash" |
amount required | string <number> Must be > 0 |
currency required | string Ref: Currency.code |
receiveDate required | string <date> |
postingDate required | string <date> |
externalId | string |
description | string |
applyToInvoices | boolean Default: false |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
CustomerId | number Ref: Customer._id |
object | |
LedgerAccountId | number Ref: LedgerAccount._id |
object | |
LocationId | number Ref: Location._id |
object | |
UnappliedCashAccountId | number Ref: LedgerAccount._id |
object |
{- "number": "string",
- "externalId": "string",
- "type": "charge",
- "amount": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "applyToInvoices": false,
- "CustomerId": 0,
- "Customer": {
- "id": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string"
}, - "UnappliedCashAccountId": 0,
- "UnappliedCashAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "number": "string",
- "externalId": "string",
- "type": "charge",
- "amount": "string",
- "unused": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "status": "created",
- "applyToInvoices": true,
- "CustomerId": 0,
- "LedgerAccountId": 0,
- "LocationId": 0,
- "UnappliedCashAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
{- "count": "string",
- "estimate": true
}
Get one Cash Receipt
id required | string Cash Receipt Id |
{- "_id": 0,
- "number": "string",
- "externalId": "string",
- "type": "charge",
- "amount": "string",
- "unused": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "status": "created",
- "applyToInvoices": true,
- "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string",
- "name": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "UnappliedCashAccountId": 0,
- "UnappliedCashAccount": {
- "number": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Update One Cash Receipt
id required | string Cash Receipt Id |
JSON body containing key and values to update
Cannot update a Cash Receipt if an unapplied cash journal entry was created
Only one of [Customer.id, CustomerId]
can be set
Only one of [LedgerAccount.number, LedgerAccountId]
can be set
Only one of [Location.id, LocationId]
can be set
number | string |
externalId | string |
type | string Enum: "charge" "check" "ach" "wire" "cash" |
amount | string <number> Must be > 0 |
description | string |
currency | string Ref: Currency.code |
receiveDate | string <date> |
postingDate | string <date> |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
CustomerId | number Ref: Customer._id |
object | |
LedgerAccountId | number Ref: LedgerAccount._id |
object | |
LocationId | number Ref: Location._id |
object |
{- "number": "string",
- "externalId": "string",
- "type": "charge",
- "amount": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "CustomerId": 0,
- "Customer": {
- "id": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string"
}
}
{- "_id": 0,
- "number": "string",
- "externalId": "string",
- "type": "charge",
- "amount": "string",
- "unused": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "status": "created",
- "applyToInvoices": true,
- "CustomerId": 0,
- "LedgerAccountId": 0,
- "LocationId": 0,
- "UnappliedCashAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
This endpoint returns only payments for the specified cash receipt. The response and parameters of this endpoint are the same as for Payments Search
id required | string CashReceipt._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "checkNumber": "string",
- "number": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "VendorId": 0,
- "CustomerId": 0,
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Address": {
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string",
- "email": "user@example.com",
- "nameOnCheck": "string"
}, - "Bill": {
- "invoiceNumber": "string",
- "description": "string"
}, - "Invoice": {
- "number": "string",
- "reference": "string"
}, - "Customer": {
- "id": "string",
- "name": "string",
- "email": "user@example.com"
}, - "VendorCredit": {
- "number": "string"
}, - "CashReceipt": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "BatchPayment": {
- "referenceNumber": "string"
}
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
symbol | ✅ | ✅ |
name | ✅ | ✅ |
impair | ✅ | ✅ |
hidden | ✅ | ✅ |
isFiat | ✅ | ✅ |
rateSymbol | ✅ | ✅ |
rateId | ❌ | ❌ |
rateSource | ❌ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "symbol:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "symbol": "string",
- "name": "string",
- "impair": true,
- "hidden": true,
- "isFiat": true,
- "rateSymbol": "string",
- "rateId": "string",
- "rateSource": "nomics",
- "customFields": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "AssetAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}, - "FeeAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}, - "LTGainLossAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}, - "STGainLossAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}
}
]
}
Creates a new Coin
JSON body to create new Coin
symbol required | string |
name required | string |
impair | boolean Default: false |
isFiat | boolean Default: false If set true
|
rateId | string Required if coin will use automatic rates |
customFields | object Key->Value hash of custom field names and values |
{- "symbol": "string",
- "name": "string",
- "impair": false,
- "isFiat": false,
- "rateId": "string",
- "customFields": { }
}
{- "_id": 0,
- "symbol": "string",
- "name": "string",
- "impair": true,
- "hidden": true,
- "isFiat": true,
- "rateSymbol": "string",
- "rateId": "string",
- "rateSource": "coinmarketcap",
- "customFields": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "AssetAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}, - "FeeAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}, - "LTGainLossAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}, - "STGainLossAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}
}
List of Coin Crypto Transactions. Not orderable.
Field | Filterable |
---|---|
_id | ✅ |
CostCenterId | ✅ |
createdAt | ✅ |
currency | ✅ |
Custom1Id | ✅ |
Custom2Id | ✅ |
Custom3Id | ✅ |
CustomerId | ✅ |
externalId | ✅ |
externalSource | ✅ |
fCoinId | ✅ |
fPrice | ✅ |
fQty | ✅ |
fWalletId | ✅ |
isJournalStale | ✅ |
JobId | ✅ |
JournalId | ✅ |
Journal.number | ✅ |
LedgerAccountId | ✅ |
locked | ✅ |
notes | ✅ |
ProductId | ✅ |
rCoinId | ✅ |
reference | ✅ |
rPrice | ✅ |
rQty | ✅ |
rWalletId | ✅ |
sCoinId | ✅ |
sPrice | ✅ |
sQty | ✅ |
sWalletId | ✅ |
SystemJobId | ✅ |
txHash | ✅ |
type | ✅ |
updatedAt | ✅ |
VendorId | ✅ |
CoinId required | string Coin._id |
walletId | string Wallet._id Limits results to transactions that involve the specified wallet |
LocationId | string Filters for Wallets (Receive, Sent, Fee) in the specified location. Defaults to Global Location when not set. |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": "string",
- "date": "2019-08-24T14:15:22Z",
- "type": "deposit",
- "txHash": "string",
- "currency": "string",
- "currencyRate": "1",
- "reference": "string",
- "notes": "string",
- "sCostBasis": 0,
- "fCostBasis": 0,
- "externalSource": "string",
- "isJournalStale": true,
- "SystemJobId": "string",
- "locked": true,
- "qtyPicked": "1",
- "error": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "rCoinId": "string",
- "rWalletId": "string",
- "rQty": "1",
- "rPrice": "1",
- "sCoinId": "string",
- "sWalletId": "string",
- "sQty": "1",
- "sPrice": "1",
- "fCoinId": "string",
- "fWalletId": "string",
- "fPrice": "1",
- "JournalId": 0,
- "LedgerAccountId": 0,
- "CustomerId": 0,
- "VendorId": 0,
- "CostCenterId": 0,
- "ProductId": 0,
- "JobId": 0,
- "rCoin": {
- "symbol": "string"
}, - "rWallet": {
- "name": "string"
}, - "sCoin": {
- "symbol": "string"
}, - "sWallet": {
- "name": "string"
}, - "fCoin": {
- "symbol": "string"
}, - "fWallet": {
- "name": "string"
}, - "Journal": {
- "number": 0
}, - "LedgerAccount": {
- "number": 0,
- "name": "string"
}, - "Customer": {
- "id": "string",
- "name": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string"
}, - "CostCenter": {
- "id": "string",
- "name": "string"
}, - "Product": {
- "id": "string",
- "name": "string"
}, - "Job": {
- "number": "string",
- "name": "string"
}, - "balance": "string"
}
]
}
List of Coins with balance details by wallet
Field | Filterable | Orderable |
---|---|---|
_id | ✅ | ✅ |
name | ✅ | ✅ |
rate | ❌ | ❌ |
value | ❌ | ❌ |
gainLoss | ❌ | ❌ |
isFiat | ❌ | ❌ |
rateSymbol | ❌ | ❌ |
custom | ❌ | ❌ |
impair | ❌ | ❌ |
quantity | ❌ | ❌ |
totalCostBasis | ❌ | ❌ |
CoinId required | string Coin._id |
hideZero | boolean exclude zero balance coins |
date | string <date-time> date to filter by. defaults to "now" ISO DateTime |
LocationId | string Filters for Wallets (Receive, Sent, Fee) in the specified location. Defaults to Global Location when not set. |
consolidated | boolean True = match on the Location & its children. False = match only wallets in this location. |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "name:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": "string",
- "name": "string",
- "quantity": "1",
- "value": "1",
- "gainLoss": "1",
- "totalCostBasis": "1",
- "rate": {
- "PRICE": "1",
- "CHANGEPCT24HOUR": "1"
}
}
]
}
Returns a count of transactions based on the passed filters for a single coin. If a significantly large amount of transactions, it is possible an estimated value will be returned.
See /crypto-transactions/coin/search for filterable fields.
CoinId required | string Coin._id value |
LocationId | string Filters for Wallets (Receive, Sent, Fee) in the specified location. Defaults to Global Location when not set. |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
{- "count": 0,
- "estimate": true
}
{- "_id": "string",
- "symbol": "string",
- "name": "string",
- "impair": true,
- "hidden": true,
- "isFiat": true,
- "rateSymbol": "string",
- "rateId": "string",
- "rateSource": "nomics",
- "customFields": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "AssetAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}, - "FeeAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}, - "LTGainLossAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}, - "STGainLossAccount": {
- "_id": 0,
- "number": "string",
- "name": "string"
}
}
Update One Coin
id required | string Coin Id |
JSON body containing key and values to update
name | string |
impair | boolean |
hidden | boolean |
rateId | string |
rateSource | string Value: "coinmarketcap" Required if rateId is set |
customFields | object Key->Value hash of custom field names and values |
{- "name": "string",
- "impair": true,
- "hidden": true,
- "rateId": "string",
- "rateSource": "coinmarketcap",
- "customFields": { }
}
{- "_id": 0,
- "symbol": "string",
- "name": "string",
- "impair": true,
- "hidden": true,
- "isFiat": true,
- "rateSymbol": "string",
- "rateId": "string",
- "rateSource": "coinmarketcap",
- "customFields": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Returns the 100 coins of the list of coins that SoftLedger can provide automatic rates for ordered by rank ascending. To see more, filter by symbol or name.
filter | string Case Insensitive filter for symbol or name of coin |
[- {
- "cmc_id": "string",
- "symbol": "string",
- "name": "string",
- "rank": 0,
- "logo_url": "string"
}
]
Returns the 'open' rate of the coin in the for the passed date in the fiat currency.
id required | string _id of Coin to get rate for Ref: Coin._id |
date required | string <date> Date to provide rate on |
fiat | string Default: "USD" Fiat currency to show rate in Ref: Currency.code |
"string"
Returns a list of coins with balance descriptions
Field | Filterable | Orderable |
---|---|---|
_id | ✅ | ✅ |
name | ✅ | ✅ |
symbol | ✅ | ✅ |
rate | ❌ | ❌ |
value | ❌ | ❌ |
gainLoss | ❌ | ❌ |
isFiat | ✅ | ❌ |
rateSymbol | ✅ | ✅ |
custom | ❌ | ❌ |
impair | ❌ | ❌ |
quantity | ❌ | ❌ |
totalCostBasis | ❌ | ❌ |
showHidden | boolean include hidden coins |
hideZero | boolean exclude zero balance coins |
date | string <date> date to filter by. defaults to "now" ISO Date |
LocationId | string Filters for Wallets (Receive, Sent, Fee) in the specified location. Defaults to Global Location when not set. |
consolidated | boolean True = match on the Location & its children. False = match only wallets in this location. |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "name:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": "string",
- "name": "string",
- "symbol": "string",
- "rateId": "string",
- "rateSource": "coinmarketcap",
- "rateSymbol": "string",
- "isFiat": true,
- "custom": true,
- "impair": true,
- "quantity": "1",
- "value": "1",
- "gainLoss": "1",
- "totalCostBasis": "1",
- "rate": {
- "PRICE": "1",
- "CHANGEPCT24HOUR": "1"
}, - "customFields": { }
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
AccountingPeriodId | ✅ | ❌ |
ChildId | ✅ | ❌ |
ParentId | ✅ | ❌ |
AccountingPeriod.end | ❌ | ✅ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "number:ASC" Order to return results in. ex "date:desc" |
LocationId | number Will include data from this Parent Location and its children only |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "AccountingPeriodId": 0,
- "ChildId": 0,
- "ParentId": 0,
- "spotRate": "string",
- "wavgRate": "string",
- "historicalRate": "string",
- "userSet": true,
- "AccountingPeriod": {
- "start": "2019-08-24",
- "end": "2019-08-24"
}, - "Child": {
- "id": "string",
- "name": "string",
- "currency": "string"
}, - "Parent": {
- "id": "string",
- "name": "string",
- "currency": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Upsert consolidation rates
JSON body of consolidation rates to create or update
One of ChildId or Child.id must be provided
One of ParentId or Parent.id must be provided
Parent.currency and Child.currency must be different
spotRate required | string <number> Must be > 0 |
wavgRate required | string <number> Must be > 0 |
AccountingPeriodId required | number Ref: AccountingPeriod._id |
ChildId required | number Ref: Location._id |
ParentId required | number Ref: Location._id |
historicalRate | string <number> Must be > 0 |
object | |
object |
[- {
- "spotRate": "string",
- "wavgRate": "string",
- "historicalRate": "string",
- "AccountingPeriodId": 0,
- "ChildId": 0,
- "Child": {
- "id": "string"
}, - "ParentId": 0,
- "Parent": {
- "id": "string"
}
}
]
{- "_id": 0,
- "AccountingPeriodId": 0,
- "ChildId": 0,
- "ParentId": 0,
- "spotRate": "string",
- "wavgRate": "string",
- "historicalRate": "string"
}
Gets one rate record.
id required | string ConsolidationRate._id |
system | boolean Default: false Set this to true to return the system generated rate values for this record |
{- "_id": 0,
- "AccountingPeriodId": 0,
- "ChildId": 0,
- "ParentId": 0,
- "spotRate": "string",
- "wavgRate": "string",
- "historicalRate": "string",
- "userSet": true,
- "AccountingYear": {
- "start": "2019-08-24",
- "end": "2019-08-24"
}, - "AccountingPeriod": {
- "start": "2019-08-24",
- "end": "2019-08-24"
}, - "Child": {
- "id": "string",
- "name": "string",
- "currency": "string"
}, - "Parent": {
- "id": "string",
- "name": "string",
- "currency": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Populates consolidation rates
JSON body of period to populate rates for
Only missing Child/Parent rates will be populated for the period.
Safe to run multiple times for the same period and it will not overwrite your manually entered rates.
Weighted average rate is calculated using journal entries posted from the start of the fiscal year to the end of the specified accounting period.
AccountingPeriodId required | number Ref: AccountingPeriod._id |
{- "AccountingPeriodId": 0
}
Reset consolidation rate to system generated values
Weighted average rate is calculated using journal entries posted from the start of the fiscal year to the end of the specified accounting period.
This will overwrite any manually entered rates on this record.
id required | string ConsolidationRate._id |
{- "_id": 0,
- "AccountingPeriodId": 0,
- "ChildId": 0,
- "ParentId": 0,
- "spotRate": "string",
- "wavgRate": "string",
- "historicalRate": "string",
- "userSet": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
name | ✅ | ✅ |
✅ | ❌ | |
phone | ✅ | ❌ |
isPrimary | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
CustomerId | ✅ | ❌ |
VendorId | ✅ | ❌ |
Customer.name | ❌ | ✅ |
Vendor.name | ❌ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "name:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "name": "string",
- "email": "string",
- "phone": "string",
- "isPrimary": true,
- "CustomerId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "VendorId": 0,
- "Customer": {
- "name": "string"
}, - "Vendor": {
- "name": "string"
}
}
]
}
Creates a new Contact
JSON body to create new Contact
Only one of [CustomerId, VendorId, Customer.name, Vendor.name]
can be set
name required | string |
string | |
phone | string |
isPrimary | boolean Set this as the primary contact for the Customer or Vendor |
CustomerId | integer Ref: Customer._id |
VendorId | integer Ref: Vendor._id |
object | |
object |
{- "name": "string",
- "email": "string",
- "phone": "string",
- "isPrimary": true,
- "CustomerId": 0,
- "VendorId": 0,
- "Customer": {
- "name": "string"
}, - "Vendor": {
- "name": "string"
}
}
{- "_id": 0,
- "name": "string",
- "email": "string",
- "phone": "string",
- "isPrimary": true,
- "CustomerId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "VendorId": 0
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
{- "count": "string",
- "estimate": true
}
{- "_id": 0,
- "name": "string",
- "email": "string",
- "phone": "string",
- "isPrimary": true,
- "CustomerId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "VendorId": 0,
- "Customer": {
- "name": "string"
}, - "Vendor": {
- "name": "string"
}
}
Update One Contact
id required | string Contact Id |
JSON body containing key and values to update
name | string |
string | |
phone | string |
isPrimary | boolean Set this as the primary contact for the Customer or Vendor |
CustomerId | integer Ref: Customer._id |
VendorId | integer Ref: Vendor._id |
object | |
object |
{- "name": "string",
- "email": "string",
- "phone": "string",
- "isPrimary": true,
- "CustomerId": 0,
- "VendorId": 0,
- "Customer": {
- "name": "string"
}, - "Vendor": {
- "name": "string"
}
}
{- "_id": 0,
- "name": "string",
- "email": "string",
- "phone": "string",
- "isPrimary": true,
- "CustomerId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "VendorId": 0
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
id | ✅ | ✅ |
name | ✅ | ✅ |
description | ✅ | ✅ |
inactive | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
status | string Enum: "active" "inactive" Results will return |
order | string Default: "id:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Create Cost Center
JSON body
id required | string |
name required | string |
description | string |
inactive | boolean |
{- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true
}
{- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "active" "inactive" Results will return |
{- "count": "string",
- "estimate": true
}
Get one Cost Center
id required | string Cost Center Id |
{- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Update Cost Center
id required | string Cost Center Id |
JSON body containing key and values to update
id | string |
name | string |
description | string |
inactive | boolean |
{- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true
}
{- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Returns a list of cost layers in descending order
id required | string Transaction id to get cost layers for |
type required | string Enum: "s" "f" Type of cost layers to return |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "pickedId": 0,
- "date": "string",
- "qtyPicked": 0,
- "costBasis": 0
}
]
}
Returns a count of transactions based on the passed filters. If a significantly large amount of transactions, it is possible an estimated value will be returned.
See /crypto-transactions/search for filterable fields.
coinId | string Coin._id Limits results to the specified coin |
walletId | string Wallet._id Limits results to the specified wallet |
LocationId | string Filters for Wallets (Receive, Sent, Fee) in the specified location. Defaults to Global Location when not set. |
costLayers | boolean Default: false Only returns Crypto Transactions that have unused cost layers. |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
{- "count": "string",
- "estimate": true
}
Create new Crypto Transaction. See below for respective tables containing required fields and fields that are not allowed for each type of transaction.
Field | Deposit | Withdrawal | Trade | Transfer |
---|---|---|---|---|
rCoinId | ✅ | ❌ | ✅ | ✅ |
rWalletId | ✅ | ❌ | ✅ | ✅ |
rQty | ✅ | ❌ | ✅ | ✅ |
rPrice | ✔️ | ❌ | ✔️ | ❌ |
sCoinId | ❌ | ✅ | ✅ | ✅ |
sWalletId | ❌ | ✅ | ✅ | ✅ |
sQty | ❌ | ✔️ | ✅ | ✅ |
sPrice | ❌ | ✔️ | -- | ❌ |
LedgerAccountId | ✅ | ✅ | ❌ | ❌ |
Fee Fields | ✔️ | ✔️ | ✔️ | ✔️ |
✅ - Required ❌ - Not Allowed ✔️ - Optional
Price fields will pull from rate provider if set to null
sPrice is Ignored for Trades as is autocalculated from rPrice
sQty may be set to 0 if fQty > 0, this allows "fee only" transactions
Fee Fields | |
---|---|
fCoinId | ✅ |
fWalletId | ✅ |
fQty | ✅ |
fPrice | ✔️ |
Setting fCoinId indicates that a fee should be added
JSON body to create new Crypto Transaction
date required | string <date-time> |
type required | string Enum: "deposit" "trade" "transfer" "withdrawal" |
currency required | string ISO-4217 Currency Code ex "USD" or "GBP". This specifies which currency rPrice/sPrice/fPrice uses. |
rCoinId | string ref: Coins._id |
sCoinId | string ref: Coins._id |
fCoinId | string ref: Coins._id |
rWalletId | string ref: Wallets._id |
sWalletId | string ref: Wallets._id |
fWalletId | string ref: Wallets._id |
rQty | string <number> |
sQty | string <number> |
fQty | string <number> |
sPrice | string <number> |
rPrice | string <number> |
fPrice | string <number> |
notes | string |
reference | string |
externalId | string |
externalSource | string |
txHash | string |
LedgerAccountId | integer ref: LedgerAccounts._id |
CustomerId | integer ref: Customers._id |
VendorId | integer ref: Vendors._id |
CostCenterId | integer ref: CostCenters._id |
ProductId | integer ref: Products._id |
JobId | integer ref: Jobs._id |
Custom1Id | integer ref: Custom1._id |
Custom2Id | integer ref: Custom2._id |
Custom3Id | integer ref: Custom3._id |
{- "date": "2019-08-24T14:15:22Z",
- "rCoinId": "string",
- "sCoinId": "string",
- "fCoinId": "string",
- "rWalletId": "string",
- "sWalletId": "string",
- "fWalletId": "string",
- "rQty": "1",
- "sQty": "1",
- "fQty": "1",
- "type": "deposit",
- "sPrice": "1",
- "rPrice": "1",
- "fPrice": "1",
- "notes": "string",
- "reference": "string",
- "currency": "string",
- "externalId": "string",
- "externalSource": "string",
- "txHash": "string",
- "LedgerAccountId": 0,
- "CustomerId": 0,
- "VendorId": 0,
- "CostCenterId": 0,
- "ProductId": 0,
- "JobId": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0
}
{- "_id": 0,
- "date": "2019-08-24T14:15:22Z",
- "rQty": "1",
- "sQty": "1",
- "fQty": "1",
- "qtyPicked": "1",
- "type": "deposit",
- "sCostBasis": 0,
- "fCostBasis": 0,
- "sPrice": "1",
- "rPrice": "1",
- "fPrice": "1",
- "locked": true,
- "error": { },
- "notes": "string",
- "reference": "string",
- "currency": "string",
- "currencyRate": "1",
- "externalId": "string",
- "externalSource": "string",
- "txHash": "string",
- "SystemJobId": "string",
- "rCoinId": "string",
- "sCoinId": "string",
- "fCoinId": "string",
- "rWalletId": "string",
- "sWalletId": "string",
- "fWalletId": "string",
- "LedgerAccountId": 0,
- "CustomerId": 0,
- "VendorId": 0,
- "JournalId": 0,
- "CostCenterId": 0,
- "ProductId": 0,
- "JobId": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
CostCenter.id | ❌ | ✅ |
CostCenterId | ✅ | ❌ |
createdAt | ✅ | ✅ |
currency | ✅ | ✅ |
Custom1Id | ✅ | ❌ |
Custom1.id | ❌ | ✅ |
Custom2Id | ✅ | ❌ |
Custom2.id | ❌ | ✅ |
Custom3Id | ✅ | ❌ |
Custom3.id | ❌ | ✅ |
Customer.id | ❌ | ✅ |
CustomerId | ✅ | ❌ |
date | ✅ | ✅ |
externalId | ✅ | ✅ |
externalSource | ✅ | ✅ |
fCoin.symbol | ❌ | ✅ |
fCoinId | ✅ | ❌ |
fPrice | ✅ | ✅ |
fQty | ✅ | ✅ |
fWallet.name | ❌ | ✅ |
fWalletId | ✅ | ❌ |
isJournalStale | ✅ | ✅ |
Job.number | ❌ | ✅ |
JobId | ✅ | ❌ |
Journal.number | ✅ | ✅ |
JournalId | ✅ | ❌ |
LedgerAccount.number | ❌ | ✅ |
LedgerAccountId | ✅ | ❌ |
locked | ✅ | ✅ |
notes | ✅ | ✅ |
Product.id | ❌ | ✅ |
ProductId | ✅ | ❌ |
rCoin.symbol | ❌ | ✅ |
rCoinId | ✅ | ❌ |
reference | ✅ | ✅ |
rPrice | ✅ | ✅ |
rQty | ✅ | ✅ |
rWallet.name | ❌ | ✅ |
rWalletId | ✅ | ❌ |
sCoin.symbol | ❌ | ✅ |
sCoinId | ✅ | ❌ |
sPrice | ✅ | ✅ |
sQty | ✅ | ✅ |
sWallet.name | ❌ | ✅ |
sWalletId | ✅ | ❌ |
SystemJobId | ✅ | ✅ |
txHash | ✅ | ✅ |
type | ✅ | ✅ |
updatedAt | ✅ | ✅ |
Vendor.id | ❌ | ✅ |
VendorId | ✅ | ❌ |
coinId | string Coin._id Limits results to the specified coin |
walletId | string Wallet._id Limits results to the specified wallet |
LocationId | string Filters for Wallets (Receive, Sent, Fee) in the specified location. Defaults to Global Location when not set. |
costLayers | boolean Default: false Only returns Crypto Transactions that have unused cost layers. |
journalErrorsOnly | boolean Default: false Set to true to only return Crypto Transactions that have journal errors. |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "date:DESC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "date": "2019-08-24T14:15:22Z",
- "rQty": 0,
- "sQty": 0,
- "fQty": 0,
- "qtyPicked": "string",
- "type": "deposit",
- "sCostBasis": 0,
- "fCostBasis": 0,
- "sPrice": 0,
- "rPrice": 0,
- "fPrice": 0,
- "locked": true,
- "error": { },
- "notes": "string",
- "reference": "string",
- "currency": "string",
- "currencyRate": "string",
- "externalId": "string",
- "externalSource": "string",
- "txHash": "string",
- "SystemJobId": "string",
- "rCoinId": "string",
- "sCoinId": "string",
- "fCoinId": "string",
- "rWalletId": "string",
- "sWalletId": "string",
- "fWalletId": "string",
- "sGainLoss": "string",
- "fGainLoss": "string",
- "LedgerAccountId": 0,
- "CustomerId": 0,
- "VendorId": 0,
- "JournalId": 0,
- "CostCenterId": 0,
- "ProductId": 0,
- "JobId": 0,
- "rCoin": {
- "symbol": "string"
}, - "rWallet": {
- "name": "string"
}, - "sCoin": {
- "symbol": "string"
}, - "sWallet": {
- "name": "string"
}, - "fCoin": {
- "symbol": "string"
}, - "fWallet": {
- "name": "string"
}, - "Customer": {
- "id": "string",
- "name": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "Journal": {
- "number": 0
}, - "CostCenter": {
- "id": "string",
- "name": "string"
}, - "Product": {
- "id": "string",
- "name": "string"
}, - "Job": {
- "number": "string",
- "name": "string"
}
}
]
}
Get one Crypto Transaction
id required | string Crypto Transaction Id |
{- "_id": 0,
- "date": "2019-08-24T14:15:22Z",
- "rQty": 0,
- "sQty": 0,
- "fQty": 0,
- "qtyPicked": "string",
- "type": "deposit",
- "sCostBasis": 0,
- "fCostBasis": 0,
- "sPrice": 0,
- "rPrice": 0,
- "fPrice": 0,
- "locked": true,
- "error": { },
- "notes": "string",
- "reference": "string",
- "currency": "string",
- "currencyRate": "string",
- "externalId": "string",
- "externalSource": "string",
- "txHash": "string",
- "SystemJobId": "string",
- "rCoinId": "string",
- "sCoinId": "string",
- "fCoinId": "string",
- "rWalletId": "string",
- "sWalletId": "string",
- "fWalletId": "string",
- "LedgerAccountId": 0,
- "CustomerId": 0,
- "VendorId": 0,
- "JournalId": 0,
- "CostCenterId": 0,
- "ProductId": 0,
- "JobId": 0,
- "rCoin": {
- "symbol": "string"
}, - "rWallet": {
- "name": "string"
}, - "sCoin": {
- "symbol": "string"
}, - "sWallet": {
- "name": "string"
}, - "fCoin": {
- "symbol": "string"
}, - "fWallet": {
- "name": "string"
}, - "Customer": {
- "id": "string",
- "name": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "Journal": {
- "number": 0
}, - "CostCenter": {
- "id": "string",
- "name": "string"
}, - "Product": {
- "id": "string",
- "name": "string"
}, - "Job": {
- "number": "string",
- "name": "string"
}
}
Update One Crypto Transaction. See Create for allowed fields.
id required | string Crypto Transaction Id |
JSON body containing key and values to update
date | string <date-time> |
rCoinId | string Ref: Coins._id |
sCoinId | string Ref: Coins._id |
fCoinId | string Ref: Coins._id |
rWalletId | string Ref: Wallets._id |
sWalletId | string Ref: Wallets._id |
fWalletId | string Ref: Wallets._id |
rQty | string <number> |
sQty | string <number> |
fQty | string <number> |
qtyPicked | string <number> |
type | string Enum: "deposit" "trade" "transfer" "withdrawal" |
sPrice | string <number> |
rPrice | string <number> |
fPrice | string <number> |
notes | string |
reference | string |
LedgerAccountId | integer Ref: LedgerAccount._id |
CustomerId | integer Ref: Customer._id |
currency | string ISO-4217 Currency Code ex "USD" or "GBP". This specifies which currency rPrice/sPrice/fPrice uses. |
currencyRate | string <number> |
externalId | string |
externalSource | string |
txHash | string |
VendorId | integer Ref: Vendor._id |
{- "date": "2019-08-24T14:15:22Z",
- "rCoinId": "string",
- "sCoinId": "string",
- "fCoinId": "string",
- "rWalletId": "string",
- "sWalletId": "string",
- "fWalletId": "string",
- "rQty": "1",
- "sQty": "1",
- "fQty": "1",
- "qtyPicked": "1",
- "type": "deposit",
- "sPrice": "1",
- "rPrice": "1",
- "fPrice": "1",
- "notes": "string",
- "reference": "string",
- "LedgerAccountId": 0,
- "CustomerId": 0,
- "currency": "string",
- "currencyRate": "string",
- "externalId": "string",
- "externalSource": "string",
- "txHash": "string",
- "VendorId": 0
}
{- "_id": 0,
- "date": "2019-08-24T14:15:22Z",
- "rQty": "1",
- "sQty": "1",
- "fQty": "1",
- "qtyPicked": "1",
- "type": "deposit",
- "sCostBasis": 0,
- "fCostBasis": 0,
- "sPrice": "1",
- "rPrice": "1",
- "fPrice": "1",
- "locked": true,
- "error": { },
- "notes": "string",
- "reference": "string",
- "currency": "string",
- "currencyRate": "1",
- "externalId": "string",
- "externalSource": "string",
- "txHash": "string",
- "SystemJobId": "string",
- "rCoinId": "string",
- "sCoinId": "string",
- "fCoinId": "string",
- "rWalletId": "string",
- "sWalletId": "string",
- "fWalletId": "string",
- "LedgerAccountId": 0,
- "CustomerId": 0,
- "VendorId": 0,
- "JournalId": 0,
- "rCoin": {
- "symbol": "string"
}, - "rWallet": {
- "name": "string"
}, - "sCoin": {
- "symbol": "string"
}, - "sWallet": {
- "name": "string"
}, - "fCoin": {
- "symbol": "string"
}, - "fWallet": {
- "name": "string"
}, - "Customer": {
- "id": "string",
- "name": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "Journal": {
- "number": 0
}
}
Merges a deposit and withdrawal crypto transaction into a transfer transaction.
The deposit and withdrawal transactions will both be deleted and a single transfer transaction will be created. Any linked journals will be destroyed.
The fee from the withdrawal will be added to the transfer transaction.
The rCoin of the deposit and the sCoin of the withdrawal must match.
The rWallet of the deposit and the sWallet of the withdrawal must match.
The rQty of the deposit and the sQty of the withdrawal must match.
The txHash of the deposit and the txHash of the withdrawal must match.
The currency of the deposit and the currency of the withdrawal must match.
Merge deposit and withdrawal crypto transactions into a transfer transaction.
depositId required | string Ref: CryptoTransaction._id |
withdrawalId required | string Ref: CryptoTransaction._id |
useDepositMetaData | boolean Default: false Set True to use deposit meta data to populate new transfer transaction. Set False to use withdrawal meta data to populate new transfer transaction. The metadata includes [date, reference, notes, dimensions, attachments, externalId, externalSource] |
{- "depositId": "string",
- "withdrawalId": "string",
- "useDepositMetaData": false
}
{- "_id": 0
}
Create new currency
JSON body to create a new currency
code required | string |
symbol required | string |
name required | string |
rounding_method | number Default: 1 |
fraction | number Default: 2 |
custom | boolean |
{- "code": "string",
- "symbol": "string",
- "name": "string",
- "rounding_method": 1,
- "fraction": 2,
- "custom": true
}
{- "code": "string",
- "fraction": 0,
- "rounding_method": 0,
- "symbol": "string",
- "name": "string",
- "custom": false
}
Gets FX rates for currency
code required | string Currency Code |
[- {
- "date": "string",
- "LD": "string",
- "AED": "string",
- "AFN": "string",
- "ALL": "string",
- "AMD": "string",
- "ANG": "string",
- "AOA": "string",
- "ARS": "string",
- "AUD": "string",
- "AWG": "string",
- "AZN": "string",
- "BAM": "string",
- "BBD": "string",
- "BDT": "string",
- "BGN": "string",
- "BHD": "string",
- "BIF": "string",
- "BMD": "string",
- "BND": "string",
- "BOB": "string",
- "BRL": "string",
- "BSD": "string",
- "BTC": "string",
- "BTN": "string",
- "BTS": "string",
- "BWP": "string",
- "BYN": "string",
- "BZD": "string",
- "CAD": "string",
- "CDF": "string",
- "CHF": "string",
- "CLF": "string",
- "CLP": "string",
- "CNH": "string",
- "CNY": "string",
- "COP": "string",
- "CRC": "string",
- "CUC": "string",
- "CUP": "string",
- "CVE": "string",
- "CZK": "string",
- "DJF": "string",
- "DKK": "string",
- "DOP": "string",
- "DZD": "string",
- "EAC": "string",
- "EGP": "string",
- "EMC": "string",
- "ERN": "string",
- "ETB": "string",
- "ETH": "string",
- "EUR": "string",
- "FCT": "string",
- "FJD": "string",
- "FKP": "string",
- "FTC": "string",
- "GBP": "string",
- "GEL": "string",
- "GGP": "string",
- "GHS": "string",
- "GIP": "string",
- "GMD": "string",
- "GNF": "string",
- "GTQ": "string",
- "GYD": "string",
- "HKD": "string",
- "HNL": "string",
- "HRK": "string",
- "HTG": "string",
- "HUF": "string",
- "IDR": "string",
- "ILS": "string",
- "IMP": "string",
- "INR": "string",
- "IQD": "string",
- "IRR": "string",
- "ISK": "string",
- "JEP": "string",
- "JMD": "string",
- "JOD": "string",
- "JPY": "string",
- "KES": "string",
- "KGS": "string",
- "KHR": "string",
- "KMF": "string",
- "KPW": "string",
- "KRW": "string",
- "KWD": "string",
- "KYD": "string",
- "KZT": "string",
- "LAK": "string",
- "LBP": "string",
- "LKR": "string",
- "LRD": "string",
- "LSL": "string",
- "LTC": "string",
- "LYD": "string",
- "MAD": "string",
- "MDL": "string",
- "MGA": "string",
- "MKD": "string",
- "MMK": "string",
- "MNT": "string",
- "MOP": "string",
- "MRO": "string",
- "MRU": "string",
- "MUR": "string",
- "MVR": "string",
- "MWK": "string",
- "MXN": "string",
- "MYR": "string",
- "MZN": "string",
- "NAD": "string",
- "NGN": "string",
- "NIO": "string",
- "NMC": "string",
- "NOK": "string",
- "NPR": "string",
- "NVC": "string",
- "NXT": "string",
- "NZD": "string",
- "OMR": "string",
- "PAB": "string",
- "PEN": "string",
- "PGK": "string",
- "PHP": "string",
- "PKR": "string",
- "PLN": "string",
- "PPC": "string",
- "PYG": "string",
- "QAR": "string",
- "RON": "string",
- "RSD": "string",
- "RUB": "string",
- "RWF": "string",
- "SAR": "string",
- "SBD": "string",
- "SCR": "string",
- "SDG": "string",
- "SEK": "string",
- "SGD": "string",
- "SHP": "string",
- "SLL": "string",
- "SOS": "string",
- "SRD": "string",
- "SSP": "string",
- "STD": "string",
- "STN": "string",
- "STR": "string",
- "SVC": "string",
- "SYP": "string",
- "SZL": "string",
- "THB": "string",
- "TJS": "string",
- "TMT": "string",
- "TND": "string",
- "TOP": "string",
- "TRY": "string",
- "TTD": "string",
- "TWD": "string",
- "TZS": "string",
- "UAH": "string",
- "UGX": "string",
- "USD": "string",
- "UYU": "string",
- "UZS": "string",
- "VEF": "string",
- "VES": "string",
- "VND": "string",
- "VTC": "string",
- "VUV": "string",
- "WST": "string",
- "XAF": "string",
- "XAG": "string",
- "XAU": "string",
- "XCD": "string",
- "XDR": "string",
- "XMR": "string",
- "XOF": "string",
- "XPD": "string",
- "XPF": "string",
- "XPM": "string",
- "XPT": "string",
- "XRP": "string",
- "YER": "string",
- "ZAR": "string",
- "ZMW": "string",
- "ZWL": "string",
- "DASH": "string",
- "DOGE": "string",
- "VEF_DICOM": "string",
- "VEF_DIPRO": "string",
- "VEF_BLKMKT": "string"
}
]
Update a currency
code required | string Currency Code |
JSON object containing key and values to update
symbol | string |
rounding_method | number |
fraction | number |
code | string |
name | string |
{- "symbol": "string",
- "rounding_method": 0,
- "fraction": 0,
- "code": "string",
- "name": "string"
}
{- "code": "string",
- "fraction": 0,
- "rounding_method": 0,
- "symbol": "string",
- "name": "string",
- "custom": false
}
Each SoftLedger tenant can have up to 3 custom dimensions.
All of the resources below are for custom dimensions and are accessed based on the name of the custom dimension. The {name} parameter should be populated with the custom dimension name.
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
id | ✅ | ✅ |
name | ✅ | ✅ |
description | ✅ | ✅ |
inactive | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
name required | string Custom Dimension Object Type Name |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
status | string Enum: "active" "inactive" Results will return |
order | string Default: "id:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Create Custom Dimension
name required | string Custom Dimension Object Type Name |
JSON body
id required | string |
name required | string |
description | string |
inactive | boolean |
{- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true
}
{- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
name required | string Custom Dimension Object Type Name |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "active" "inactive" Results will return |
{- "count": "string",
- "estimate": true
}
Get one Custom Dimension
name required | string Custom Dimension Object Type Name |
id required | string Custom Dimension Id |
{- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Update Custom Dimension
name required | string Custom Dimension Object Type Name |
id required | string Custom Dimension Id |
JSON body containing key and values to update
id | string |
name | string |
description | string |
inactive | boolean |
{- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true
}
{- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Create or Update a custom field
type required | string Enum: "bill" "coin" "customer" "item" "invoiceType" "invoiceLineItems" "purchaseOrder" "poLineItems" "vendor" "invoiceLevel" "salesOrder" Type for custom field |
JSON body to create or update Custom Field
type required | string Enum: "text" "number" "checkbox" "date" "select" |
label | string Name for the custom field, useful for UI |
property | string used for internal use |
{- "label": "string",
- "property": "string",
- "type": "text"
}
{- "_id": "string",
- "property": "string",
- "required": true,
- "label": "string",
- "type": "text",
- "data": [ ]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
id | ✅ | ✅ |
name | ✅ | ✅ |
externalId | ✅ | ✅ |
✅ | ✅ | |
description | ✅ | ✅ |
terms | ✅ | ✅ |
customFields | ✅ | ❌ |
inactive | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
status | string Enum: "active" "inactive" Results will return |
order | string Default: "id:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "id": "string",
- "externalId": "string",
- "name": "string",
- "email": "user@example.com",
- "description": "string",
- "terms": "string",
- "defaultDaysDue": 1,
- "notes": "string",
- "customFields": { },
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Address": {
- "_id": 0,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Contact": {
- "_id": 0,
- "name": "string",
- "email": "string",
- "phone": "string"
}
}
]
}
Creates a new Customer
JSON body to create new Customer
name required | string |
externalId | string |
string <email> | |
description | string |
terms | string |
defaultDaysDue | integer >= 1 |
notes | string |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
customFields | object Default: {} Key->Value store of custom fields |
inactive | boolean Default: false |
object Default address for customer | |
object Primary contact for customer |
{- "externalId": "string",
- "name": "string",
- "email": "user@example.com",
- "description": "string",
- "terms": "string",
- "defaultDaysDue": 1,
- "notes": "string",
- "customFields": { },
- "inactive": false,
- "Address": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Contacts": {
- "name": "string",
- "email": "string",
- "phone": "string"
}
}
{- "_id": 0,
- "id": "string",
- "externalId": "string",
- "name": "string",
- "email": "user@example.com",
- "description": "string",
- "terms": "string",
- "defaultDaysDue": 0,
- "notes": true,
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "active" "inactive" Results will return |
{- "count": "string",
- "estimate": true
}
{- "_id": 0,
- "id": "string",
- "externalId": "string",
- "name": "string",
- "email": "user@example.com",
- "description": "string",
- "terms": "string",
- "defaultDaysDue": 1,
- "notes": "string",
- "customFields": { },
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Addresses": [
- {
- "_id": 0,
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}
], - "Contacts": [
- {
- "_id": 0,
- "isPrimary": true,
- "name": "string",
- "email": "string",
- "phone": "string"
}
]
}
Update One Customer
id required | string Customer Id |
JSON body containing key and values to update
externalId | string |
name | string |
string <email> | |
description | string |
terms | string |
defaultDaysDue | integer >= 1 |
notes | string |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
customFields | object Default: {} Key->Value store of custom fields |
inactive | boolean Default: false |
{- "externalId": "string",
- "name": "string",
- "email": "user@example.com",
- "description": "string",
- "terms": "string",
- "defaultDaysDue": 1,
- "notes": "string",
- "customFields": { },
- "inactive": false
}
{- "_id": 0,
- "id": "string",
- "externalId": "string",
- "name": "string",
- "email": "user@example.com",
- "description": "string",
- "terms": "string",
- "defaultDaysDue": 0,
- "notes": true,
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
This endpoint returns only invoices for the specified customer. The response and parameters of this endpoint are the same as for Invoices Search
id required | string Customer._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "status": "created",
- "externalId": "string",
- "type": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "customFields": { },
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "currency": "string",
- "amount": "string",
- "amountPayable": "string",
- "SystemJobId": "string",
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string"
}, - "ShippingAddressId": 0,
- "ShippingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "BillingAddressId": 0,
- "BillingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "ARAccountId": 0,
- "ARAccount": {
- "name": "string",
- "number": "string"
}, - "TemplateId": 0,
- "SalesOrderId": 0,
- "SalesOrder": {
- "number": "string"
}, - "ICJournalId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
]
}
This endpoint counts only invoices for the specified customer.
The parameters of this endpoint are the same as for Invoices Search
id required | string Customer._id |
{- "count": "string",
- "estimate": true
}
This endpoint returns only payments for the specified customer. The response and parameters of this endpoint are the same as for Payments Search
id required | string Customer._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "checkNumber": "string",
- "number": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "VendorId": 0,
- "CustomerId": 0,
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Address": {
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string",
- "email": "user@example.com",
- "nameOnCheck": "string"
}, - "Bill": {
- "invoiceNumber": "string",
- "description": "string"
}, - "Invoice": {
- "number": "string",
- "reference": "string"
}, - "Customer": {
- "id": "string",
- "name": "string",
- "email": "user@example.com"
}, - "VendorCredit": {
- "number": "string"
}, - "CashReceipt": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "BatchPayment": {
- "referenceNumber": "string"
}
}
]
}
Get a list of all emails
objectType required | string Enum: "Invoice" "PurchaseOrder" "SalesOrder" Dimension Object Type |
objectId required | integer Dimension Object Id |
offset | integer Default: 0 number of records to skip |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "totalItems": "string",
- "data": [
- {
- "MessageID": "string",
- "Tag": "string",
- "To": {
- "Email": "string",
- "Name": "string"
}, - "CC": {
- "Email": "string",
- "Name": "string"
}, - "BCC": {
- "Email": "string",
- "Name": "string"
}, - "Recipients": [
- "string"
], - "ReceivedAt": "string",
- "From": "string",
- "Subject": "string",
- "Attachments": [
- "string"
], - "Status": "string",
- "TrackOpens": true,
- "TrackLinks": "TextOnly",
- "Metadata": { },
- "MessageStream": "string"
}
]
}
Get one Emails details
messageid required | string Message id |
{- "TextBody": "string",
- "HtmlBody": "string",
- "Body": "string",
- "MessageEvents": [
- {
- "Recipient": "string",
- "Type": "string",
- "ReceivedAt": "string",
- "Details": { }
}
]
}
Returns the consolidated balance of the Ledger Account passed broken down by currency. Balance Sheet accounts include all transactions until endDate Income Statement accounts include all transactions from start of accounting year until endDate
Account Balance Request
LocationId required | integer |
LedgerAccountId required | integer |
endDate required | string <date> |
accountType required | string Enum: "Asset" "Revenue" "Expense" "Liability" "Equity" |
status | string Enum: "posted" "draft" Journal status, if not set, all journals used |
startDate | string <date> Only used if accountType is Revenue/Expense |
consolidated | boolean If true, returns consolidated balance of all locations, false returns balance just for that location |
{- "status": "posted",
- "LocationId": 0,
- "LedgerAccountId": 0,
- "startDate": "2019-08-24",
- "endDate": "2019-08-24",
- "accountType": "Asset",
- "consolidated": true
}
[- {
- "currency": "USD",
- "balance": 0
}
]
Returns list of approved but not fully paid bills for the specified Vendor.
AP Aging Bill Request
locationId required | integer |
vendorId required | integer |
date required | string <date> return all bills with postedDate <= date |
offset | integer Default: 0 |
limit | integer Default: 25 min 1, max 100 |
consolidated | boolean Default: false |
includeDraft | boolean Default: false |
{- "locationId": 0,
- "vendorId": 0,
- "date": "2019-08-24",
- "offset": 0,
- "limit": 25,
- "consolidated": false,
- "includeDraft": false
}
{- "data": [
- {
- "_id": 0,
- "invoiceNumber": "string",
- "reference": "string",
- "invoiceDate": "2019-08-24",
- "amount": 1,
- "currency": "USD"
}
], - "totalItems": 0
}
Returns list of issued but not fully paid invoices for the specified Customer/Agent.
AR Aging Invoice Request
locationId required | integer |
customerId required | integer Customer/Agent "_id" |
date required | string <date> return all invoices with invoiceDate <= date |
offset | integer Default: 0 |
limit | integer Default: 25 min 1, max 100 |
consolidated | boolean Default: false |
includeDraft | boolean Default: false |
{- "locationId": 0,
- "customerId": 0,
- "date": "2019-08-24",
- "offset": 0,
- "limit": 25,
- "consolidated": false,
- "includeDraft": false
}
{- "data": [
- {
- "_id": 0,
- "number": "string",
- "reference": "string",
- "invoiceDate": "2019-08-24",
- "amount": "1",
- "currency": "USD"
}
], - "totalItems": 0
}
Returns list of approved but not fully paid bills. Grouped by date range
AP Aging request
locationId required | integer |
currency required | string currency to display results in |
start required | string <date> |
consolidated | boolean Default: true |
includeDraft | boolean Default: true |
{- "locationId": 0,
- "currency": "USD",
- "start": "2019-08-24",
- "consolidated": true,
- "includeDraft": true
}
[- {
- "0": 0,
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0,
- "_id": 0,
- "id": "string",
- "name": "string"
}
]
Returns list of issued but not fully paid invoices. Grouped by date range
AR Aging request
locationId required | integer |
currency required | string currency to display results in |
start required | string <date> |
consolidated | boolean Default: true |
includeDraft | boolean Default: true |
{- "locationId": 0,
- "currency": "USD",
- "start": "2019-08-24",
- "consolidated": true,
- "includeDraft": true
}
[- {
- "0": 0,
- "1": 0,
- "2": 0,
- "3": 0,
- "4": 0,
- "5": 0,
- "_id": 0,
- "id": "string",
- "name": "string"
}
]
Returns current period income calculation for specified report type for the startDate -> endDate.
Current Period Income Request
colType required | string Enum: "Location" "Month" "CostCenter" "Product" "Job" "Customer" "Vendor" "Custom1" "Custom2" "Custom3" |
startDate required | string <date> |
endDate required | string <date> |
currency required | string currency to return value in |
formulaType required | string Value: "currentPeriodIncome" |
colIds | Array of strings |
LocationId | integer |
status | string Enum: "draft" "posted" |
{- "formulaType": "currentPeriodIncome",
- "colType": "Location",
- "colIds": [
- "string"
], - "startDate": "2019-08-24",
- "endDate": "2019-08-24",
- "LocationId": 0,
- "status": "draft",
- "currency": "USD"
}
{ }
Financial Entity report data of account balances by dimension
Entity Report Request
startDate required | string <date> |
endDate required | string <date> |
LocationId required | integer |
currency required | string |
status | string Enum: "posted" "draft" Journal status to return |
{- "startDate": "2019-08-24",
- "endDate": "2019-08-24",
- "LocationId": 0,
- "currency": "USD",
- "status": "posted"
}
[- {
- "_id": 0,
- "name": "string",
- "type": "string",
- "subtype": "string",
- "LocationId": 0,
- "parent_path": [
- 0
], - "balance": "1",
- "elimination": true
}
]
Financial Dimension report data of account balances by dimension
Financial Dimension report data request
startDate required | string <date> |
endDate required | string <date> |
LocationId required | integer |
type required | string Enum: "Customer" "Vendor" "CostCenter" "Product" "Job" "Custom1" "Custom2" "Custom3" |
objectIds required | Array of integers |
currency required | string |
status | string Enum: "posted" "draft" Journal status to return |
{- "startDate": "2019-08-24",
- "endDate": "2019-08-24",
- "currency": "USD",
- "LocationId": 0,
- "status": "posted",
- "type": "Customer",
- "objectIds": [
- 0
]
}
[- {
- "_id": 0,
- "name": "string",
- "type": "string",
- "subtype": "string",
- "LocationId": 0,
- "parent_path": [
- 0
], - "balance": "1",
- "objectId": 0,
- "objectID": "string",
- "objectName": "string"
}
]
Returns General Ledger Balances for Date Range passed
General Ledger Request
currency required | string Currency to return results in |
LocationId required | integer Location to consolidate results for |
startDate required | string <date> |
endDate required | string <date> |
status | string Enum: "posted" "draft" "all" Journal status |
consolidated | boolean Show consolidated balance by Location |
offset | integer Default: 0 |
limit | integer [ 1 .. 99 ] |
order | string Default: "number:DESC" |
object |
{- "status": "posted",
- "currency": "USD",
- "LocationId": 0,
- "consolidated": true,
- "startDate": "2019-08-24",
- "endDate": "2019-08-24",
- "offset": 0,
- "limit": 1,
- "order": "number:DESC",
- "where": {
- "or": true,
- "name": "string",
- "number": "string"
}
}
{- "data": [
- {
- "_id": 0,
- "number": "string",
- "name": "string",
- "type": "string",
- "naturalBalance": "debit",
- "startingBalance": "1",
- "endingBalance": "1",
- "activity": "1"
}
], - "totalItems": 0
}
Returns Trial Balance for Date Ranges passed Balance Sheet accounts include all transactions until endDate Income Statement accounts include all transactions from start of accounting year until endDate
Trial Balance Request
currency required | string Currency to return results in |
LocationId required | integer Location to consolidate results for |
required | Array of objects |
status | string Enum: "posted" "draft" "all" Journal status |
offset | integer Default: 0 |
limit | integer [ 1 .. 99 ] |
order | string Default: "number:DESC" |
object | |
DimensionType | string Enum: "CostCenter" "Product" "Job" "Customer" "Vendor" "Custom1" "Custom2" "Custom3" |
DimensionId | integer |
consolidated | boolean If true, returns consolidated balance of all locations, false returns balance just for that location |
{- "status": "posted",
- "currency": "USD",
- "LocationId": 0,
- "dateRanges": [
- {
- "name": "string",
- "start": "2019-08-24",
- "end": "2019-08-24"
}
], - "offset": 0,
- "limit": 1,
- "order": "number:DESC",
- "where": {
- "or": true,
- "name": "string",
- "number": "string"
}, - "DimensionType": "CostCenter",
- "DimensionId": 0,
- "consolidated": true
}
{- "data": [
- {
- "_id": 0,
- "number": "string",
- "name": "string",
- "type": "string",
- "balances": [
- "1"
]
}
], - "totalItems": 0
}
Delete remeasurement journals and reopens FX for the period.
If the FX remeasurement process is already running, this endpoint will return an error.
Accounting Period FX status must be "closed" but the period should still be "open".
AccountingPeriodId required | string AccountPeriod._id |
Posts remeasurement journals for the period.
The journals are posted asynchronously, this endpoint will return a 202 Accepted response, and queue the background job to run.
If the remeasurement process is already running, this endpoint will return an error.
Accounting Period must not be in "closed" state and should have ended i.e. period's end date should be in the past.
If remeasurement rates have not been set for the period, this endpoint will return an error.
The background job will post the remeasurements and close FX for the period.
AccountingPeriodId required | string AccountPeriod._id |
Return the balances for the accounting period remeasurement
Field | Filterable | Sortable |
---|---|---|
LedgerAccountId | ✅ | ❌ |
LocationId | ✅ | ❌ |
currency | ✅ | ✅ |
Location_currency | ✅ | ✅ |
LedgerAccount_number | ❌ | ✅ |
Location_name | ❌ | ✅ |
AccountingPeriodId required | string AccountPeriod._id |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "currency:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "LedgerAccountId": 0,
- "LocationId": 0,
- "currency": "string",
- "Location_currency": "string",
- "remeasureRate": "string",
- "balanceBeforeRemeasurement": "string",
- "balanceAfterRemeasurement": "string",
- "amountToRemeasure": "string",
- "postedDate": "2019-08-24",
- "reversalDate": "2019-08-24",
- "LedgerAccount_name": "string",
- "LedgerAccount_number": "string",
- "Location_name": "string",
- "Location_id": "string"
}
]
}
Returns current rates set for the accouting period remeasurement
The results are a list of all currencies and their end of period rate
AccountingPeriodId required | string AccountPeriod._id |
[- {
- "_id": 0,
- "type": "string",
- "base": "string",
- "date": "2019-08-24",
- "rates": { }
}
]
Update/Insert the rates for the accounting period
AccountingPeriodId required | string AccountPeriod._id |
Base currency and fx rate currency pairs
baseCurrency | string example "USD" |
toCurrency | string example "EUR" |
rate | number |
[- {
- "baseCurrency": "string",
- "toCurrency": "string",
- "rate": 0
}
]
Returns current rates set for the accouting period revaluation The results are a list of all currencies and their end of period rate (example results are two possible currencies)
AccountingPeriodId required | integer AccountingPeriod._id value |
[- {
- "USD": 0,
- "EUR": 0
}
]
Save the rates for the accounting period Example shows rates for two possible currencies. Currencies to save rates for should be obtained from GET fx-revalue/rates/:id
AccountingPeriodId required | integer AccountingPeriod._id value |
Base currency and fx rate currency pairs
currency required | string example "USD" |
required | Array of objects |
{- "currency": "string",
- "rates": [
- {
- "USD": 0,
- "EUR": 0
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
number | ✅ | ✅ |
externalId | ✅ | ✅ |
type | ✅ | ✅ |
reference | ✅ | ✅ |
invoiceDate | ✅ | ✅ |
postedDate | ✅ | ✅ |
dueDate | ✅ | ✅ |
amountPayable | ✅ | ✅ |
amount | ✅ | ✅ |
CustomerId | ✅ | ❌ |
Customer.name | ❌ | ✅ |
customFields | ✅ | ❌ |
currency | ✅ | ✅ |
LocationId | ✅ | ❌ |
ICLocationId | ✅ | ❌ |
status | ✅ | ✅ |
SalesOrderId | ✅ | ❌ |
SystemJobId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "number:DESC" Order to return results in. ex "date:desc" |
credit | boolean Default: false If true, only returns AR Credits i.e. invoices with a negative amount. If false or not specified, only returns invoice with a positive amount. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "status": "created",
- "externalId": "string",
- "type": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "customFields": { },
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "currency": "string",
- "amount": "string",
- "amountPayable": "string",
- "SystemJobId": "string",
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string"
}, - "ShippingAddressId": 0,
- "ShippingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "BillingAddressId": 0,
- "BillingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "ARAccountId": 0,
- "ARAccount": {
- "name": "string",
- "number": "string"
}, - "TemplateId": 0,
- "SalesOrderId": 0,
- "SalesOrder": {
- "number": "string"
}, - "ICJournalId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Creates a new Invoice
JSON body to create new Invoice
One of [Customer.name, CustomerId]
is Required
One of [Location.id, LocationId]
is Required
One of [ARAccount.number, ARAccountId]
is Required
invoiceDate required | string <date> | |||||||||||||||||||||||||||||||||||
postedDate required | string <date> | |||||||||||||||||||||||||||||||||||
CustomerId required | integer Ref: Customer._id | |||||||||||||||||||||||||||||||||||
LocationId required | integer Ref: Location._id | |||||||||||||||||||||||||||||||||||
ARAccountId required | integer Ref: LedgerAccount._id | |||||||||||||||||||||||||||||||||||
currency required | string <ISO4217 3 Char Code> | |||||||||||||||||||||||||||||||||||
externalId | string | |||||||||||||||||||||||||||||||||||
type | string | |||||||||||||||||||||||||||||||||||
dueDate | string <date> | |||||||||||||||||||||||||||||||||||
notes | string | |||||||||||||||||||||||||||||||||||
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents | |||||||||||||||||||||||||||||||||||
reference | string | |||||||||||||||||||||||||||||||||||
customFields | object Default: {} Key -> Value hash of custom fields, must be defined via the UI to show up in the UI | |||||||||||||||||||||||||||||||||||
object | ||||||||||||||||||||||||||||||||||||
ICLocationId | integer Ref: Location._id | |||||||||||||||||||||||||||||||||||
object | ||||||||||||||||||||||||||||||||||||
object | ||||||||||||||||||||||||||||||||||||
ShippingAddressId | integer Ref: Address._id | |||||||||||||||||||||||||||||||||||
BillingAddressId | integer Ref: Address._id | |||||||||||||||||||||||||||||||||||
object | ||||||||||||||||||||||||||||||||||||
TemplateId | integer Default: "Template with name 'Default' and format = 'pdf'" Ref: Template._id | |||||||||||||||||||||||||||||||||||
SalesOrderId | integer Ref: SalesOrder._id | |||||||||||||||||||||||||||||||||||
object | ||||||||||||||||||||||||||||||||||||
Array of objects Handling of LedgerAccountId:
** If LedgerAccountId is set, it will override the LedgerAccount.number ** Tax Logic:
|
{- "externalId": "string",
- "type": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "reference": "string",
- "currency": "string",
- "customFields": { },
- "LocationId": 0,
- "Location": {
- "id": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string"
}, - "CustomerId": 0,
- "Customer": {
- "name": "string"
}, - "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "ARAccountId": 0,
- "ARAccount": {
- "number": "string"
}, - "TemplateId": "Template with name 'Default' and format = 'pdf'",
- "SalesOrderId": 0,
- "SalesOrder": {
- "number": "string"
}, - "InvoiceLineItems": [
- {
- "description": "string",
- "unitAmount": "string",
- "quantity": "string",
- "customFields": { },
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}
}
]
}
{- "_id": 0,
- "externalId": "string",
- "type": "string",
- "number": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "reference": "string",
- "currency": "string",
- "amount": "string",
- "customFields": { },
- "LocationId": 0,
- "ICLocationId": 0,
- "CustomerId": 0,
- "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "ARAccountId": 0,
- "TemplateId": 0,
- "SalesOrderId": 0,
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
description | ✅ | ✅ |
unitAmount | ✅ | ✅ |
taxAmount | ✅ | ✅ |
quantity | ✅ | ✅ |
customFields | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
InvoiceId | ✅ | ❌ |
Invoice.status | ✅ | ✅ |
Invoice.invoiceDate | ✅ | ✅ |
Invoice.AgentId | ✅ | ❌ |
Invoice.LocationId | ✅ | ❌ |
Invoice.ICLocationId | ✅ | ❌ |
Invoice.createdAt | ✅ | ✅ |
Invoice.updatedAt | ✅ | ✅ |
Invoice.number | ✅ | ✅ |
CostCenterId | ✅ | ❌ |
ItemId | ✅ | ❌ |
Item.salePrice | ✅ | ✅ |
Item.purchasePrice | ✅ | ✅ |
JobId | ✅ | ❌ |
LedgerAccountId | ✅ | ❌ |
ProductId | ✅ | ❌ |
Custom1Id | ✅ | ❌ |
Custom2Id | ✅ | ❌ |
Custom3Id | ✅ | ❌ |
TaxCodeId | ✅ | ❌ |
LedgerAccount.name | ❌ | ✅ |
Location.name | ❌ | ✅ |
ICLocation.name | ❌ | ✅ |
TaxCode.code | ❌ | ✅ |
Customer.name | ❌ | ✅ |
Product.id | ❌ | ✅ |
CostCenter.id | ❌ | ✅ |
Job.number | ❌ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "Invoice.invoiceDate:DESC" Order to return results in. ex "date:desc" |
credit | boolean Filter by credit status of the Invoice. Operates as follows:
|
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "idx": 0,
- "description": "string",
- "unitAmount": "string",
- "taxAmount": "string",
- "quantity": "string",
- "customFields": { },
- "total": "string",
- "InvoiceId": 0,
- "Invoice": {
- "number": "string",
- "status": "created",
- "invoiceDate": "2019-08-24",
- "currency": "string",
- "createdAt": "2019-08-24",
- "updatedAt": "2019-08-24",
- "CustomerId": 0,
- "LocationId": 0,
- "ICLocationId": 0
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "Customer": {
- "id": "string",
- "name": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocation": {
- "id": "string",
- "name": "string"
}, - "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string",
- "salePrice": "string",
- "purchasePrice": "string",
- "InvoiceAccountId": 0,
- "InvoiceAccount": {
- "name": "string",
- "number": "string"
}
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string",
- "name": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string",
- "name": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string",
- "name": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string",
- "name": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string",
- "name": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
credit | boolean Filter by credit status of the Invoice. Operates as follows:
|
{- "count": "string",
- "estimate": true
}
This endpoint returns unpaid invoices/credits.
The parameters of this endpoint are the same as for Invoices Search
The following parameters are also supported in addition to the ones listed in Invoices Search
filterCurrency | string Provide this to only show unpaid invoices in the specified currency. This parameter is optional. |
filterLocationId | string <number> Ref: "Location"._id Provide this to only show unpaid invoices from the specified location. Invoices from child locations of the provided location are not included. This parameter is optional. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "status": "created",
- "externalId": "string",
- "type": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "customFields": { },
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "currency": "string",
- "amount": "string",
- "amountPayable": "string",
- "SystemJobId": "string",
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string"
}, - "ShippingAddressId": 0,
- "ShippingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "BillingAddressId": 0,
- "BillingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "ARAccountId": 0,
- "ARAccount": {
- "name": "string",
- "number": "string"
}, - "TemplateId": 0,
- "SalesOrderId": 0,
- "SalesOrder": {
- "number": "string"
}, - "ICJournalId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
]
}
This endpoint counts unpaid invoices/credits.
The parameters of this endpoint are the same as for Invoices Search
The following parameters are also supported in addition to the ones listed in Invoices Search
filterCurrency | string Provide this to only count unpaid invoices in the specified currency. This parameter is optional. |
filterLocationId | string <number> Ref: "Location"._id Provide this to only count unpaid invoices from the specified location. Invoices from child locations of the provided location are not included. This parameter is optional. |
{- "count": "string",
- "estimate": true
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
credit | boolean Default: false If true, only counts AR Credits i.e. invoices with a negative amount. If false or not specified, only counts invoice with a positive amount. |
{- "count": "string",
- "estimate": true
}
creates a new Invoice Line
id required | string Invoice._id |
unitAmount required | string <number> |
quantity required | string <number> |
description | string Required if ItemId is not set |
customFields | object Default: {} Key -> Value hash of custom fields, must be defined via the UI to show up in the UI |
taxAmount | string <number> |
TaxCodeId | integer Ref: TaxCode._id |
object | |
ItemId | integer Ref: Item._id |
object | |
CostCenterId | integer Ref: Cost Center._id |
object | |
JobId | integer Ref: Job._id |
object | |
ProductId | integer Ref: Product._id |
object | |
Custom1Id | integer Ref: Custom1._id |
object | |
Custom2Id | integer Ref: Custom2._id |
object | |
Custom3Id | integer Ref: Custom3._id |
object | |
LedgerAccountId | integer Ref: LedgerAccount._id |
object |
{- "description": "string",
- "unitAmount": "string",
- "quantity": "string",
- "customFields": { },
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "id": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "description": "string",
- "unitAmount": "string",
- "quantity": "string",
- "customFields": { },
- "taxAmount": "string",
- "TaxCodeId": 0,
- "ItemId": 0,
- "CostCenterId": 0,
- "JobId": 0,
- "ProductId": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0,
- "LedgerAccountId": 0
}
Update One Invoice
id required | string Invoice Id |
JSON body containing key and values to update
Can only update an invoice with "created" status
externalId | string |
type | string |
invoiceDate | string <date> |
postedDate | string <date> |
dueDate | string <date> |
notes | string |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
reference | string |
currency | string <ISO4217 3 Char Code> |
customFields | object Key -> Value hash of custom fields, must be defined via the UI to show up in the UI |
LocationId | integer Ref: Location._id |
object | |
ICLocationId | integer Ref: Location._id |
object | |
CustomerId | integer Ref: Customer._id |
object | |
ShippingAddressId | integer Ref: Address._id |
BillingAddressId | integer Ref: Address._id |
ARAccountId | integer Ref: LedgerAccount._id |
object | |
TemplateId | integer Default: "Template with name 'Default' and format = 'pdf'" Ref: Template._id |
SalesOrderId | integer Ref: SalesOrder._id |
object |
{- "externalId": "string",
- "type": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "reference": "string",
- "currency": "string",
- "customFields": { },
- "LocationId": 0,
- "Location": {
- "id": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string"
}, - "CustomerId": 0,
- "Customer": {
- "name": "string"
}, - "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "ARAccountId": 0,
- "ARAccount": {
- "number": "string"
}, - "TemplateId": "Template with name 'Default' and format = 'pdf'",
- "SalesOrderId": 0,
- "SalesOrder": {
- "number": "string"
}
}
{- "_id": 0,
- "externalId": "string",
- "type": "string",
- "number": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "reference": "string",
- "currency": "string",
- "LocationId": 0,
- "ICLocationId": 0,
- "CustomerId": 0,
- "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "ARAccountId": 0,
- "TemplateId": 0,
- "SalesOrderId": 0
}
Update an Invoice Line
id required | string InvoiceLineItem._id |
description | string Required if ItemId is not set |
unitAmount | string <number> |
quantity | string <number> |
customFields | object Default: {} Key -> Value hash of custom fields, must be defined via the UI to show up in the UI |
taxAmount | string <number> |
TaxCodeId | integer Ref: TaxCode._id |
object | |
ItemId | integer Ref: Item._id |
object | |
CostCenterId | integer Ref: Cost Center._id |
object | |
JobId | integer Ref: Job._id |
object | |
ProductId | integer Ref: Product._id |
object | |
Custom1Id | integer Ref: Custom1._id |
object | |
Custom2Id | integer Ref: Custom2._id |
object | |
Custom3Id | integer Ref: Custom3._id |
object | |
LedgerAccountId | integer Ref: LedgerAccount._id |
object |
{- "description": "string",
- "unitAmount": "string",
- "quantity": "string",
- "customFields": { },
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "id": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "description": "string",
- "unitAmount": "string",
- "quantity": "string",
- "customFields": { },
- "taxAmount": "string",
- "TaxCodeId": 0,
- "ItemId": 0,
- "CostCenterId": 0,
- "JobId": 0,
- "ProductId": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0,
- "LedgerAccountId": 0
}
{- "_id": 0,
- "status": "created",
- "externalId": "string",
- "type": "string",
- "number": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "currency": "string",
- "amount": "string",
- "amountPayable": "string",
- "customFields": { },
- "SystemJobId": "string",
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string",
- "email": "string",
- "terms": "string"
}, - "ShippingAddressId": 0,
- "ShippingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "BillingAddressId": 0,
- "BillingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "ARAccountId": 0,
- "ARAccount": {
- "name": "string",
- "number": "string"
}, - "TemplateId": 0,
- "SalesOrderId": 0,
- "SalesOrder": {
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "InvoiceLineItems": [
- {
- "description": "string",
- "unitAmount": "string",
- "quantity": "string",
- "customFields": { },
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string",
- "salePrice": "string",
- "InvoiceAccountId": 0,
- "InvoiceAccount": {
- "name": "string",
- "number": 0
}
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string",
- "name": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string",
- "name": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string",
- "name": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string",
- "name": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string",
- "name": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string",
- "name": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
This endpoint returns only payments for the specified invoice. The response and parameters of this endpoint are the same as for Payments Search
id required | string Invoice._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "checkNumber": "string",
- "number": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "VendorId": 0,
- "CustomerId": 0,
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Address": {
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string",
- "email": "user@example.com",
- "nameOnCheck": "string"
}, - "Bill": {
- "invoiceNumber": "string",
- "description": "string"
}, - "Invoice": {
- "number": "string",
- "reference": "string"
}, - "Customer": {
- "id": "string",
- "name": "string",
- "email": "user@example.com"
}, - "VendorCredit": {
- "number": "string"
}, - "CashReceipt": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "BatchPayment": {
- "referenceNumber": "string"
}
}
]
}
Void Invoice
id required | string Invoice._id |
Optional body to set data on void journal entry
description | string |
postedDate | string <date> Default: "NOW" |
{- "description": "string",
- "postedDate": "NOW"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
externalIds | ✅ | ❌ |
number | ✅ | ✅ |
name | ✅ | ✅ |
sku | ✅ | ✅ |
type | ✅ | ❌ |
description | ✅ | ✅ |
inactive | ✅ | ❌ |
salePrice | ✅ | ❌ |
purchasePrice | ✅ | ❌ |
customFields | ✅ | ❌ |
InvoiceAccountId | ✅ | ❌ |
BillAccountId | ✅ | ❌ |
InventoryAccountId | ✅ | ❌ |
CogsAccountId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
status | string Enum: "active" "inactive" Results will return |
order | string Default: "number:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "inactive": true,
- "externalIds": "string",
- "number": 0,
- "name": "string",
- "salePrice": "string",
- "purchasePrice": "string",
- "description": "string",
- "sku": "string",
- "customFields": { },
- "type": "inventory",
- "InvoiceAccountId": 0,
- "BillAccountId": 0,
- "InventoryAccountId": 0,
- "CogsAccountId": 0,
- "InvoiceAccount": {
- "number": "string",
- "name": "string"
}, - "BillAccount": {
- "number": "string",
- "name": "string"
}, - "InventoryAccount": {
- "number": "string",
- "name": "string"
}, - "CogsAccount": {
- "number": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Creates a new Item
JSON body to create new Item
name required | string |
externalIds | string |
salePrice | string <number> Default: "0" |
purchasePrice | string <number> |
description | string |
sku | string Must be unique if given |
type | string Default: "inventory" Enum: "inventory" "consumable" "direct" |
inactive | boolean Default: false |
customFields | object Key->Value hash of custom field names and values. Custom fields must be defined via the UI to be visible in the UI |
InvoiceAccountId | integer Default: "Settings.defaultItemInvoiceAccountId" Ref: Ledger Account._id |
object | |
BillAccountId | integer Default: "Settings.defaultItemInventoryAccrualId" Ref: Ledger Account._id |
object | |
InventoryAccountId | integer Default: "Settings.defaultItemInventoryAssetId" Ref: Ledger Account._id |
object | |
CogsAccountId | integer Default: "Settings.defaultItemCOGSId" Ref: Ledger Account._id |
object |
{- "externalIds": "string",
- "name": "string",
- "salePrice": "0",
- "purchasePrice": "string",
- "description": "string",
- "sku": "string",
- "type": "inventory",
- "inactive": false,
- "customFields": { },
- "InvoiceAccountId": "Settings.defaultItemInvoiceAccountId",
- "InvoiceAccount": {
- "number": "string"
}, - "BillAccountId": "Settings.defaultItemInventoryAccrualId",
- "BillAccount": {
- "number": "string"
}, - "InventoryAccountId": "Settings.defaultItemInventoryAssetId",
- "InventoryAccount": {
- "number": "string"
}, - "CogsAccountId": "Settings.defaultItemCOGSId",
- "CogsAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "number": "string",
- "name": "string",
- "externalIds": "string",
- "salePrice": "string",
- "purchasePrice": "string",
- "description": "string",
- "sku": "string",
- "type": "inventory",
- "customFields": { },
- "InvoiceAccountId": 0,
- "BillAccountId": 0,
- "InventoryAccountId": 0,
- "CogsAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "active" "inactive" Results will return |
{- "count": "string",
- "estimate": true
}
{- "_id": 0,
- "number": "string",
- "name": "string",
- "externalIds": "string",
- "salePrice": "string",
- "purchasePrice": "string",
- "description": "string",
- "sku": "string",
- "type": "inventory",
- "customFields": { },
- "inactive": true,
- "InvoiceAccountId": 0,
- "BillAccountId": 0,
- "InventoryAccountId": 0,
- "CogsAccountId": 0,
- "InvoiceAccount": {
- "number": "string",
- "name": "string"
}, - "BillAccount": {
- "number": "string",
- "name": "string"
}, - "InventoryAccount": {
- "number": "string",
- "name": "string"
}, - "CogsAccount": {
- "number": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Update One Item
id required | string Item Id |
JSON body containing key and values to update
externalIds | string |
name | string |
salePrice | string <number> |
purchasePrice | string <number> |
description | string |
sku | string Must be unique if given |
type | string Enum: "inventory" "consumable" If an item is direct, type cannot be updated. Type cannot be updated to direct. |
inactive | boolean Default: false |
customFields | object Key->Value hash of custom field names and values. Custom fields must be defined via the UI to be visible in the UI |
InvoiceAccountId | integer Ref: Ledger Account._id |
object | |
BillAccountId | integer Ref: Ledger Account._id |
object | |
InventoryAccountId | integer Ref: Ledger Account._id |
object | |
CogsAccountId | integer Ref: Ledger Account._id |
object |
{- "externalIds": "string",
- "name": "string",
- "salePrice": "string",
- "purchasePrice": "string",
- "description": "string",
- "sku": "string",
- "type": "inventory",
- "inactive": false,
- "customFields": { },
- "InvoiceAccountId": 0,
- "InvoiceAccount": {
- "number": "string"
}, - "BillAccountId": 0,
- "BillAccount": {
- "number": "string"
}, - "InventoryAccountId": 0,
- "InventoryAccount": {
- "number": "string"
}, - "CogsAccountId": 0,
- "CogsAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "number": "string",
- "name": "string",
- "externalIds": "string",
- "salePrice": "string",
- "purchasePrice": "string",
- "description": "string",
- "sku": "string",
- "type": "inventory",
- "customFields": { },
- "InvoiceAccountId": 0,
- "BillAccountId": 0,
- "InventoryAccountId": 0,
- "CogsAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Summary of items
id required | string Item Id |
childWh | boolean Determine if the summary balances include stock from child warehouses |
[- {
- "wId": 0,
- "wName": "string",
- "wPid": 0,
- "qtyAvailable": "1"
}
]
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
name | ✅ | ✅ |
number | ✅ | ✅ |
description | ✅ | ✅ |
status | ✅ | ❌ |
inactive | ✅ | ❌ |
CustomerId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
status | string Enum: "active" "inactive" Results will return |
order | string Default: "number:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "number": "string",
- "name": "string",
- "description": "string",
- "status": "quoted",
- "inactive": true,
- "CustomerId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Customer": {
- "_id": 0,
- "id": "string",
- "name": "string"
}
}
]
}
Create Job
JSON body
number required | string |
name required | string |
CustomerId required | number |
status required | string Enum: "quoted" "inProgress" "completed" "closed" |
description | string |
inactive | boolean |
{- "number": "string",
- "name": "string",
- "status": "quoted",
- "CustomerId": 0,
- "description": "string",
- "inactive": true
}
{- "_id": 0,
- "number": "string",
- "name": "string",
- "description": "string",
- "status": "quoted",
- "CustomerId": 0,
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "active" "inactive" Results will return |
{- "count": "string",
- "estimate": true
}
{- "_id": 0,
- "number": "string",
- "name": "string",
- "description": "string",
- "status": "quoted",
- "inactive": true,
- "CustomerId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Customer": {
- "id": "string",
- "name": "string"
}
}
Update Job
id required | string Job Id |
JSON body containing key and values to update
number | string |
name | string |
description | string |
status | string Enum: "quoted" "inProgress" "completed" "closed" |
inactive | boolean |
CustomerId | number |
{- "number": "string",
- "name": "string",
- "description": "string",
- "status": "quoted",
- "inactive": true,
- "CustomerId": 0
}
{- "_id": 0,
- "number": "string",
- "name": "string",
- "description": "string",
- "status": "quoted",
- "inactive": true,
- "CustomerId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "draft" "editable" "icdoc" "posted"
Not set counts all journals. |
LocationId | number Will include transactions from this Location and its children Filters on LocationId can further limit data. |
{- "count": "string",
- "estimate": true
}
Create new Journal
JSON body to create new Journal
status required | string Enum: "draft" "posted" |
entryType required | string Enum: "Standard" "Reversing" |
sourceLedger required | string Enum: "Financial" "AR" "AP" |
reference required | string |
currency required | string <ISO4217 3 Char Code> Ref: Currency.code |
required | Array of objects Minimum 2 rows required. SUM(debits) = SUM(credits). |
customCurrencyRate | string <number> Must be > 0. Should only be set if currency is a non ISO4217 currency. This rate is the value of "currency" -> "USD". This overrides customForexRates. |
Array of objects Custom forex rates for all the posted currency to reported currency pairs in this Journal. If posted currency is a non ISO4217 currency, rates are Required for all posted currency to reported currency pairs up the entity structure for this Journal. For ISO4217 currencies, this is optional. When not provided, the system will use the forex rates for the transactionDate of this Journal. | |
notes | string |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
reverseDate | string <date> Default: "First day of month after posted date." If entryType = 'Reversing', then this date will be used as the postedDate for the reversing Transaction Lines. |
icDoc | boolean True if this is an Intercompany Document Journal Entry. Not currently recommended to create these via API. |
{- "status": "draft",
- "entryType": "Standard",
- "sourceLedger": "Financial",
- "reference": "string",
- "currency": "string",
- "customCurrencyRate": "string",
- "customForexRates": [
- {
- "currency": "string",
- "rate": "string"
}
], - "notes": "string",
- "reverseDate": "First day of month after posted date.",
- "icDoc": true,
- "Transactions": [
- {
- "description": "string",
- "debit": "string",
- "credit": "string",
- "transactionDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "eliminate": false,
- "txn_type": "standard",
- "CostCenterId": 0,
- "LedgerAccountId": 0,
- "JobId": 0,
- "ProductId": 0,
- "LocationId": 0,
- "CustomerId": 0,
- "VendorId": 0,
- "ICLocationId": 0,
- "ICAccountId": 0
}
]
}
[- {
- "_id": 0,
- "number": 0,
- "status": "draft",
- "entryType": "Standard",
- "sourceLedger": "Financial",
- "reference": "string",
- "notes": "string",
- "reverseDate": "2019-08-24",
- "icDoc": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "AccountingPeriodId": 0,
- "Transactions": [
- {
- "_id": 0,
- "description": "string",
- "debit": "string",
- "credit": "string",
- "transactionDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "reconcileId": "string",
- "currency": "string",
- "customCurrencyRate": "string",
- "consolidated": true,
- "reversing": true,
- "elimination": true,
- "elim2": true,
- "SystemJobId": "string",
- "CostCenterId": 0,
- "LedgerAccountId": 0,
- "JobId": 0,
- "ProductId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "BillId": 0,
- "CustomerId": 0,
- "Vendorid": 0,
- "ICLocationId": 0,
- "CashReceiptId": 0,
- "VendorCreditId": 0,
- "ICAccountId": 0,
- "PaymentId": 0,
- "ForexRateId": 0,
- "JournalId": 0
}
]
}
]
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
currency | ✅ | ❌ |
entryType | ✅ | ✅ |
ICLocationId | ✅ | ❌ |
LocationId | ✅ | ❌ |
number | ✅ | ✅ |
postedDate | ✅ | ✅ |
reference | ✅ | ❌ |
reportingCurrency | ✅ | ❌ |
reverseDate | ✅ | ✅ |
sourceLedger | ✅ | ✅ |
status | ✅ | ❌ |
SystemJobId | ✅ | ❌ |
transactionDate | ✅ | ✅ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
status | string Enum: "draft" "editable" "icdoc" "posted"
Not set returns all journals. |
order | string Default: "number:ASC" Order to return results in. ex "date:desc" |
LocationId | number Will include transactions from this Location and its children Filters on LocationId can further limit data. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "number": 0,
- "entryType": "Standard",
- "sourceLedger": "Financial",
- "reference": "string",
- "status": "draft",
- "notes": "string",
- "reverseDate": "2019-08-24",
- "icDoc": true,
- "currency": "string",
- "LocationId": 0,
- "Location_id": "string",
- "Location_name": "string",
- "reportingCurrency": "string",
- "ICLocationId": 0,
- "ICLocation_id": "string",
- "ICLocation_name": "string",
- "postedDate": "string",
- "transactionDate": "string",
- "SystemJobId": "string",
- "amount": "string",
- "reportingAmount": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Delete one Journal
Journal can only be deleted in the following conditions:
id required | string Journal Id |
{- "_id": 0,
- "number": 0,
- "status": "draft",
- "entryType": "Standard",
- "sourceLedger": "Financial",
- "reference": "string",
- "notes": "string",
- "reverseDate": "2019-08-24",
- "icDoc": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "AccountingPeriodId": 0,
- "CryptoTransactionId": 0,
- "Transactions": [
- {
- "_id": 0,
- "description": "string",
- "debit": "string",
- "credit": "string",
- "transactionDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "reconcileId": "string",
- "currency": "string",
- "customCurrencyRate": "string",
- "Location_currency_rate": "string",
- "isCustomFxRate": true,
- "consolidated": true,
- "reversing": true,
- "elimination": true,
- "elim2": true,
- "SystemJobId": "string",
- "CostCenterId": 0,
- "LedgerAccountId": 0,
- "JobId": 0,
- "ProductId": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "BillId": 0,
- "CustomerId": 0,
- "VendorId": 0,
- "ICLocationId": 0,
- "CashReceiptId": 0,
- "VendorCreditId": 0,
- "ICAccountId": 0,
- "PaymentId": 0,
- "ForexRateId": 0,
- "JournalId": 0,
- "SalesOrderId": 0,
- "BatchPaymentId": 0,
- "txn_type": "standard",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Location": {
- "name": "string",
- "id": "string"
}, - "ICLocation": {
- "name": "string",
- "id": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string",
- "type": "string",
- "subtype": "string"
}, - "ICAccount": {
- "name": "string",
- "number": "string"
}, - "Customer": {
- "id": "string",
- "name": "string"
}, - "Job": {
- "name": "string",
- "number": "string"
}, - "CostCenter": {
- "name": "string",
- "id": "string"
}, - "Product": {
- "name": "string",
- "id": "string"
}, - "Custom1": {
- "name": "string",
- "id": "string"
}, - "Custom2": {
- "name": "string",
- "id": "string"
}, - "Custom3": {
- "name": "string",
- "id": "string"
}, - "Vendor": {
- "name": "string",
- "id": "string"
}, - "Invoice": {
- "number": "string"
}, - "Bill": {
- "invoiceNumber": "string"
}, - "CashReceipt": {
- "number": "string"
}, - "VendorCredit": {
- "number": "string"
}, - "SalesOrder": {
- "number": "string"
}
}
]
}
Update one Journal
Journal can only be updated in the following conditions:
id required | string Journal Id |
JSON object containing key and values to update
Cannot update posted journal
Transaction lines are replaced with the new lines provided. So new Transaction._id values will be generated for each line, and old Transactions will be deleted.
entryType | string Enum: "Standard" "Reversing" |
sourceLedger | string Enum: "Financial" "AR" "AP" |
reference | string |
currency | string <ISO4217 3 Char Code> Ref: Currency.code |
customCurrencyRate | string <number> Must be > 0. Should only be set if currency is a non ISO4217 currency. This rate is the value of "currency" -> "USD". |
Array of objects Custom forex rates for all the posted currency to reported currency pairs in this Journal. If posted currency is a non ISO4217 currency, rates are Required for all posted currency to reported currency pairs up the entity structure for this Journal. For ISO4217 currencies, this is optional. When not provided, the system will use the forex rates for the transactionDate of this Journal. | |
notes | string |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
reverseDate | string <date> Default: "First day of month after posted date." If entryType = 'Reversing', then this date will be used as the postedDate for the reversing Transaction Lines. |
icDoc | boolean True if this is an Intercompany Document Journal Entry. Not currently recommended to create these via API. |
Array of objects Minimum 2 rows required. SUM(debits) = SUM(credits). |
{- "entryType": "Standard",
- "sourceLedger": "Financial",
- "reference": "string",
- "currency": "string",
- "customCurrencyRate": "string",
- "customForexRates": [
- {
- "currency": "string",
- "rate": "string"
}
], - "notes": "string",
- "reverseDate": "First day of month after posted date.",
- "icDoc": true,
- "Transactions": [
- {
- "description": "string",
- "debit": "string",
- "credit": "string",
- "transactionDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "eliminate": false,
- "txn_type": "standard",
- "CostCenterId": 0,
- "LedgerAccountId": 0,
- "JobId": 0,
- "ProductId": 0,
- "LocationId": 0,
- "CustomerId": 0,
- "Vendorid": 0,
- "ICLocationId": 0,
- "ICAccountId": 0
}
]
}
[- {
- "_id": 0,
- "number": 0,
- "status": "draft",
- "entryType": "Standard",
- "sourceLedger": "Financial",
- "reference": "string",
- "notes": "string",
- "reverseDate": "2019-08-24",
- "icDoc": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "AccountingPeriodId": 0,
- "Transactions": [
- {
- "_id": 0,
- "description": "string",
- "debit": "string",
- "credit": "string",
- "transactionDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "reconcileId": "string",
- "currency": "string",
- "customCurrencyRate": "string",
- "consolidated": true,
- "reversing": true,
- "elimination": true,
- "elim2": true,
- "SystemJobId": "string",
- "CostCenterId": 0,
- "LedgerAccountId": 0,
- "JobId": 0,
- "ProductId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "BillId": 0,
- "CustomerId": 0,
- "Vendorid": 0,
- "ICLocationId": 0,
- "CashReceiptId": 0,
- "VendorCreditId": 0,
- "ICAccountId": 0,
- "PaymentId": 0,
- "ForexRateId": 0,
- "JournalId": 0
}
]
}
]
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
elim2 | ✅ | ❌ |
BillId | ✅ | ❌ |
elimination | ✅ | ❌ |
CashReceiptId | ✅ | ❌ |
CostCenterId | ✅ | ❌ |
currency | ✅ | ✅ |
Custom1Id | ✅ | ❌ |
Custom2Id | ✅ | ❌ |
Custom3Id | ✅ | ❌ |
CustomerId | ✅ | ❌ |
description | ✅ | ❌ |
InvoiceId | ✅ | ❌ |
ICAccountId | ✅ | ❌ |
ICLocationId | ✅ | ❌ |
JobId | ✅ | ❌ |
JournalId | ✅ | ✅ |
Journal_entryType | ✅ | ✅ |
Journal_notes | ✅ | ❌ |
Journal_number | ✅ | ✅ |
Journal_reference | ✅ | ❌ |
Journal_status | ✅ | ❌ |
Journal_sourceLedger | ✅ | ✅ |
Journal_AccountingPeriodId | ✅ | ❌ |
LedgerAccount_type | ✅ | ✅ |
LedgerAccount_subtype | ✅ | ✅ |
LedgerAccountId | ✅ | ❌ |
Location_currency_rate | ✅ | ✅ |
Location_currency_debit | ✅ | ✅ |
Location_currency_credit | ✅ | ✅ |
LocationId | ✅ | ❌ |
SalesOrderId | ✅ | ❌ |
ProductId | ✅ | ❌ |
postedDate | ✅ | ✅ |
transactionDate | ✅ | ✅ |
reconcileId | ✅ | ❌ |
reversing | ✅ | ❌ |
SystemJobId | ✅ | ❌ |
VendorId | ✅ | ❌ |
VendorCreditId | ✅ | ❌ |
BatchPaymentId | ✅ | ❌ |
PaymentId | ✅ | ❌ |
credit | ✅ | ✅ |
debit | ✅ | ✅ |
txn_type | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "postedDate:ASC" Order to return results in. ex "date:desc" |
LocationId | number Will include transactions from this Location and its children Filters on LocationId can further limit data. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "description": "string",
- "transactionDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "reversing": true,
- "reconcileId": "string",
- "consolidated": true,
- "elimination": true,
- "elim2": true,
- "customCurrencyRate": "string",
- "JournalId": 0,
- "Journal_status": "draft",
- "Journal_sourceLedger": "Financial",
- "Journal_entryType": "Standard",
- "Journal_reference": "string",
- "Journal_notes": "string",
- "Journal_number": 0,
- "Journal_reverseDate": "2019-08-24",
- "Journal_createdAt": "2019-08-24T14:15:22Z",
- "Journal_updatedAt": "2019-08-24T14:15:22Z",
- "Journal_AccountingPeriodId": "string",
- "SystemJobId": "string",
- "LedgerAccountId": 0,
- "LedgerAccount_name": "string",
- "LedgerAccount_number": "string",
- "LedgerAccount_type": "Asset",
- "LedgerAccount_subtype": "string",
- "ICAccountId": 0,
- "ICAccount_name": "string",
- "ICAccount_number": "string",
- "ICAccount_type": "string",
- "ICAccount_subtype": "Asset",
- "CostCenterId": 0,
- "CostCenter_name": "string",
- "CostCenter_id": "string",
- "ProductId": 0,
- "Product_name": "string",
- "Product_id": "string",
- "Custom1Id": 0,
- "Custom1_name": "string",
- "Custom1_id": "string",
- "Custom2Id": 0,
- "Custom2_name": "string",
- "Custom2_id": "string",
- "Custom3Id": 0,
- "Custom3_name": "string",
- "Custom3_id": "string",
- "CustomerId": 0,
- "Customer_id": "string",
- "Customer_name": "string",
- "VendorId": 0,
- "Vendor_id": "string",
- "Vendor_name": "string",
- "InvoiceId": 0,
- "Invoice_number": "string",
- "BillId": 0,
- "Bill_invoiceNumber": "string",
- "PaymentId": 0,
- "SalesOrderId": 0,
- "SalesOrder_number": "string",
- "LocationId": 0,
- "Location_name": "string",
- "Location_id": "string",
- "Location_currency": "string",
- "Location_currency_rate": "string",
- "Location_currency_credit": "string",
- "Location_currency_debit": "string",
- "Location_parent_path": [
- 0
], - "ICLocationId": 0,
- "ICLocation_name": "string",
- "ICLocation_id": "string",
- "ICLocation_currency": "string",
- "CashReceiptId": 0,
- "CashReceipt_number": "string",
- "VendorCreditId": "string",
- "VendorCredit_number": "string",
- "JobId": 0,
- "Job_number": "string",
- "Job_name": "string",
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "currency": "string",
- "debit": "string",
- "credit": "string",
- "txn_type": "standard"
}
]
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
{- "count": "string",
- "estimate": true
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
name | ✅ | ✅ |
number | ✅ | ✅ |
naturalBalance | ✅ | ✅ |
description | ✅ | ✅ |
includeLocationChildren | ✅ | ✅ |
type | ✅ | ✅ |
subtype | ✅ | ✅ |
canDelete | ✅ | ✅ |
revalue_fx | ✅ | ✅ |
inactive | ✅ | ✅ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
LocationId | ✅ | ❌ |
Location.id | ❌ | ✅ |
ICAccountId | ✅ | ❌ |
ICAccount.number | ❌ | ❌ |
useHistoricalConsolidationRate | ✅ | ❌ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
status | string Enum: "active" "inactive" Results will return |
order | string Default: "number:ASC" Order to return results in. ex "date:desc" |
type | string Enum: "Asset" "Liability" "Equity" "Revenue" "Expense" Filter accounts by type (optional), if not provided all types will be returned |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "name": "string",
- "number": "string",
- "naturalBalance": "Debit",
- "type": "Asset",
- "subtype": "string",
- "reportGroup": "Cash",
- "description": "string",
- "includeLocationChildren": true,
- "canDelete": true,
- "revalue_fx": true,
- "inactive": true,
- "useHistoricalConsolidationRate": true,
- "LocationId": 0,
- "ICAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICAccount": {
- "name": "string",
- "number": "string"
}
}
]
}
Create new Ledger Account
JSON body to create new Ledger Account
One of [LocationId, Location.id]
is required
Only one of [ICAccountId, ICAccount.number]
can be set
name required | string |
number required | string <integer> |
naturalBalance required | string Enum: "Debit" "Credit" |
type required | string Enum: "Asset" "Liability" "Equity" "Revenue" "Expense" |
subtype required | string Case in-sensitive |
reportGroup | string Enum: "Cash" "Accounts Receivable" "Other Current Assets" "Fixed Assets" "Other Assets" "Accounts Payable" "Other Current Liability" "Long Term Liability" "Equity" "Retained Earnings" "Revenue" "Other Income" "Operating Expense" "Cost of Revenue" "Other Expense" "Income Tax Expense" |
description | string |
includeLocationChildren | boolean Default: false |
canDelete | boolean Default: true |
revalue_fx | boolean Default: false |
inactive | boolean Default: false |
useHistoricalConsolidationRate | boolean Default: false If true, the account will use the historical consolidation rate Can only be enabled for type = 'Equity' accounts |
LocationId | integer Ref: Location._id |
ICAccountId | integer Ref: LedgerAccount._id |
object | |
object |
{- "name": "string",
- "number": "string",
- "naturalBalance": "Debit",
- "type": "Asset",
- "reportGroup": "Cash",
- "subtype": "string",
- "description": "string",
- "includeLocationChildren": false,
- "canDelete": true,
- "revalue_fx": false,
- "inactive": false,
- "useHistoricalConsolidationRate": false,
- "LocationId": 0,
- "ICAccountId": 0,
- "Location": {
- "id": "string"
}, - "ICAccount": {
- "number": "string"
}
}
[- {
- "_id": 0,
- "name": "string",
- "number": "string",
- "naturalBalance": "Debit",
- "type": "Asset",
- "subtype": "string",
- "description": "string",
- "includeLocationChildren": true,
- "canDelete": true,
- "revalue_fx": true,
- "inactive": true,
- "LocationId": 0,
- "ICAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "active" "inactive" Results will return |
type | string Enum: "Asset" "Liability" "Equity" "Revenue" "Expense" Filter accounts by type (optional), if not provided all types will be returned |
{- "count": "string",
- "estimate": true
}
Get one Ledger Account
id required | string Ledger Account Id |
{- "_id": 0,
- "name": "string",
- "number": "string",
- "naturalBalance": "Debit",
- "type": "Asset",
- "subtype": "string",
- "reportGroup": "Cash",
- "description": "string",
- "includeLocationChildren": true,
- "canDelete": true,
- "revalue_fx": true,
- "inactive": true,
- "useHistoricalConsolidationRate": true,
- "LocationId": 0,
- "ICAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICAccount": {
- "name": "string",
- "number": "string"
}
}
Update one Ledger Account
id required | string Ledger Account Id |
JSON object containing key and values to update
Only one of [LocationId, Location.id]
can be set
Only one of [ICAccountId, ICAccount.number]
can be set
name | string |
number | string <integer> |
naturalBalance | string Enum: "Debit" "Credit" |
type | string Enum: "Asset" "Liability" "Equity" "Revenue" "Expense" |
reportGroup | string Enum: "Cash" "Accounts Receivable" "Other Current Assets" "Fixed Assets" "Other Assets" "Accounts Payable" "Other Current Liability" "Long Term Liability" "Equity" "Retained Earnings" "Revenue" "Other Income" "Operating Expense" "Cost of Revenue" "Other Expense" "Income Tax Expense" |
subtype | string Case in-sensitive |
description | string |
includeLocationChildren | boolean Default: false |
revalue_fx | boolean Default: false |
inactive | boolean Default: false |
useHistoricalConsolidationRate | boolean Default: false |
LocationId | integer Ref: Location._id |
ICAccountId | integer Ref: LedgerAccount._id |
object | |
object |
{- "name": "string",
- "number": "string",
- "naturalBalance": "Debit",
- "type": "Asset",
- "reportGroup": "Cash",
- "subtype": "string",
- "description": "string",
- "includeLocationChildren": false,
- "revalue_fx": false,
- "inactive": false,
- "useHistoricalConsolidationRate": false,
- "LocationId": 0,
- "ICAccountId": 0,
- "Location": {
- "id": "string"
}, - "ICAccount": {
- "number": "string"
}
}
[- {
- "_id": 0,
- "name": "string",
- "number": "string",
- "naturalBalance": "Debit",
- "type": "Asset",
- "subtype": "string",
- "description": "string",
- "includeLocationChildren": true,
- "canDelete": true,
- "revalue_fx": true,
- "inactive": true,
- "LocationId": 0,
- "ICAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
Returns a list of all defined ledger account subtypes
mapgroups | boolean If provided, will return subtypes with group mappings as a collection; If not provided, will return all subtypes as an array of strings; |
[ ]
Upsert subtype to report group mappings
Existing subtypes will be updated, new subtypes will be created.
The subtype field is case insensitive and must be unique.
subtype required | string Must be unique and is case insensitive |
reportGroup required | string Enum: "Cash" "Accounts Receivable" "Other Current Assets" "Fixed Assets" "Other Assets" "Accounts Payable" "Other Current Liability" "Long Term Liability" "Equity" "Retained Earnings" "Revenue" "Other Income" "Operating Expense" "Cost of Revenue" "Other Expense" "Income Tax Expense" |
[- {
- "subtype": "string",
- "reportGroup": "Cash"
}
]
[- {
- "subtype": "string",
- "reportGroup": "Cash"
}
]
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ❌ |
number | ✅ | ✅ |
name | ✅ | ❌ |
id required | string Location _id |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "active" "inactive" Results will return |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "number:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "number": "string",
- "name": "string",
- "ICAccountId": 0,
- "LocationId": 0,
- "ICAccount": {
- "name": "string",
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
id | ✅ | ✅ |
name | ✅ | ✅ |
description | ✅ | ✅ |
currency | ✅ | ✅ |
externalId | ✅ | ✅ |
externalSource | ✅ | ✅ |
parent_id | ✅ | ❌ |
Parent.id | ❌ | ❌ |
FXGLAccountId | ✅ | ❌ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "id:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "id": "string",
- "name": "string",
- "currency": "string",
- "description": "string",
- "imageURL": "string",
- "entityName": "string",
- "entityEmail": "string",
- "entityPhone": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "parent_id": 0,
- "parent_path": [
- 0
], - "externalId": "string",
- "externalSource": "string",
- "AddressId": 0,
- "FXGLAccountId": 0,
- "Address": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Parent": {
- "id": "string",
- "name": "string"
}, - "FXGLAccount": {
- "number": "string",
- "name": "string"
}
}
]
}
Creates a new Location
JSON body to create new Location
One of [Parent.id, parent_id]
must be set
Only one of [FXGLAccount.number, FXGLAccountId]
can be set
id required | string |
name required | string |
currency required | string Ref: Currency.code |
description | string |
imageURL | string <url> |
entityName | string |
entityEmail | string |
entityPhone | string |
createdAt | string <date-time> |
updatedAt | string <date-time> |
parent_id | integer Ref: Location._id |
externalId | string |
externalSource | string |
FXGLAccountId | integer Ref: LedgerAccount._id |
object | |
object | |
object |
{- "id": "string",
- "name": "string",
- "currency": "string",
- "description": "string",
- "imageURL": "string",
- "entityName": "string",
- "entityEmail": "string",
- "entityPhone": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "parent_id": 0,
- "externalId": "string",
- "externalSource": "string",
- "FXGLAccountId": 0,
- "Address": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Parent": {
- "id": "string"
}, - "FXGLAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "id": "string",
- "name": "string",
- "currency": "string",
- "description": "string",
- "imageURL": "string",
- "entityName": "string",
- "entityEmail": "string",
- "entityPhone": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "parent_id": 0,
- "parent_path": [
- 0
], - "externalId": "string",
- "externalSource": "string",
- "AddressId": 0,
- "FXGLAccountId": 0
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
{- "count": "string",
- "estimate": true
}
{- "_id": 0,
- "id": "string",
- "name": "string",
- "currency": "string",
- "description": "string",
- "imageURL": "string",
- "entityName": "string",
- "entityEmail": "string",
- "entityPhone": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "parent_id": 0,
- "parent_path": [
- 0
], - "externalId": "string",
- "externalSource": "string",
- "AddressId": 0,
- "FXGLAccountId": 0,
- "Address": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Parent": {
- "id": "string",
- "name": "string"
}, - "FXGLAccount": {
- "number": "string",
- "name": "string"
}
}
Update One Location
id required | string Location Id |
JSON body containing key and values to update
Only one of [Parent.id, parent_id]
can be set
Only one of [FXGLAccount.number, FXGLAccountId]
can be set
id | string |
name | string |
currency | string Ref: Currency.code |
description | string |
imageURL | string <url> |
entityName | string |
entityEmail | string |
entityPhone | string |
createdAt | string <date-time> |
updatedAt | string <date-time> |
parent_id | integer Ref: Location._id |
externalId | string |
externalSource | string |
FXGLAccountId | integer Ref: LedgerAccount._id |
object | |
object | |
object |
{- "id": "string",
- "name": "string",
- "currency": "string",
- "description": "string",
- "imageURL": "string",
- "entityName": "string",
- "entityEmail": "string",
- "entityPhone": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "parent_id": 0,
- "externalId": "string",
- "externalSource": "string",
- "FXGLAccountId": 0,
- "Address": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Parent": {
- "id": "string"
}, - "FXGLAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "id": "string",
- "name": "string",
- "currency": "string",
- "description": "string",
- "imageURL": "string",
- "entityName": "string",
- "entityEmail": "string",
- "entityPhone": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "parent_id": 0,
- "parent_path": [
- 0
], - "externalId": "string",
- "externalSource": "string",
- "AddressId": 0,
- "FXGLAccountId": 0
}
Get Location with Descendants (children, grandchildren, etc) in a nested tree.
id required | string Location Id |
{- "_id": 0,
- "id": "string",
- "name": "string",
- "currency": "string",
- "children": [
- {
- "_id": 0,
- "id": "string",
- "name": "string",
- "currency": "string",
- "children": [ ]
}
]
}
Create new Part Number
JSON body to create new Part Number
VendorId required | number |
ItemId required | number |
partNumber required | string |
{- "VendorId": 0,
- "ItemId": 0,
- "partNumber": "string"
}
{- "_id": 0,
- "VendorId": 0,
- "ItemId": 0,
- "partNumber": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
VendorId | ✅ | ✅ |
ItemId | ✅ | ✅ |
partNumber | ✅ | ✅ |
Item.name | ❌ | ✅ |
Vendor.name | ❌ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
order | string Default: "_id:ASC" Order to return results in. ex "date:desc" |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "VendorId": 0,
- "ItemId": 0,
- "partNumber": "string",
- "Item": {
- "name": "string",
- "sku": "string",
- "number": 0,
- "description": "string"
}, - "Vendor": {
- "name": "string",
- "id": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Get one Part Number
id required | string Part Number Id |
{- "_id": 0,
- "VendorId": 0,
- "ItemId": 0,
- "partNumber": "string",
- "Item": {
- "name": "string",
- "sku": "string",
- "number": 0,
- "description": "string"
}, - "Vendor": {
- "name": "string",
- "id": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Update one Part Number
id required | string Part Number Id |
JSON object containing key and values to update
partNumber | string |
{- "partNumber": "string"
}
{- "_id": 0,
- "VendorId": 0,
- "ItemId": 0,
- "partNumber": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
externalId | ✅ | ✅ |
type | ✅ | ❌ |
checkNumber | ✅ | ✅ |
status | ✅ | ❌ |
amount | ✅ | ✅ |
paymentDate | ✅ | ✅ |
postedDate | ✅ | ✅ |
memo | ✅ | ❌ |
notes | ✅ | ❌ |
currency | ✅ | ✅ |
BillId | ✅ | ❌ |
VendorId | ✅ | ❌ |
CustomerId | ✅ | ❌ |
VendorCreditId | ✅ | ❌ |
LedgerAccountId | ✅ | ❌ |
CashReceiptId | ✅ | ❌ |
LocationId | ✅ | ❌ |
BatchPaymentId | ✅ | ❌ |
InvoiceId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "_id:ASC" Order to return results in. ex "date:desc" |
type | string Enum: "ap" "ar" Filter by AP or AR payments If not specified, all payment types will be returned |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "checkNumber": "string",
- "number": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "VendorId": 0,
- "CustomerId": 0,
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Address": {
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string",
- "email": "user@example.com",
- "nameOnCheck": "string"
}, - "Bill": {
- "invoiceNumber": "string",
- "description": "string"
}, - "Invoice": {
- "number": "string",
- "reference": "string"
}, - "Customer": {
- "id": "string",
- "name": "string",
- "email": "user@example.com"
}, - "VendorCredit": {
- "number": "string"
}, - "CashReceipt": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "BatchPayment": {
- "referenceNumber": "string"
}
}
]
}
Creates a new Payment
JSON body to create new Payment
Depending on the type different fields are required.
This table defines which fields are required or not allowed based on the type.
Fields not mentioned here are optional
Field | manual | vendorcredit | cashreceipt | refund | ap_refund |
---|---|---|---|---|---|
amount | ✅ | ✅ | ✅ | ✅ | ✅ |
paymentDate | ✅ | ✅ | ✅ | ✅ | ✅ |
BillId | ✅ | ✅ | ❌ | ❌ | ✅ |
VendorCreditId | ❌ | ✅ | ❌ | ❌ | ❌ |
LedgerAccountId | ✅ | ❌ | ❌ | ✅ | ✅ |
CashReceiptId | ❌ | ❌ | ✅ | ❌ | ❌ |
InvoiceId | ❌ | ❌ | ✅ | ✅ | ❌ |
✅ - Field required for type
❌ - Field not allowed for type
Created payments will be created in created
status unless the setting for Auto-Approve (AR/AP) is enabled, then the status will be approved
type required | string Enum: "manual" "vendorcredit" "cashreceipt" "refund" "ap_refund" |
amount required | string <number> |
paymentDate required | string <date> |
externalId | string |
externalCheckId | string |
externalCheckBankId | string |
checkNumber | string |
postedDate | string <date> Defaults to paymentDate |
memo | string |
notes | string |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
BillId | integer Ref: Bill._id |
VendorCreditId | integer Ref: VendorCredit._id |
LedgerAccountId | integer Ref: LedgerAccount._id |
CashReceiptId | integer Ref: CashReceipt._id |
AddressId | integer Ref: Address._id |
InvoiceId | integer Ref: Invoice._id |
{- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "checkNumber": "string",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "InvoiceId": 0
}
{- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "number": "string",
- "checkNumber": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
type | string Enum: "ap" "ar" Filter by AP or AR payments If not specified, all payment types will be returned |
{- "count": "string",
- "estimate": true
}
{- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "checkNumber": "string",
- "number": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Address": {
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Bill": {
- "invoiceNumber": "string",
- "description": "string"
}, - "VendorId": 0,
- "Vendor": {
- "id": "string",
- "name": "string",
- "email": "user@example.com",
- "nameOnCheck": "string"
}, - "Invoice": {
- "number": "string",
- "reference": "string"
}, - "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string",
- "email": "user@example.com"
}, - "VendorCredit": {
- "number": "string"
}, - "CashReceipt": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "BatchPayment": {
- "referenceNumber": "string"
}
}
Update One Payment
id required | string Payment Id |
JSON body containing key and values to update
externalId | string |
externalCheckId | string |
externalCheckBankId | string |
checkNumber | string |
amount | string <number> |
paymentDate | string <date> |
postedDate | string <date> Defaults to paymentDate |
AddressId | number |
memo | string |
notes | string |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
{- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "checkNumber": "string",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "AddressId": 0,
- "memo": "string",
- "notes": "string",
}
{- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "number": "string",
- "checkNumber": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Void one Payment
Voided payments will post a voided journal
Cannot void if payment is not approved
id required | string Payment._id |
Optional JSON body to override the journal description and postedDate
description | string |
postedDate | string <date> |
{- "description": "string",
- "postedDate": "2019-08-24"
}
Close a specific period task
id required | string Period Id |
task required | string Enum: "ar" "ap" "financial" "crypto" "inventory" "period" Task to close |
{- "_id": 0,
- "start": "2019-08-24T14:15:22Z",
- "end": "2019-08-24T14:15:22Z",
- "status": "open",
- "fx_revalue_status": "open",
- "financial_status": "open",
- "ar_status": "open",
- "ap_status": "open",
- "crypto_status": "open",
- "inventory_status": "open",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "AccountingYearId": "string"
}
Open a specific period task
id required | string Period Id |
task required | string Enum: "ar" "ap" "financial" "crypto" "inventory" "period" Task to open |
{- "_id": 0,
- "start": "2019-08-24T14:15:22Z",
- "end": "2019-08-24T14:15:22Z",
- "status": "open",
- "fx_revalue_status": "open",
- "financial_status": "open",
- "ar_status": "open",
- "ap_status": "open",
- "crypto_status": "open",
- "inventory_status": "open",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "AccountingYearId": "string"
}
[- {
- "_id": 0,
- "start": "2019-08-24T14:15:22Z",
- "end": "2019-08-24T14:15:22Z",
- "status": "open",
- "fx_revalue_status": "open",
- "financial_status": "open",
- "ar_status": "open",
- "ap_status": "open",
- "crypto_status": "open",
- "inventory_status": "open",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "AccountingYearId": "string"
}
]
Preferences are used to store user UI preferences. There are currently the following types:
Type | Description |
---|---|
table | Stores information regarding default column visibility, sorting order, and page size |
filter | Stores information for a tables view. These can be useful in storing different re-usable queries |
Create new Preferences
JSON body to create new Preference
key required | string |
userId | number or null |
type | string or null |
name | string or null |
data | object or null |
{- "userId": 0,
- "type": "string",
- "key": "string",
- "name": "string",
- "data": { }
}
[- {
- "userId": "string",
- "type": "string",
- "key": "string",
- "name": "string",
- "data": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
Returns a list of preferences in descending order by key
Field | Filterable |
---|---|
_id | ✅ |
userId | ✅ |
type | ✅ |
key | ✅ |
name | ✅ |
data | ❌ |
createdAt | ❌ |
updatedAt | ❌ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "userId": "string",
- "type": "string",
- "key": "string",
- "name": "string",
- "data": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
{- "_id": 0,
- "userId": "string",
- "type": "string",
- "key": "string",
- "name": "string",
- "data": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Update one Preference
id required | string Preference Id |
JSON object containing key and values to update
data | object |
{- "data": { }
}
[- {
- "userId": "string",
- "type": "string",
- "key": "string",
- "name": "string",
- "data": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
id | ✅ | ✅ |
name | ✅ | ✅ |
description | ✅ | ✅ |
inactive | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
status | string Enum: "active" "inactive" Results will return |
order | string Default: "id:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Create Product
JSON body
id required | string |
name required | string |
description | string |
inactive | boolean |
{- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true
}
{- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "active" "inactive" Results will return |
{- "count": "string",
- "estimate": true
}
Update Product
id required | string Product Id |
JSON body containing key and values to update
id | string |
name | string |
description | string |
inactive | boolean |
{- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true
}
{- "_id": 0,
- "id": "string",
- "name": "string",
- "description": "string",
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Get stock adjustments linked to a purchase order
The parameters of this endpoint are the same as for Stock Adjustment Search
id required | string PurchaseOrder._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "ItemId": 0,
- "description": "string",
- "WarehouseId": 0,
- "locked": true,
- "transactionDate": "2019-08-24T14:15:22Z",
- "postedDate": "2019-08-24",
- "AdjustmentLedgerAccountId": 0,
- "JournalId": 0,
- "type": "fulfill",
- "TransferId": 0,
- "POLineItemId": 0,
- "SOLineItemId": 0,
- "PurchaseOrderId": 0,
- "SalesOrderId": 0,
- "ShipmentReceiptLineId": 0,
- "quantity": "string",
- "qtyPicked": "string",
- "qtyAvailable": "string",
- "currency": "string",
- "price": "string",
- "currencyRate": "string",
- "costBasis": "string",
- "AdjustmentLedgerAccount": {
- "name": "string",
- "number": "string"
}, - "Item": {
- "name": "string",
- "number": "string",
- "sku": "string"
}, - "Warehouse": {
- "name": "string"
}, - "PurchaseOrder": {
- "number": "string"
}, - "SalesOrder": {
- "number": "string"
}, - "Journal": {
- "number": 0
}, - "createdAt": "2019-08-24",
- "updatedAt": "2019-08-24"
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
externalId | ✅ | ✅ |
number | ✅ | ✅ |
description | ✅ | ❌ |
issueDate | ✅ | ✅ |
deliveryDate | ✅ | ✅ |
status | ✅ | ❌ |
amount | ✅ | ✅ |
currency | ✅ | ❌ |
VendorId | ✅ | ❌ |
WarehouseId | ✅ | ❌ |
LocationId | ✅ | ❌ |
customFields | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "number:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "externalId": "string",
- "number": "string",
- "description": "string",
- "issueDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "status": "created",
- "amount": "string",
- "currency": "string",
- "notes": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "customFields": { },
- "TemplateId": 0,
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "VendorId": 0,
- "Vendor": {
- "id": "string",
- "name": "string",
- "email": "string"
}, - "InventoryReceivingAccountId": 0,
- "InventoryReceivingAccount": {
- "number": "string",
- "name": "string"
}, - "ShippingAddressId": 0,
- "ShippingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "BillingAddressId": 0,
- "BillingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "WarehouseId": 0,
- "Warehouse": {
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Creates a new Purchase Order
JSON body to create new Purchase Order
One of [Location.id, LocationId]
is Required
One of [Vendor.name, VendorId]
is Required
One of [InventoryAccrualAccount.number, InventoryAccrualAccountId]
is Required
One of [Warehouse.name, WarehouseId]
is Required
VendorId required | integer Ref: Vendor._id |
LocationId required | integer Ref: Location._id |
WarehouseId required | integer Ref: Warehouse._id |
currency required | string <ISO4217 3 Char Code> Ref: Currency.code - cannot use custom |
externalId | string |
description | string |
notes | string |
issueDate | string <date> Default: "NOW" |
deliveryDate | string <date> Default: "NOW" |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
TemplateId | integer Default: "Template with name 'Default' and format = 'pdf'" Ref: Template._id |
customFields | object Default: {} Key -> Value hash of custom fields, must be defined via the UI to show up in the UI |
object | |
ICLocationId | integer Ref: Location._id |
object | |
object | |
object | |
InventoryReceivingAccountId | integer Default: "Ref: Settings.defaultInventoryAccrualId" Must be an active acccount "Ref: LedgerAccount._id" |
object | |
ShippingAddressId | integer Ref: Address._id |
BillingAddressId | integer Ref: Address._id |
Array of objects If an Item is passed, then this line will be considered an "item" type line, Otherwise it is a "description" type line, which requires
Tax Logic
|
{- "externalId": "string",
- "description": "string",
- "notes": "string",
- "issueDate": "NOW",
- "deliveryDate": "NOW",
- "currency": "string",
- "TemplateId": "Template with name 'Default' and format = 'pdf'",
- "customFields": { },
- "LocationId": 0,
- "Location": {
- "id": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string"
}, - "VendorId": 0,
- "Vendor": {
- "name": "string"
}, - "WarehouseId": 0,
- "Warehouse": {
- "name": "string"
}, - "InventoryReceivingAccountId": "Ref: Settings.defaultInventoryAccrualId",
- "InventoryReceivingAccount": {
- "number": "string"
}, - "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "POLineItems": [
- {
- "idx": 0,
- "externalId": "string",
- "description": "string",
- "customFields": { },
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "SalesOrderId": 0,
- "SOLineItemId": 0,
- "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}
}
]
}
{- "_id": 0,
- "externalId": "string",
- "status": "string",
- "number": "string",
- "amount": "string",
- "description": "string",
- "notes": "string",
- "issueDate": "NOW",
- "deliveryDate": "NOW",
- "currency": "string",
- "customFields": { },
- "TemplateId": 0,
- "LocationId": 0,
- "ICLocationId": 0,
- "VendorId": 0,
- "WarehouseId": 0,
- "InventoryReceivingAccountId": 0,
- "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
idx | ✅ | ✅ |
description | ✅ | ✅ |
amount | ✅ | ✅ |
quantity | ✅ | ✅ |
taxAmount | ✅ | ✅ |
quantityReceived | ✅ | ✅ |
customFields | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
PurchaseOrderId | ✅ | ❌ |
PurchaseOrder.number | ✅ | ✅ |
PurchaseOrder.status | ✅ | ✅ |
PurchaseOrder.VendorId | ✅ | ❌ |
PurchaseOrder.LocationId | ✅ | ❌ |
PurchaseOrder.ICLocationId | ✅ | ❌ |
PurchaseOrder.WarehouseId | ✅ | ❌ |
PurchaseOrder.createdAt | ✅ | ✅ |
PurchaseOrder.updatedAt | ✅ | ✅ |
ItemId | ✅ | ❌ |
SalesOrderId | ✅ | ❌ |
CostCenterId | ✅ | ❌ |
JobId | ✅ | ❌ |
ProductId | ✅ | ❌ |
TaxCodeId | ✅ | ❌ |
Custom1Id | ✅ | ❌ |
Custom2Id | ✅ | ❌ |
Custom3Id | ✅ | ❌ |
Item.name | ❌ | ✅ |
Item.salePrice | ❌ | ✅ |
Item.purchasePrice | ❌ | ✅ |
Vendor.name | ❌ | ✅ |
SalesOrder.number | ❌ | ✅ |
Location.name | ❌ | ✅ |
ICLocation.name | ❌ | ✅ |
Warehouse.name | ❌ | ✅ |
CostCenter.id | ❌ | ✅ |
Product.id | ❌ | ✅ |
Job.number | ❌ | ✅ |
TaxCode.code | ❌ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "idx:ASC" Order to return results in. ex "date:desc" |
receivableOnly | boolean Default: false Set this to true to only return lines that can be received Criteria for receivable lines is as under:
Setting this to false will return all lines |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "idx": "string",
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "quantityReceived": "string",
- "customFields": { },
- "total": "string",
- "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string",
- "status": "string",
- "VendorId": 0,
- "LocationId": 0,
- "ICLocationId": 0,
- "WarehouseId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "ItemId": 0,
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string",
- "salePrice": "string",
- "purchasePrice": "string"
}, - "Vendor": {
- "name": "string",
- "id": "string"
}, - "SalesOrderId": 0,
- "SalesOrder": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocation": {
- "id": "string",
- "name": "string"
}, - "Warehouse": {
- "name": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string",
- "name": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string",
- "name": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string",
- "name": "string"
}, - "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string",
- "name": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string",
- "name": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
idx | ✅ | ✅ |
description | ✅ | ✅ |
amount | ✅ | ✅ |
quantity | ✅ | ✅ |
taxAmount | ✅ | ✅ |
quantityReceived | ✅ | ✅ |
customFields | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
PurchaseOrderId | ✅ | ❌ |
PurchaseOrder.number | ✅ | ✅ |
PurchaseOrder.status | ✅ | ✅ |
PurchaseOrder.VendorId | ✅ | ❌ |
PurchaseOrder.LocationId | ✅ | ❌ |
PurchaseOrder.ICLocationId | ✅ | ❌ |
PurchaseOrder.WarehouseId | ✅ | ❌ |
PurchaseOrder.createdAt | ✅ | ✅ |
PurchaseOrder.updatedAt | ✅ | ✅ |
ItemId | ✅ | ❌ |
SalesOrderId | ✅ | ❌ |
CostCenterId | ✅ | ❌ |
JobId | ✅ | ❌ |
ProductId | ✅ | ❌ |
TaxCodeId | ✅ | ❌ |
Custom1Id | ✅ | ❌ |
Custom2Id | ✅ | ❌ |
Custom3Id | ✅ | ❌ |
Item.name | ❌ | ✅ |
Item.salePrice | ❌ | ✅ |
Item.purchasePrice | ❌ | ✅ |
Vendor.name | ❌ | ✅ |
SalesOrder.number | ❌ | ✅ |
Location.name | ❌ | ✅ |
ICLocation.name | ❌ | ✅ |
Warehouse.name | ❌ | ✅ |
CostCenter.id | ❌ | ✅ |
Product.id | ❌ | ✅ |
Job.number | ❌ | ✅ |
TaxCode.code | ❌ | ✅ |
id required | string PurchaseOrder._id |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "idx:ASC" Order to return results in. ex "date:desc" |
receivableOnly | boolean Default: false Set this to true to only return lines that can be received Criteria for receivable lines is as under:
Setting this to false will return all lines |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "idx": "string",
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "quantityReceived": "string",
- "customFields": { },
- "total": "string",
- "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string",
- "status": "string",
- "VendorId": 0,
- "LocationId": 0,
- "ICLocationId": 0,
- "WarehouseId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "ItemId": 0,
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string",
- "salePrice": "string",
- "purchasePrice": "string"
}, - "Vendor": {
- "name": "string",
- "id": "string"
}, - "SalesOrderId": 0,
- "SalesOrder": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocation": {
- "id": "string",
- "name": "string"
}, - "Warehouse": {
- "name": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string",
- "name": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string",
- "name": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string",
- "name": "string"
}, - "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string",
- "name": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string",
- "name": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
{- "count": "string",
- "estimate": true
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
receivableOnly | boolean Default: false Set this to true to only return lines that can be received Criteria for receivable lines is as under:
Setting this to false will return all lines |
{- "count": "string",
- "estimate": true
}
Creates a new Purchase Order Line Item
id required | string Purchase Order._id |
JSON body to create new Purchase Order Line Item
If an Item is passed, then this line will be considered an "item" type line,
Otherwise it is a "description" type line, which requires
Tax Logic
amount required | string <number> Must be > 0 |
quantity required | string <number> Must be > 0 |
idx | number |
externalId | string |
description | string Required if ItemId is not set |
customFields | object Default: {} Key -> Value hash of custom fields, must be defined via the UI to show up in the UI |
taxAmount | string <number> |
TaxCodeId | integer Ref: TaxCode._id |
object | |
ItemId | integer "Ref: Item._id" If the reference Item has type 'direct', then SalesOrderId or SOLineItemId is required |
object | |
SalesOrderId | integer "Ref: SalesOrder._id"
|
SOLineItemId | integer "Ref: SOLineItem._id"
|
CostCenterId | integer Ref: Cost Center._id |
object | |
JobId | integer Ref: Job._id |
object | |
ProductId | integer Ref: Product._id |
object | |
Custom1Id | integer Ref: Custom1._id |
object | |
Custom2Id | integer Ref: Custom2._id |
object | |
Custom3Id | integer Ref: Custom3._id |
object |
{- "idx": 0,
- "externalId": "string",
- "description": "string",
- "customFields": { },
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "SalesOrderId": 0,
- "SOLineItemId": 0,
- "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}
}
{- "_id": 0,
- "idx": 0,
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "quantityReceived": "string",
- "customFields": { },
- "taxAmount": "string",
- "TaxCodeId": 0,
- "SalesOrderId": 0,
- "ItemId": 0,
- "CostCenterId": 0,
- "JobId": 0,
- "ProductId": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Delete one Purchase Order
Can only delete purchase orders in "created" status.
Can not delete purchase orders with linked bill or if any lines have linked stock adjustments.
If there are any direct purchase lines that have a linked Sales order line
id required | string PurchaseOrder id |
Get one Purchase Order
id required | string Purchase Order._id |
{- "_id": 0,
- "externalId": "string",
- "number": "string",
- "description": "string",
- "issueDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "status": "created",
- "amount": "string",
- "currency": "string",
- "notes": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "customFields": { },
- "TemplateId": 0,
- "LocationId": 0,
- "WarehouseId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "VendorId": 0,
- "Vendor": {
- "id": "string",
- "name": "string",
- "email": "string"
}, - "InventoryReceivingAccountId": 0,
- "InventoryReceivingAccount": {
- "number": "string",
- "name": "string"
}, - "ShippingAddressId": 0,
- "ShippingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "BillingAddressId": 0,
- "BillingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Warehouse": {
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "POLineItems": [
- {
- "_id": 0,
- "idx": 0,
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "quantityReceived": "string",
- "partNumber": "string",
- "customFields": { },
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "SalesOrderId": 0,
- "SalesOrder": {
- "number": "string"
}, - "ShipmentReceiptLines": [
- {
- "quantityReceived": "string",
- "WarehouseId": 0,
- "status": "received",
- "amount": "string"
}
], - "ItemId": 0,
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string",
- "name": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string",
- "name": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string",
- "name": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string",
- "name": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string",
- "name": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Updates a Purchase Order
id required | string Purchase Order._id |
JSON body to update a Purchase Order
Only POs in "created" or "partiallyFulfilled" status can be updated.
If updating the InventoryReceivingAccountId you must choose an active account.
ICLocationId and LocationId cannot be the same.
externalId | string |
description | string |
notes | string |
issueDate | string <date> |
deliveryDate | string <date> |
currency | string <ISO4217 3 Char Code> Ref: Currency.code - cannot use custom |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
TemplateId | integer Default: "Template with name 'Default' and format = 'pdf'" Ref: Template._id |
customFields | object Key -> Value hash of custom fields, must be defined via the UI to show up in the UI |
LocationId | integer Ref: Location._id |
object | |
ICLocationId | integer Ref: Location._id |
object | |
VendorId | integer Ref: Vendor._id |
object | |
WarehouseId | integer Ref: Warehouse._id |
object | |
InventoryReceivingAccountId | integer Default: "Ref: Settings.defaultInventoryAccrualId" Must be an active acccount "Ref: LedgerAccount._id" |
object | |
ShippingAddressId | integer Ref: Address._id |
BillingAddressId | integer Ref: Address._id |
{- "externalId": "string",
- "description": "string",
- "notes": "string",
- "issueDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "currency": "string",
- "TemplateId": "Template with name 'Default' and format = 'pdf'",
- "customFields": { },
- "LocationId": 0,
- "Location": {
- "id": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string"
}, - "VendorId": 0,
- "Vendor": {
- "name": "string"
}, - "WarehouseId": 0,
- "Warehouse": {
- "name": "string"
}, - "InventoryReceivingAccountId": "Ref: Settings.defaultInventoryAccrualId",
- "InventoryReceivingAccount": {
- "number": "string"
}, - "ShippingAddressId": 0,
- "BillingAddressId": 0
}
{- "_id": 0,
- "externalId": "string",
- "status": "string",
- "number": "string",
- "amount": "string",
- "description": "string",
- "notes": "string",
- "issueDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "currency": "string",
- "customFields": { },
- "TemplateId": 0,
- "LocationId": 0,
- "ICLocationId": 0,
- "VendorId": 0,
- "WarehouseId": 0,
- "InventoryReceivingAccountId": 0,
- "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Delete one Purchase Order line
Can only delete lines from purchase orders with status "created"/"issued"/"partiallyFulfilled".
Can not delete lines with linked stock adjustments.
If the line to be deleted has a linked Sales order line
Purchase order amount will reflect the changes.
id required | string POLineItem id |
Update a Purchase Order Line Item
id required | string POLineItem._id |
JSON body to update a Purchase Order Line Item
Can only update a line on an order with "created", "issued", "partiallyFulfilled" status
If a line has linked stock adjustments, you may only update "quantity"
Cannot update quantity to be less than quantityReceived
Quantity can be updated to zero, this indicates the line is "voided"
If an Item is passed, then this line will be considered an "item" type line
Otherwise it is a "description" type line, which requires
Tax Logic
amount required | string <number> Must be > 0 |
quantity required | string <number> Must be >= quantityReceived |
idx | number |
externalId | string |
description | string Required if ItemId is not set |
customFields | object Key -> Value hash of custom fields, must be defined via the UI to show up in the UI |
taxAmount | string <number> |
TaxCodeId | integer Ref: TaxCode._id |
object | |
ItemId | integer "Ref: Item._id" If the reference Item has type 'direct', then SalesOrderId or SOLineItemId is required or already set on the line |
object | |
SalesOrderId | integer "Ref: SalesOrder._id"
|
SOLineItemId | integer "Ref: SOLineItem._id"
|
CostCenterId | integer Ref: Cost Center._id |
object | |
JobId | integer Ref: Job._id |
object | |
ProductId | integer Ref: Product._id |
object | |
Custom1Id | integer Ref: Custom1._id |
object | |
Custom2Id | integer Ref: Custom2._id |
object | |
Custom3Id | integer Ref: Custom3._id |
object |
{- "idx": 0,
- "externalId": "string",
- "description": "string",
- "customFields": { },
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "SalesOrderId": 0,
- "SOLineItemId": 0,
- "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}
}
{- "_id": 0,
- "idx": 0,
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "quantityReceived": "string",
- "customFields": { },
- "taxAmount": "string",
- "TaxCodeId": 0,
- "SalesOrderId": 0,
- "ItemId": 0,
- "CostCenterId": 0,
- "JobId": 0,
- "ProductId": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Create new Recurring Job.
JSON body to create new Recurring Job
name required | string |
eventType required | string Enum: "RecurringJournal" "RecurringInvoice" "RecurringBill" |
eventQueue required | string Value: "recurring_doc" |
TemplateId required | integer Ref: Templates._id |
intervalType required | string Enum: "yearly" "monthly" "weekly" "daily" |
intervalAmount required | number |
startDate required | string <date-only> |
enabled | boolean Default: false |
description | string |
intervalDay | string Day to recur on |
endDate | string <date-only> |
{- "name": "string",
- "enabled": false,
- "description": "string",
- "eventType": "RecurringJournal",
- "eventQueue": "recurring_doc",
- "TemplateId": 0,
- "intervalType": "yearly",
- "intervalAmount": 0,
- "intervalDay": "string",
- "startDate": "string",
- "endDate": "string"
}
{- "name": "string",
- "enabled": false,
- "description": "string",
- "eventType": "RecurringJournal",
- "eventQueue": "recurring_doc",
- "TemplateId": 0,
- "intervalType": "yearly",
- "intervalAmount": 0,
- "intervalDay": "string",
- "startDate": "string",
- "endDate": "string"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
name | ✅ | ✅ |
enabled | ✅ | ✅ |
description | ✅ | ✅ |
eventType | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "name:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "name": "string",
- "enabled": false,
- "description": "string",
- "eventType": "RecurringJournal",
- "eventQueue": "recurring_doc",
- "TemplateId": 0,
- "intervalType": "yearly",
- "intervalAmount": 0,
- "intervalDay": "string",
- "startDate": "string",
- "endDate": "string"
}
]
}
Update One Recurring Job
id required | string Recurring Job Id |
JSON body containing key and values to update
enabled | boolean Default: false |
description | string |
intervalType | string Enum: "yearly" "monthly" "weekly" "daily" |
intervalAmount | number |
intervalDay | string Day to recur on |
startDate | string <date-only> |
endDate | string <date-only> |
{- "enabled": false,
- "description": "string",
- "intervalType": "yearly",
- "intervalAmount": 0,
- "intervalDay": "string",
- "startDate": "string",
- "endDate": "string"
}
{- "name": "string",
- "enabled": false,
- "description": "string",
- "eventType": "RecurringJournal",
- "eventQueue": "recurring_doc",
- "TemplateId": 0,
- "intervalType": "yearly",
- "intervalAmount": 0,
- "intervalDay": "string",
- "startDate": "string",
- "endDate": "string"
}
Accepts a Sales Order that has been issued
id required | string SalesOrder Id |
JSON body containing payload for accept
orderDate required | string <date> |
deliveryDate required | string <date> |
TemplateId required | integer Ref: Template._id |
{- "orderDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "TemplateId": 0
}
{- "_id": 0,
- "externalId": "string",
- "number": "string",
- "status": "order",
- "notes": "string",
- "quoteDate": "2019-08-24",
- "quoteExpiration": "2019-08-24",
- "orderDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "completeDate": "2019-08-24",
- "currency": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "externalRef": "string",
- "amount": "string",
- "customFields": [
- "string"
], - "TemplateId": 0,
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string",
- "email": "string"
}, - "ShippingAddressId": 0,
- "ShippingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "BillingAddressId": 0,
- "BillingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Get stock adjustments linked to a sales order
The parameters of this endpoint are the same as for Stock Adjustment Search
id required | string SalesOrder._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "ItemId": 0,
- "description": "string",
- "WarehouseId": 0,
- "locked": true,
- "transactionDate": "2019-08-24T14:15:22Z",
- "postedDate": "2019-08-24",
- "AdjustmentLedgerAccountId": 0,
- "JournalId": 0,
- "type": "fulfill",
- "TransferId": 0,
- "POLineItemId": 0,
- "SOLineItemId": 0,
- "PurchaseOrderId": 0,
- "SalesOrderId": 0,
- "ShipmentReceiptLineId": 0,
- "quantity": "string",
- "qtyPicked": "string",
- "qtyAvailable": "string",
- "currency": "string",
- "price": "string",
- "currencyRate": "string",
- "costBasis": "string",
- "AdjustmentLedgerAccount": {
- "name": "string",
- "number": "string"
}, - "Item": {
- "name": "string",
- "number": "string",
- "sku": "string"
}, - "Warehouse": {
- "name": "string"
}, - "PurchaseOrder": {
- "number": "string"
}, - "SalesOrder": {
- "number": "string"
}, - "Journal": {
- "number": 0
}, - "createdAt": "2019-08-24",
- "updatedAt": "2019-08-24"
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
number | ✅ | ✅ |
externalId | ✅ | ✅ |
status | ✅ | ✅ |
CustomerId | ✅ | ❌ |
reference | ✅ | ✅ |
externalRef | ✅ | ✅ |
LocationId | ✅ | ❌ |
quoteDate | ✅ | ✅ |
quoteExpiration | ✅ | ✅ |
orderDate | ✅ | ✅ |
deliveryDate | ✅ | ✅ |
completeDate | ✅ | ✅ |
amount | ✅ | ✅ |
customFields | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "number:ASC" Order to return results in. ex "date:desc" |
status | string Enum: "quote" "pending" "rejected" "order" "partiallyFulfilled" "fulfilled" "voided" "completed" A CSV string containing the statuses you'd like to filter for joined with commas (No spaces). ex: 'quote,pending,order'. This query param is optional.
|
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "externalId": "string",
- "number": "string",
- "status": "quote",
- "notes": "string",
- "quoteDate": "2019-08-24",
- "quoteExpiration": "2019-08-24",
- "orderDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "completeDate": "2019-08-24",
- "currency": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "externalRef": "string",
- "amount": "string",
- "customFields": { },
- "TemplateId": 0,
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string",
- "email": "string"
}, - "ShippingAddressId": 0,
- "ShippingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "BillingAddressId": 0,
- "BillingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Creates a new Sales Order
JSON body to create new Sales Order
One of [Location.id, LocationId]
is Required
LocationId required | integer Ref: Location._id |
currency required | string <ISO4217 3 Char Code> Ref: Currency.code - cannot use custom |
externalId | string |
status | string Default: "order" Enum: "quote" "order" |
notes | string |
quoteDate | string <date> |
quoteExpiration | string <date> |
orderDate | string <date> |
deliveryDate | string <date> |
object | |
ICLocationId | integer Ref: Location._id |
object | |
CustomerId | integer Ref: Customer._id |
object | |
ShippingAddressId | integer Ref: Address._id |
BillingAddressId | integer Ref: Address._id |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
TemplateId | integer Default: "Template with name 'Default' and format = 'pdf'" Ref: Template._id |
reference | string |
customFields | object Default: {} Key -> Value hash of custom fields, must be defined via the UI to show up in the UI |
externalRef | string |
Array of objects If an Item is passed, then this line will be considered an "item" type line, Otherwise it is a "description" type line, which requires
Tax Logic
|
{- "externalId": "string",
- "status": "quote",
- "notes": "string",
- "quoteDate": "2019-08-24",
- "quoteExpiration": "2019-08-24",
- "orderDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "currency": "string",
- "LocationId": 0,
- "Location": {
- "id": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string"
}, - "CustomerId": 0,
- "Customer": {
- "name": "string"
}, - "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "TemplateId": "Template with name 'Default' and format = 'pdf'",
- "reference": "string",
- "customFields": { },
- "externalRef": "string",
- "SOLineItems": [
- {
- "idx": 0,
- "externalId": "string",
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}
}
]
}
{- "_id": 0,
- "externalId": "string",
- "status": "string",
- "number": "string",
- "quoteDate": "2019-08-24",
- "quoteExpiration": "2019-08-24",
- "orderDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "notes": "string",
- "reference": "string",
- "externalRef": "string",
- "currency": "string",
- "amount": "string",
- "customFields": { },
- "LocationId": 0,
- "ICLocationId": 0,
- "CustomerId": 0,
- "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "TemplateId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
SalesOrder.number | ✅ | ✅ |
SalesOrder.status | ✅ | ❌ |
SalesOrder.reference | ✅ | ❌ |
SalesOrder.externalRef | ✅ | ❌ |
SalesOrder.quoteDate | ✅ | ✅ |
SalesOrder.orderDate | ✅ | ✅ |
SalesOrder.completeDate | ✅ | ✅ |
SalesOrder.createdAt | ✅ | ✅ |
SalesOrder.updatedAt | ✅ | ✅ |
SalesOrder.CustomerId | ✅ | ❌ |
SalesOrder.LocationId | ✅ | ❌ |
Customer.name | ❌ | ✅ |
Location.id | ❌ | ✅ |
TaxCode.code | ❌ | ✅ |
PurchaseOrder.number | ❌ | ✅ |
description | ✅ | ❌ |
externalId | ✅ | ❌ |
amount | ✅ | ✅ |
quantity | ✅ | ✅ |
quantityFulFilled | ✅ | ✅ |
ItemId | ✅ | ❌ |
Item.name | ❌ | ✅ |
Item.salePrice | ❌ | ✅ |
Item.purchasePrice | ❌ | ✅ |
CostCenterId | ✅ | ❌ |
ProductId | ✅ | ❌ |
JobId | ✅ | ❌ |
Custom1Id | ✅ | ❌ |
Custom2Id | ✅ | ❌ |
Custom3Id | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "SalesOrder.number:ASC" Order to return results in. ex "date:desc" |
type | string Enum: "fulfill" "unfulfill" Use this to control whether to return fulfillable/unfulfillable lines Set this to 'fulfill' to return lines that can be fulfilled, criteria for fulfillable lines as under:
Set this to 'unfulfill' to return lines that can be unfulfulleed, criteria as under:
Not setting this will return all lines |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "idx": 0,
- "externalId": "string",
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "quantityFulFilled": "string",
- "taxAmount": "string",
- "SalesOrder": {
- "number": "string",
- "status": "quote",
- "reference": "string",
- "externalRef": "string",
- "quoteDate": "2019-08-24",
- "orderDate": "2019-08-24",
- "completeDate": "2019-08-24",
- "createdAt": "2019-08-24",
- "updatedAt": "2019-08-24"
}, - "JournalId": 0,
- "Journal": {
- "number": 0
}, - "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "POLineItemId": 0,
- "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string"
}, - "ItemId": 0,
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string",
- "salePrice": "string",
- "purchasePrice": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string",
- "name": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string",
- "name": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string",
- "name": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string",
- "name": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string",
- "name": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
The same filters as Line Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
type | string Enum: "fulfill" "unfulfill" Use this to control whether to count fulfillable/unfulfillable lines Set this to 'fulfill' to count lines that can be fulfilled, criteria for fulfillable lines as under:
Set this to 'unfulfill' to count lines that can be unfulfulleed, criteria as under:
Not setting this will count all lines |
{- "count": "string",
- "estimate": true
}
Complete One Sales Order
A journal entry will be posted for each sales order line that has fulfillments.
id required | string SalesOrder Id |
JSON body containing key and values to update
Status must be "partiallyFulfilled" or "fulfilled" to complete
Cannot complete sales order if any lines are linked to a purchase order line that is not completely fulfilled.
completeDate | string <date> Default: "NOW" Cannot be in the future Must be after all of the stock adjustments linked to this sales order |
{- "completeDate": "NOW"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
{- "count": "string",
- "estimate": true
}
Creates a new Sales Order Line Item
id required | string SOLineItem Id |
JSON body to create new Sales Order Line Item
If an Item is passed, then this line will be considered an "item" type line,
Otherwise it is a "description" type line, which requires
Tax Logic
amount required | string <number> Must be > 0 |
quantity required | string <number> Must be > 0 |
idx | number |
externalId | string |
description | string Required if ItemId is not set |
taxAmount | string <number> |
TaxCodeId | integer Ref: TaxCode._id |
object | |
ItemId | integer Ref: Item._id |
object | |
CostCenterId | integer Ref: Cost Center._id |
object | |
JobId | integer Ref: Job._id |
object | |
ProductId | integer Ref: Product._id |
object | |
Custom1Id | integer Ref: Custom1._id |
object | |
Custom2Id | integer Ref: Custom2._id |
object | |
Custom3Id | integer Ref: Custom3._id |
object |
{- "idx": 0,
- "externalId": "string",
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}
}
{- "_id": 0,
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "quantityFulFilled": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "SalesOrderId": 0,
- "ItemId": 0,
- "CostCenterId": 0,
- "JobId": 0,
- "ProductId": 0,
- "JournalId": 0,
- "idx": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0,
- "TaxCodeId": 0,
- "taxAmount": "string",
- "POLineItemId": 0,
- "externalId": "string"
}
Get one Sales Order
id required | string Sales Order._id |
{- "_id": 0,
- "externalId": "string",
- "number": "string",
- "status": "quote",
- "notes": "string",
- "quoteDate": "2019-08-24",
- "quoteExpiration": "2019-08-24",
- "orderDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "completeDate": "2019-08-24",
- "currency": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "externalRef": "string",
- "amount": "string",
- "customFields": [
- "string"
], - "TemplateId": 0,
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string",
- "email": "string"
}, - "ShippingAddressId": 0,
- "ShippingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "BillingAddressId": 0,
- "BillingAddress": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Template": {
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "SOLineItems": [
- {
- "_id": 0,
- "idx": 0,
- "externalId": "string",
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "quantityFulFilled": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "POLineItemId": 0,
- "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string"
}, - "ItemId": 0,
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string",
- "name": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string",
- "name": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string",
- "name": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string",
- "name": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string",
- "name": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Update One Sales Order
id required | string SalesOrder Id |
JSON body containing key and values to update
Only sales orders in quote or order status can be updated.
externalId | string |
notes | string |
quoteDate | string <date> |
quoteExpiration | string <date> |
orderDate | string <date> |
deliveryDate | string <date> |
currency | string <ISO4217 3 Char Code> Ref: Currency.code - cannot use custom |
LocationId | integer Ref: Location._id |
object | |
ICLocationId | integer Ref: Location._id |
object | |
CustomerId | integer Ref: Customer._id |
object | |
ShippingAddressId | integer Ref: Address._id |
BillingAddressId | integer Ref: Address._id |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
TemplateId | integer Default: "Template with name 'Default' and format = 'pdf'" Ref: Template._id |
reference | string |
customFields | object Default: {} Key -> Value hash of custom fields, must be defined via the UI to show up in the UI |
externalRef | string |
{- "externalId": "string",
- "notes": "string",
- "quoteDate": "2019-08-24",
- "quoteExpiration": "2019-08-24",
- "orderDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "currency": "string",
- "LocationId": 0,
- "Location": {
- "id": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string"
}, - "CustomerId": 0,
- "Customer": {
- "name": "string"
}, - "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "TemplateId": "Template with name 'Default' and format = 'pdf'",
- "reference": "string",
- "customFields": { },
- "externalRef": "string"
}
{- "_id": 0,
- "externalId": "string",
- "status": "string",
- "number": "string",
- "quoteDate": "2019-08-24",
- "quoteExpiration": "2019-08-24",
- "orderDate": "2019-08-24",
- "deliveryDate": "2019-08-24",
- "notes": "string",
- "reference": "string",
- "externalRef": "string",
- "currency": "string",
- "customFields": { },
- "LocationId": 0,
- "ICLocationId": 0,
- "CustomerId": 0,
- "ShippingAddressId": 0,
- "BillingAddressId": 0,
- "TemplateId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Deletes a Sales Order Line
Can only delete a line from an order status of "quote", "order", or "partiallyFulfilled"
Cannot delete a line with linked stock adjustments
Cannot delete a line with a linked POLineItemId
id required | string SOLineItem._id |
Update a Sales Order Line
id required | string SOLineItem._id |
idx | number |
externalId | string |
description | string Required if ItemId is not set |
amount | string <number> |
quantity | string <number> |
taxAmount | string <number> |
TaxCodeId | integer Ref: TaxCode._id |
object | |
ItemId | integer Ref: Item._id |
object | |
CostCenterId | integer Ref: Cost Center._id |
object | |
JobId | integer Ref: Job._id |
object | |
ProductId | integer Ref: Product._id |
object | |
Custom1Id | integer Ref: Custom1._id |
object | |
Custom2Id | integer Ref: Custom2._id |
object | |
Custom3Id | integer Ref: Custom3._id |
object |
{- "idx": 0,
- "externalId": "string",
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "taxAmount": "string",
- "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "ItemId": 0,
- "Item": {
- "number": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string"
}, - "JobId": 0,
- "Job": {
- "id": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string"
}
}
{- "_id": 0,
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "quantityFulFilled": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "SalesOrderId": 0,
- "ItemId": 0,
- "CostCenterId": 0,
- "JobId": 0,
- "ProductId": 0,
- "JournalId": 0,
- "idx": 0,
- "Custom1Id": 0,
- "Custom2Id": 0,
- "Custom3Id": 0,
- "TaxCodeId": 0,
- "taxAmount": "string",
- "POLineItemId": 0,
- "externalId": "string"
}
Fulfill a line item on a Sales Order
id required | string SOLineItem Id |
JSON body to fulfill a line item on a Sales Order
Sales Order must be in status of 'order' or 'partiallyFulfilled' Line item must not be linked to a POLineItem
quantity required | string <number> |
WarehouseId required | number Ref: Warehouses._id |
date | string <date-time> Default: "NOW" |
dontRunCostBasis | boolean Default: false Don't run cost basis on fulfillment |
{- "quantity": "string",
- "date": "NOW",
- "WarehouseId": 0,
- "dontRunCostBasis": false
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
SalesOrder.number | ✅ | ✅ |
SalesOrder.status | ✅ | ❌ |
SalesOrder.reference | ✅ | ❌ |
SalesOrder.externalRef | ✅ | ❌ |
SalesOrder.quoteDate | ✅ | ✅ |
SalesOrder.orderDate | ✅ | ✅ |
SalesOrder.completeDate | ✅ | ✅ |
SalesOrder.createdAt | ✅ | ✅ |
SalesOrder.updatedAt | ✅ | ✅ |
SalesOrder.CustomerId | ✅ | ❌ |
SalesOrder.LocationId | ✅ | ❌ |
Customer.name | ❌ | ✅ |
Location.id | ❌ | ✅ |
TaxCode.code | ❌ | ✅ |
PurchaseOrder.number | ❌ | ✅ |
description | ✅ | ❌ |
externalId | ✅ | ❌ |
amount | ✅ | ✅ |
quantity | ✅ | ✅ |
quantityFulFilled | ✅ | ✅ |
ItemId | ✅ | ❌ |
Item.name | ❌ | ✅ |
Item.salePrice | ❌ | ✅ |
Item.purchasePrice | ❌ | ✅ |
CostCenterId | ✅ | ❌ |
ProductId | ✅ | ❌ |
JobId | ✅ | ❌ |
Custom1Id | ✅ | ❌ |
Custom2Id | ✅ | ❌ |
Custom3Id | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
id required | string SalesOrder Id |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "SalesOrder.number:ASC" Order to return results in. ex "date:desc" |
type | string Enum: "fulfill" "unfulfill" Use this to control whether to return fulfillable/unfulfillable lines Set this to 'fulfill' to return lines that can be fulfilled, criteria for fulfillable lines as under:
Set this to 'unfulfill' to return lines that can be unfulfulleed, criteria as under:
Not setting this will return all lines |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "idx": 0,
- "externalId": "string",
- "description": "string",
- "amount": "string",
- "quantity": "string",
- "quantityFulFilled": "string",
- "taxAmount": "string",
- "SalesOrder": {
- "number": "string",
- "status": "quote",
- "reference": "string",
- "externalRef": "string",
- "quoteDate": "2019-08-24",
- "orderDate": "2019-08-24",
- "completeDate": "2019-08-24",
- "createdAt": "2019-08-24",
- "updatedAt": "2019-08-24"
}, - "JournalId": 0,
- "Journal": {
- "number": 0
}, - "CustomerId": 0,
- "Customer": {
- "id": "string",
- "name": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "TaxCodeId": 0,
- "TaxCode": {
- "code": "string"
}, - "POLineItemId": 0,
- "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string"
}, - "ItemId": 0,
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string",
- "salePrice": "string",
- "purchasePrice": "string"
}, - "CostCenterId": 0,
- "CostCenter": {
- "id": "string",
- "name": "string"
}, - "JobId": 0,
- "Job": {
- "number": "string",
- "name": "string"
}, - "ProductId": 0,
- "Product": {
- "id": "string",
- "name": "string"
}, - "Custom1Id": 0,
- "Custom1": {
- "id": "string",
- "name": "string"
}, - "Custom2Id": 0,
- "Custom2": {
- "id": "string",
- "name": "string"
}, - "Custom3Id": 0,
- "Custom3": {
- "id": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
The same filters as Line Search can be used here.
id required | string SalesOrder Id |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
type | string Enum: "fulfill" "unfulfill" Use this to control whether to count fulfillable/unfulfillable lines Set this to 'fulfill' to count lines that can be fulfilled, criteria for fulfillable lines as under:
Set this to 'unfulfill' to count lines that can be unfulfulleed, criteria as under:
Not setting this will count all lines |
{- "count": "string",
- "estimate": true
}
Unfulfill a line item on a Sales Order
If inventory cost-basis is running, this will error out
Sales Order must be in 'partiallyFulfilled' or 'fulfilled' status
If the Return Account is specified for direct return, a 'return' stock adjustment with that account will also be added
Line quantity fulfilled becomes the quantity after unfulfillment of a direct purchase line.
id required | string Sales Order Line _id |
JSON body to unfulfill a line item on a Sales Order
Date for unfulfillment must be ahead of the latest fulfillment transaction date
One of [Warehouse.name, WarehouseId]
is Required
One of [ReturnAccount.number, ReturnAccountId]
is also needed for direct purchase lines to create a return stock adjustment
quantity required | string <number> |
WarehouseId required | number Ref: Warehouses._id |
date | string <date-time> Default: "NOW" |
object | |
runCostBasis | boolean Default: false Run cost basis on fulfillment |
ReturnAccountId | number Ref: LedgerAccount._id |
object |
{- "quantity": "string",
- "date": "NOW",
- "WarehouseId": 0,
- "Warehouse": {
- "name": "string"
}, - "runCostBasis": false,
- "ReturnAccountId": 0,
- "ReturnAccount": {
- "number": "string"
}
}
{- "ccInvoice": true,
- "emailOnInvoiceIssued": true,
- "emailOnSalesQuoteIssued": true,
- "emailOnPurchaseOrderIssued": true,
- "companyEIN": "string",
- "dateFormat": "MM/DD/YYYY",
- "useLocationOnDocuments": true,
- "displayItem": "description",
- "postCRJournal": true,
- "confirmDelete": true,
- "postVCJournal": true,
- "showProducts": true,
- "currencyAsCodeUI": true,
- "currencyAsCodePDF": true,
- "intercompanyEliminations": true,
- "hideLocationFromFinancials": true,
- "intercompanyEliminations2": true,
- "defaultLineItemType": "description",
- "showCostCenters": true,
- "showJobs": true,
- "autoApproveARPayments": true,
- "autoApproveAPPayments": true,
- "emailOnARCreditIssued": true,
- "hideTaxInvoice": true,
- "hideTaxBill": true,
- "hideTaxPO": true,
- "hideTaxSO": true,
- "pdfDateFormat": "MM/DD/YYYY",
- "wipSalesOrders": true,
- "defaultUpdateItemPriceReceive": true,
- "splitPartialReceives": true,
- "draftBillPayments": true,
- "pdfFormats": { },
- "timezone": "string",
- "custom1_enabled": true,
- "custom1_name": "string",
- "custom1_invoice": true,
- "custom1_bill": true,
- "custom1_po": true,
- "custom1_so": true,
- "custom2_enabled": true,
- "custom2_name": "string",
- "custom2_invoice": true,
- "custom2_bill": true,
- "custom2_po": true,
- "custom2_so": true,
- "custom3_enabled": true,
- "custom3_name": "string",
- "custom3_invoice": true,
- "custom3_bill": true,
- "custom3_po": true,
- "custom3_so": true,
- "invoiceAmountPrecision": "string",
- "billAmountPrecision": "string",
- "poAmountPrecision": "string",
- "soAmountPrecision": "string",
- "cryptoPricePrecision": "string",
- "InvoiceEmailTemplateId": 0,
- "POEmailTemplateId": 0,
- "SOEmailTemplateId": 0,
- "ARCreditEmailTemplateId": 0,
- "defaultWIPId": 0,
- "defaultSalesTaxId": 0,
- "defaultOtherComprehensiveIncomeId": 0,
- "defaultAccumulatedOtherComprehensiveIncomeId": 0,
- "defaultRetainedEarningsId": 0,
- "defaultBillPaymentId": 0,
- "defaultAPICPayableId": 0,
- "defaultAPICReceivableId": 0,
- "defaultARICPayableId": 0,
- "defaultARICReceivableId": 0,
- "defaultUnappliedCreditId": 0,
- "defaultUnappliedCashId": 0,
- "defaultAccountsReceivableId": 0,
- "defaultAccountsPayableId": 0,
- "defaultCashId": 0,
- "defaultInventoryAccrualId": 0,
- "defaultItemInventoryAccrualId": 0,
- "defaultItemInvoiceAccountId": 0,
- "defaultItemInventoryAssetId": 0,
- "defaultItemCOGSId": 0,
- "defaultRevId": 0,
- "defaultABDId": 0,
- "inventoryCostingMethod": "fifo",
- "cryptoHomeCurrency": "string",
- "cryptoCostingMethod": "fifo",
- "immaterialCostBasisErrorLedgerAccountId": 0,
- "immaterialCostBasisErrorReference": "string",
- "immaterialCostBasisErrorThreshold": "string",
- "currencySupport": true,
- "billingLimits": { },
- "customCurrency": true,
- "cryptoImpairment": true,
- "brightpearl": true,
- "dashboards": true,
- "SandBox": true,
- "reconciliationsv2": true,
- "plaidType": "development"
}
Update Settings
JSON body containing key and values to update
Default Ledger accounts must be active
ccInvoice | boolean |
costingMethod | string |
emailOnInvoiceIssued | boolean |
emailOnSalesQuoteIssued | boolean |
emailOnPurchaseOrderIssued | boolean |
companyEIN | string |
dateFormat | string Enum: "MM/DD/YYYY" "DD/MM/YYYY" "MM-DD-YYYY" "DD-MM-YYYY" "YYYY-MM-DD" |
useLocationOnDocuments | boolean |
displayItem | string Enum: "description" "sku" "name" |
postCRJournal | boolean |
confirmDelete | boolean |
postVCJournal | boolean |
showProducts | boolean |
currencyAsCodeUI | boolean |
currencyAsCodePDF | boolean |
intercompanyEliminations | boolean |
hideLocationFromFinancials | boolean |
intercompanyEliminations2 | boolean |
defaultLineItemType | string Enum: "description" "item" |
showCostCenters | boolean |
showJobs | boolean |
autoApproveARPayments | boolean |
autoApproveAPPayments | boolean |
emailOnARCreditIssued | boolean |
hideTaxInvoice | boolean |
hideTaxBill | boolean |
hideTaxPO | boolean |
hideTaxSO | boolean |
pdfDateFormat | string Default: "YYYY-MM-DD" Enum: "MM/DD/YYYY" "DD/MM/YYYY" "MM-DD-YYYY" "DD-MM-YYYY" "YYYY-MM-DD" |
wipSalesOrders | boolean |
defaultUpdateItemPriceReceive | boolean |
splitPartialReceives | boolean |
draftBillPayments | boolean |
timezone | string The timezone of the company. Example: "America/New_York" Used for timestamps in the UI, and for converstions of timestamps into Accounting Dates. |
custom1_enabled | boolean |
custom1_name | string |
custom1_invoice | boolean |
custom1_bill | boolean |
custom1_po | boolean |
custom1_so | boolean |
custom2_enabled | boolean |
custom2_name | string |
custom2_invoice | boolean |
custom2_bill | boolean |
custom2_po | boolean |
custom2_so | boolean |
custom3_enabled | boolean |
custom3_name | string |
custom3_invoice | boolean |
custom3_bill | boolean |
custom3_po | boolean |
custom3_so | boolean |
invoiceAmountPrecision | string <number> min 0, max 10 |
billAmountPrecision | string <number> min 0, max 10 |
poAmountPrecision | string <number> min 0, max 10 |
soAmountPrecision | string <number> min 0, max 10 |
cryptoPricePrecision | string <number> min 0, max 10 |
InvoiceEmailTemplateId | number Ref: Template._id |
POEmailTemplateId | number Ref: Template._id |
SOEmailTemplateId | number Ref: Template._id |
ARCreditEmailTemplateId | number Ref: Template._id |
defaultWIPId | number Ref: LedgerAccount._id |
defaultSalesTaxId | number Ref: LedgerAccount._id |
defaultOtherComprehensiveIncomeId | number Ref: LedgerAccount._id Only accounts of type 'Equity' are allowed here |
defaultAccumulatedOtherComprehensiveIncomeId | number Ref: LedgerAccount._id Only accounts of type 'Equity' are allowed here |
defaultRetainedEarningsId | number Ref: LedgerAccount._id Only accounts of type 'Equity' are allowed here |
defaultBillPaymentId | number Ref: LedgerAccount._id |
defaultAPICPayableId | number Ref: LedgerAccount._id |
defaultAPICReceivableId | number Ref: LedgerAccount._id |
defaultARICPayableId | number Ref: LedgerAccount._id |
defaultARICReceivableId | number Ref: LedgerAccount._id |
defaultUnappliedCreditId | number Ref: LedgerAccount._id |
defaultUnappliedCashId | number Ref: LedgerAccount._id |
defaultAccountsReceivableId | number Ref: LedgerAccount._id |
defaultAccountsPayableId | number Ref: LedgerAccount._id |
defaultCashId | number Ref: LedgerAccount._id |
defaultInventoryAccrualId | number Ref: LedgerAccount._id |
defaultItemInventoryAccrualId | number Ref: LedgerAccount._id |
defaultItemInvoiceAccountId | number Ref: LedgerAccount._id |
defaultItemInventoryAssetId | number Ref: LedgerAccount._id |
defaultItemCOGSId | number Ref: LedgerAccount._id |
defaultRevId | number Ref: LedgerAccount._id |
defaultABDId | number Ref: LedgerAccount._id |
inventoryCostingMethod | string Default: "fifo" Enum: "fifo" "avg" Cannot be updated if there are any existing stock adjustments |
cryptoHomeCurrency | string "Ref: Currency.code" Cannot be updated if there are any existing crypto transactions |
immaterialCostBasisErrorLedgerAccountId | number Ref: LedgerAccount._id |
immaterialCostBasisErrorReference | string |
immaterialCostBasisErrorThreshold | string <number> |
{- "ccInvoice": true,
- "costingMethod": "string",
- "emailOnInvoiceIssued": true,
- "emailOnSalesQuoteIssued": true,
- "emailOnPurchaseOrderIssued": true,
- "companyEIN": "string",
- "dateFormat": "MM/DD/YYYY",
- "useLocationOnDocuments": true,
- "displayItem": "description",
- "postCRJournal": true,
- "confirmDelete": true,
- "postVCJournal": true,
- "showProducts": true,
- "currencyAsCodeUI": true,
- "currencyAsCodePDF": true,
- "intercompanyEliminations": true,
- "hideLocationFromFinancials": true,
- "intercompanyEliminations2": true,
- "defaultLineItemType": "description",
- "showCostCenters": true,
- "showJobs": true,
- "autoApproveARPayments": true,
- "autoApproveAPPayments": true,
- "emailOnARCreditIssued": true,
- "hideTaxInvoice": true,
- "hideTaxBill": true,
- "hideTaxPO": true,
- "hideTaxSO": true,
- "pdfDateFormat": "MM/DD/YYYY",
- "wipSalesOrders": true,
- "defaultUpdateItemPriceReceive": true,
- "splitPartialReceives": true,
- "draftBillPayments": true,
- "timezone": "string",
- "custom1_enabled": true,
- "custom1_name": "string",
- "custom1_invoice": true,
- "custom1_bill": true,
- "custom1_po": true,
- "custom1_so": true,
- "custom2_enabled": true,
- "custom2_name": "string",
- "custom2_invoice": true,
- "custom2_bill": true,
- "custom2_po": true,
- "custom2_so": true,
- "custom3_enabled": true,
- "custom3_name": "string",
- "custom3_invoice": true,
- "custom3_bill": true,
- "custom3_po": true,
- "custom3_so": true,
- "invoiceAmountPrecision": "string",
- "billAmountPrecision": "string",
- "poAmountPrecision": "string",
- "soAmountPrecision": "string",
- "cryptoPricePrecision": "string",
- "InvoiceEmailTemplateId": 0,
- "POEmailTemplateId": 0,
- "SOEmailTemplateId": 0,
- "ARCreditEmailTemplateId": 0,
- "defaultWIPId": 0,
- "defaultSalesTaxId": 0,
- "defaultOtherComprehensiveIncomeId": 0,
- "defaultAccumulatedOtherComprehensiveIncomeId": 0,
- "defaultRetainedEarningsId": 0,
- "defaultBillPaymentId": 0,
- "defaultAPICPayableId": 0,
- "defaultAPICReceivableId": 0,
- "defaultARICPayableId": 0,
- "defaultARICReceivableId": 0,
- "defaultUnappliedCreditId": 0,
- "defaultUnappliedCashId": 0,
- "defaultAccountsReceivableId": 0,
- "defaultAccountsPayableId": 0,
- "defaultCashId": 0,
- "defaultInventoryAccrualId": 0,
- "defaultItemInventoryAccrualId": 0,
- "defaultItemInvoiceAccountId": 0,
- "defaultItemInventoryAssetId": 0,
- "defaultItemCOGSId": 0,
- "defaultRevId": 0,
- "defaultABDId": 0,
- "inventoryCostingMethod": "fifo",
- "cryptoHomeCurrency": "string",
- "immaterialCostBasisErrorLedgerAccountId": 0,
- "immaterialCostBasisErrorReference": "string",
- "immaterialCostBasisErrorThreshold": "string"
}
Update Sequence numbers
JSON body containing key and values to update
type required | string Enum: "invoice" "bill" "po" "so" |
number required | number [ 2 .. 999999998 ] Must be greater than current highest document number |
{- "type": "invoice",
- "number": 2
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
dateReceived | ✅ | ✅ |
postedDate | ✅ | ✅ |
reference | ✅ | ❌ |
VendorId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "_id:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "dateReceived": "2019-08-24T14:15:22Z",
- "postedDate": "2019-08-24",
- "reference": "string",
- "VendorId": 0,
- "Vendor": {
- "id": "string",
- "name": "string",
- "email": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Creates a new Shipment Receipt
JSON body to create new Shipment Receipts
dateReceived required | string <date-time> |
required | Array of objects |
postedDate | string <date> Defaults to dateReceived if not passed |
reference | string |
dontRunCostBasis | boolean Default: false Set to true to prevent running costbasis upon success |
{- "dateReceived": "2019-08-24T14:15:22Z",
- "postedDate": "2019-08-24",
- "reference": "string",
- "dontRunCostBasis": false,
- "ShipmentReceiptLines": [
- {
- "POLineItemId": 0,
- "WarehouseId": 0,
- "quantityReceived": 1.25,
- "amount": 1.25,
- "updateDefaultPrice": false
}
]
}
{- "_id": 0,
- "dateReceived": "2019-08-24T14:15:22Z",
- "VendorId": 0,
- "reference": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
quantityReceived | ✅ | ✅ |
amount | ✅ | ✅ |
status | ✅ | ❌ |
ShipmentReceiptId | ✅ | ❌ |
WarehouseId | ✅ | ❌ |
ItemId | ✅ | ❌ |
POLineItemId | ✅ | ❌ |
PurchaseOrderId | ✅ | ❌ |
SOLineItemId | ✅ | ❌ |
SalesOrderId | ✅ | ❌ |
VendorId | ✅ | ❌ |
ReceiveJournalId | ✅ | ❌ |
ReversalJournalId | ✅ | ❌ |
InventoryReceivingAccountId | ✅ | ❌ |
ShipmentReceipt.dateReceived | ✅ | ✅ |
ShipmentReceipt.postedDate | ✅ | ✅ |
ShipmentReceipt.reference | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "_id:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "quantityReceived": "string",
- "amount": "string",
- "status": "received",
- "ShipmentReceiptId": 0,
- "WarehouseId": 0,
- "ItemId": 0,
- "POLineItemId": 0,
- "PurchaseOrderId": 0,
- "SOLineItemId": 0,
- "SalesOrderId": 0,
- "VendorId": 0,
- "InventoryReceivingAccountId": 0,
- "ReceiveJournalId": 0,
- "ReversalJournalId": 0,
- "ReceiveJournal": {
- "number": 0
}, - "ReversalJournal": {
- "number": 0
}, - "ShipmentReceipt": {
- "dateReceived": "2019-08-24T14:15:22Z",
- "postedDate": "2019-08-24",
- "reference": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string",
- "email": "string"
}, - "Warehouse": {
- "name": "string"
}, - "Item": {
- "name": "string",
- "number": "string",
- "description": "string",
- "sku": "string"
}, - "POLineItem": {
- "description": "string"
}, - "PurchaseOrder": {
- "number": "string",
- "currency": "string"
}, - "SalesOrder": {
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
The same filters as Line Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
{- "count": "string",
- "estimate": true
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
{- "count": "string",
- "estimate": true
}
Get one Shipment Receipt
id required | string ShipmentReceipt._id |
{- "_id": 0,
- "dateReceived": "2019-08-24T14:15:22Z",
- "postedDate": "2019-08-24",
- "reference": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "VendorId": 0,
- "Vendor": {
- "id": 0,
- "name": "string",
- "email": "string"
}, - "ShipmentReceiptLines": [
- {
- "_id": 0,
- "quantityReceived": "string",
- "amount": "string",
- "status": "received",
- "ShipmentReceiptId": 0,
- "WarehouseId": 0,
- "POLineItemId": 0,
- "SOLineItemId": 0,
- "ItemId": 0,
- "ReceiveJournalId": 0,
- "ReversalJournalId": 0,
- "ReceiveJournal": {
- "number": 0
}, - "ReversalJournal": {
- "number": 0
}, - "Warehouse": {
- "name": "string"
}, - "Item": {
- "name": "string",
- "description": "string",
- "sku": "string",
- "number": 0
}, - "POLineItem": {
- "PurchaseOrderId": 0,
- "description": "string",
- "PurchaseOrder": {
- "number": 0,
- "currency": "string",
- "InventoryReceivingAccountId": 0
}
}, - "SOLineItem": {
- "SalesOrderId": 0,
- "SalesOrder": {
- "number": 0
}
}
}
]
}
Voids a Shipment Receipt line
Throws an error if inventory cost-basis is running
If multiple fulfillments at different prices were performed, their weighted average is used as price of adjustment
Stock adjustments are only created if there are linked adjustments to the receipt line
For cases when the shipment line has a linked Sales Order line, the following applies:
If an item of type 'Consume' is used in the receipt line:
Creates a 'VoidReceive' adjustment entry to void the receive adjustment Cost-basis is set to the weighted average (in case of multiple fulfillments) or shipment receipt line price
Purchase order line quantity received is updated
Purchase order status is updated if needed
id required | string ShipmentReceiptLine._id |
runCostBasis | boolean Default: false Set to true to run inventory cost-basis upon success |
{- "runCostBasis": false
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ❌ |
reference | ✅ | ❌ |
description | ✅ | ❌ |
LedgerAccountId | ✅ | ❌ |
LocationId | ✅ | ❌ |
status | ✅ | ❌ |
currency | ✅ | ❌ |
endDate | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "reference": "string",
- "description": "string",
- "LedgerAccountId": 0,
- "LocationId": 0,
- "status": "string",
- "currency": "string",
- "endDate": "2019-08-24",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "balance": "string",
- "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "Location": {
- "name": "string",
- "id": "string"
}
}
]
}
Creates a new Statement
JSON body to create new Statement
Only one of [LedgerAccount.number, LedgerAccountId]
can be set
Only one of [Location.id, LocationId]
can be set
LedgerAccountId required | integer Ref: LedgerAccount._id |
LocationId required | integer Ref: Location._id |
currency required | string Ref: Currency.code |
endDate required | string <date> |
balance required | string <number> |
reference | string |
description | string |
object | |
object |
{- "reference": "string",
- "description": "string",
- "LedgerAccountId": 0,
- "LocationId": 0,
- "currency": "string",
- "balance": "string",
- "endDate": "2019-08-24",
- "LedgerAccount": {
- "number": "string"
}, - "Location": {
- "id": "string"
}
}
{- "_id": 0,
- "reference": "string",
- "description": "string",
- "LedgerAccountId": 0,
- "LocationId": 0,
- "status": "string",
- "balance": "string",
- "currency": "string",
- "endDate": "2019-08-24",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
{- "_id": 0,
- "reference": "string",
- "description": "string",
- "LedgerAccountId": 0,
- "LocationId": 0,
- "status": "string",
- "beginningBalance": "string",
- "balance": "string",
- "currency": "string",
- "endDate": "2019-08-24",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "lastStatementDate": "2019-08-24",
- "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "Location": {
- "name": "string",
- "id": "string"
}
}
Reconcile Transactions
Transactions can only be reconciled if their corresponding statement (by LedgerAccount, currency, Location combo) is not closed
JSON body of TransactionIds to reconcile
TransactionIds | Array of numbers |
{- "TransactionIds": [
- 0
]
}
UnReconcile Transactions
Transactions can only be unreconciled if their corresponding statement (by LedgerAccount, currency, Location combo) is not closed
JSON body of TransactionIds to unreconcile
TransactionIds | Array of numbers |
{- "TransactionIds": [
- 0
]
}
Get the status of a job
type required | string Enum: "costbasis" "crypto-journals" "inventory" API type |
{- "status": "done",
- "type": "costbasis",
- "tenantId": "string",
- "data": {
- "_id": "string",
- "progress": "string",
- "timestamp": "string",
- "err": {
- "type": "string",
- "msg": "string"
}
}
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
ItemId | ✅ | ❌ |
description | ✅ | ❌ |
WarehouseId | ✅ | ❌ |
locked | ✅ | ❌ |
transactionDate | ✅ | ✅ |
postedDate | ✅ | ✅ |
AdjustmentLedgerAccountId | ✅ | ❌ |
JournalId | ✅ | ❌ |
type | ✅ | ❌ |
PurchaseOrderId | ✅ | ❌ |
POLineItemId | ✅ | ❌ |
SalesOrderId | ✅ | ❌ |
SOLineItemId | ✅ | ❌ |
TransferId | ✅ | ❌ |
quantity | ✅ | ✅ |
qtyAvailable | ✅ | ✅ |
qtyPicked | ✅ | ✅ |
currency | ✅ | ❌ |
price | ✅ | ✅ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "transactionDate:DESC" Order to return results in. ex "date:desc" |
LocationId | number Will include Stock Adjustments that have a Warehouse with this Location and its children Filters on LocationId can further limit data. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "ItemId": 0,
- "description": "string",
- "WarehouseId": 0,
- "locked": true,
- "transactionDate": "2019-08-24T14:15:22Z",
- "postedDate": "2019-08-24",
- "AdjustmentLedgerAccountId": 0,
- "JournalId": 0,
- "type": "fulfill",
- "TransferId": 0,
- "POLineItemId": 0,
- "SOLineItemId": 0,
- "PurchaseOrderId": 0,
- "SalesOrderId": 0,
- "ShipmentReceiptLineId": 0,
- "quantity": "string",
- "qtyPicked": "string",
- "qtyAvailable": "string",
- "currency": "string",
- "price": "string",
- "currencyRate": "string",
- "costBasis": "string",
- "AdjustmentLedgerAccount": {
- "name": "string",
- "number": "string"
}, - "Item": {
- "name": "string",
- "number": "string",
- "sku": "string"
}, - "Warehouse": {
- "name": "string"
}, - "PurchaseOrder": {
- "number": "string"
}, - "SalesOrder": {
- "number": "string"
}, - "Journal": {
- "number": 0
}, - "createdAt": "2019-08-24",
- "updatedAt": "2019-08-24"
}
]
}
Creates a new Stock Adjustment
JSON body to create new Stock Adjustment
type required | string Enum: "adjustment" "return" Standard type is adjustment. Return is used for received shipment receipts. |
ItemId required | integer Ref: Item._id |
WarehouseId required | integer Ref: Warehouse._id |
AdjustmentLedgerAccountId required | integer Ref: LedgerAccount._id |
transactionDate required | string <date-time> Cannot be in the future |
quantity required | string <number> Cannot = 0 Must be < 0 for type = 'return' |
dontRunCostBasis | boolean Default: false Set to true to prevent running costbasis upon success |
postedDate | string <date> Default: "transactionDate" |
description | string |
price | string <number> Required if quantity > 0 Must be > 0 Not allowed for type = 'return' |
currency | string <ISO4217 3 Char Code> "Ref: Currency.code" Required if price is specified Not allowed for type = 'return' |
POLineItemId | integer Ref: POLineItem._id Required if type = 'return' Not allowed for type = 'adjustment' |
ShipmentReceiptLineId | integer Ref: ShipmentReceiptLine._id Required if type = 'return' Not allowed for type = 'adjustment' |
{- "type": "adjustment",
- "dontRunCostBasis": false,
- "transactionDate": "2019-08-24T14:15:22Z",
- "postedDate": "transactionDate",
- "quantity": "string",
- "description": "string",
- "price": "string",
- "currency": "string",
- "ItemId": 0,
- "WarehouseId": 0,
- "AdjustmentLedgerAccountId": 0,
- "POLineItemId": 0,
- "ShipmentReceiptLineId": 0
}
{- "_id": 0,
- "transactionDate": "2019-08-24T14:15:22Z",
- "postedDate": "2019-08-24",
- "quantity": "string",
- "qtyPicked": "string",
- "price": "string",
- "costBasis": "string",
- "qtyAvailable": "string",
- "avgCost": "string",
- "type": "fulfill",
- "TransferId": 0,
- "locked": true,
- "currency": "string",
- "currencyRate": "string",
- "ItemId": 0,
- "WarehouseId": 0,
- "AdjustmentLedgerAccountId": 0,
- "JournalId": 0,
- "POLineItemId": 0,
- "SOLineItemId": 0,
- "ShipmentReceiptLineId": 0,
- "description": "string"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
{- "count": "string",
- "estimate": true
}
Delete one Stock Adjustments
Can only delete if status if type is adjustment
and locked
is false.
The linked journal entry will be deleted if it exists.
id required | string Statement Id |
runCostBasis | boolean Default: false If true, will run cost basis calculation after delete succeeds. |
Update Stock Adjustment
id required | string Stock Adjustment Id |
JSON body to update Stock Adjustment
dontRunCostBasis | boolean Default: false Set to true to prevent running costbasis upon success |
transactionDate | string <date-time> Cannot be in the future |
postedDate | string <date> Default: "transactionDate" |
quantity | string <number> Cannot = 0 |
description | string |
price | string <number> Only allowed if quantity > 0, Must be >=0 |
currency | string <ISO4217 3 Char Code> Ref: Currency.code |
ItemId | integer Ref: Item._id |
WarehouseId | integer Ref: Warehouse._id |
AdjustmentLedgerAccountId | integer Ref: LedgerAccount._id |
{- "dontRunCostBasis": false,
- "transactionDate": "2019-08-24T14:15:22Z",
- "postedDate": "transactionDate",
- "quantity": "string",
- "description": "string",
- "price": "string",
- "currency": "string",
- "ItemId": 0,
- "WarehouseId": 0,
- "AdjustmentLedgerAccountId": 0
}
{- "_id": 0,
- "transactionDate": "2019-08-24T14:15:22Z",
- "postedDate": "2019-08-24",
- "quantity": "string",
- "qtyPicked": "string",
- "price": "string",
- "costBasis": "string",
- "qtyAvailable": "string",
- "avgCost": "string",
- "type": "fulfill",
- "TransferId": 0,
- "locked": true,
- "currency": "string",
- "currencyRate": "string",
- "ItemId": 0,
- "WarehouseId": 0,
- "AdjustmentLedgerAccountId": 0,
- "JournalId": 0,
- "POLineItemId": 0,
- "SOLineItemId": 0,
- "ShipmentReceiptLineId": 0,
- "description": "string"
}
Field | Filterable | Sortable |
---|---|---|
ItemId | ✅ | ✅ |
Item.number | ✅ | ✅ |
Item.name | ✅ | ✅ |
Item.sku | ✅ | ✅ |
Item.description | ✅ | ✅ |
WarehouseId | ✅ | ✅ |
Warehouse.name | ✅ | ✅ |
qtyAvailable | ❌ | ✅ |
transactionDate | ✅ | ❌ |
postedDate | ✅ | ❌ |
Passing a transactionDate filter will summarize all of the adjustments with a transactionDate prior to or equal to the transactionDate passed
Passing a postedDate filter will summarize all of the adjustments with a postedDate prior to or equal to the postedDate passed
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "Item.name:DESC" Order to return results in. ex "date:desc" |
LocationId | number Will include Stock Adjustments that have a Warehouse with this Location and its children Filters on LocationId can further limit data. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "ItemId": 0,
- "Item": {
- "name": "string",
- "number": 0,
- "sku": "string",
- "description": "string"
}, - "WarehouseId": 0,
- "Warehouse": {
- "name": "string",
- "currency": "string"
}, - "qtyAvailable": "string",
- "totalCostBasis": "string"
}
]
}
Counts the Stock Summary data.
The same filters as Stock Summary can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include Stock Adjustments that have a Warehouse with this Location and its children Filters on LocationId can further limit data. |
{- "count": "string",
- "estimate": true
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
status | ✅ | ❌ |
submitDate | ✅ | ✅ |
ItemId | ✅ | ❌ |
WarehouseId | ✅ | ❌ |
quantity | ✅ | ❌ |
unitCost | ✅ | ❌ |
SystemJobId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "submitDate:DESC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "status": "draft",
- "submitDate": "2019-08-24",
- "quantity": "string",
- "qtyInStock": "string",
- "variance": "string",
- "variancePrice": "string",
- "unitCost": "string",
- "ItemId": 0,
- "WarehouseId": 0,
- "SystemJobId": "string",
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string",
- "purchasePrice": "string"
}, - "Warehouse": {
- "name": "string"
}, - "SystemJob": {
- "name": "string",
- "date": "2019-08-24"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Update One Stock Count
Can only update if in draft status
id required | string Stock Count Id |
JSON body containing key and values to update
quantity | string <number> |
unitCost | string <number> |
{- "quantity": "string",
- "unitCost": "string"
}
{- "_id": 0,
- "status": "string",
- "quantity": "string",
- "unitCost": "string",
- "submitDate": "2019-08-24",
- "SystemJobId": 0,
- "ItemId": 0,
- "WarehouseId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Submit a stock count for approval
id required | string StockCount _id |
Ledger Account must be active
LedgerAccountId required | integer Ref: LedgerAccounts, used as the Adjustment Ledger Account for the created stock adjustment |
submitDate | string Default: "NOW" Used as transaction date for created stock adjustment |
{- "LedgerAccountId": 0,
- "submitDate": "NOW"
}
Returns a list of system jobs in descending order by date
Field | Filterable |
---|---|
_id | ✅ |
tenantId | ✅ |
date | ✅ |
queueName | ✅ |
status | ✅ |
name | ✅ |
result | ❌ |
progress | ❌ |
url | ❌ |
createdAt | ❌ |
updatedAt | ❌ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
queueName | string Enum: "journal" "bill" "crypto" "invoice" "stockCounts" "ledgerAccounts" "customers" "vendors" "items" "warehouses" "stockAdjustments" "vendorPrices" "costCenters" "jobs" "products" "custom1" "custom2" "custom3" "bankTransactions" Example: queueName={"in":["ledgerAccounts","customers","vendors"]}.
or simple a string 'vendorPrice'
JSON Key:Value object to filter queueNames on |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": "string",
- "queueName": "journal",
- "date": "2019-08-24T14:15:22Z",
- "name": "string",
- "progress": "string",
- "status": "completed",
- "url": "string",
- "results": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Create new System Job
JSON body to create new System Job
queueName required | string Enum: "dimension" "doc" |
name | string |
object | |
notBulk | boolean If false appends 'bulk_' as prefix to queueName |
{- "queueName": "dimension",
- "name": "string",
- "data": {
- "dimensionType": "journal",
- "url": "string"
}, - "notBulk": true
}
{- "_id": "string",
- "name": "string",
- "date": "2019-08-24T14:15:22Z",
- "progress": "string",
- "queueName": "journal",
- "results": 0,
- "status": "completed",
- "tenantId": "string",
- "url": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Returns a count of system jobs
Field | Filterable |
---|---|
_id | ✅ |
tenantId | ✅ |
date | ✅ |
queueName | ✅ |
status | ✅ |
name | ✅ |
result | ❌ |
progress | ❌ |
url | ❌ |
createdAt | ❌ |
updatedAt | ❌ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
queueName | string Enum: "journal" "bill" "crypto" "invoice" "stockCounts" "ledgerAccounts" "customers" "vendors" "items" "warehouses" "stockAdjustments" "vendorPrices" "costCenters" "jobs" "products" "custom1" "custom2" "custom3" Example: queueName={"in":["ledgerAccounts","customers","vendors"]}.
or simple a string 'vendorPrice'
JSON Key:Value object to filter queueNames on |
{- "count": 0,
- "estimate": true
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
code | ✅ | ✅ |
description | ✅ | ✅ |
rate | ✅ | ✅ |
LedgerAccountId | ✅ | ❌ |
LedgerAccount.number | ❌ | ✅ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "code:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "code": "string",
- "description": "string",
- "rate": "string",
- "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Creates a new Tax Code
JSON body to create new Tax Code.
One of [LedgerAccountId, LedgerAccount.number]
is required
code required | string |
rate required | string <number> |
description | string |
LedgerAccountId | number Ref: LedgerAccount._id |
object |
{- "code": "string",
- "description": "string",
- "rate": "string",
- "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "code": "string",
- "description": "string",
- "rate": "string",
- "LedgerAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Update One Tax Code
id required | string Tax Code Id |
JSON body containing key and values to update
code | string |
description | string |
rate | string <number> |
LedgerAccountId | number Ref: LedgerAccount._id |
object |
{- "code": "string",
- "description": "string",
- "rate": "string",
- "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "code": "string",
- "description": "string",
- "rate": "string",
- "LedgerAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
{- "_id": 0,
- "code": "string",
- "description": "string",
- "rate": "string",
- "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "name": "string",
- "type": "Invoice",
- "format": "pdf",
- "data": { }
}
Update One Template
id required | string Template Id |
JSON body containing key and values to update
name | string |
type | string Enum: "Invoice" "PurchaseOrder" "SalesOrder" "SalesQuote" |
format | string Enum: "pdf" "doc" |
data | object |
{- "name": "string",
- "type": "Invoice",
- "format": "pdf",
- "data": { }
}
{- "_id": 0,
- "name": "string",
- "type": "Invoice",
- "format": "pdf",
- "data": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
name | ✅ | ✅ |
type | ✅ | ✅ |
format | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "name:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "name": "string",
- "type": "Invoice",
- "format": "pdf",
- "data": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Creates a new template
JSON body to create new Template
name required | string |
type required | string Enum: "Invoice" "PurchaseOrder" "SalesOrder" "SalesQuote" |
data required | object |
format | string Default: "pdf" Enum: "pdf" "doc" |
{- "name": "string",
- "type": "Invoice",
- "format": "pdf",
- "data": { }
}
{- "_id": 0,
- "name": "string",
- "type": "Invoice",
- "format": "pdf",
- "data": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
elimination | ✅ | ❌ |
elim2 | ✅ | ❌ |
CostCenterId | ✅ | ❌ |
currency | ✅ | ✅ |
Custom1Id | ✅ | ❌ |
Custom2Id | ✅ | ❌ |
Custom3Id | ✅ | ❌ |
CustomerId | ✅ | ❌ |
description | ✅ | ❌ |
ICAccountId | ✅ | ❌ |
ICLocationId | ✅ | ❌ |
JobId | ✅ | ❌ |
JournalId | ✅ | ✅ |
Journal_entryType | ✅ | ✅ |
Journal_notes | ✅ | ❌ |
Journal_number | ✅ | ✅ |
Journal_reference | ✅ | ❌ |
Journal_status | ✅ | ❌ |
Journal_sourceLedger | ✅ | ✅ |
Journal_AccountingPeriodId | ✅ | ❌ |
LedgerAccount_type | ✅ | ✅ |
LedgerAccount_subtype | ✅ | ✅ |
LedgerAccountId | ✅ | ❌ |
LocationId | ✅ | ❌ |
ProductId | ✅ | ❌ |
postedDate | ✅ | ✅ |
transactionDate | ✅ | ✅ |
reconcileId | ✅ | ❌ |
reversing | ✅ | ❌ |
SystemJobId | ✅ | ❌ |
VendorId | ✅ | ❌ |
BatchPaymentId | ✅ | ❌ |
credit | ✅ | ✅ |
debit | ✅ | ✅ |
txn_type | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "postedDate:ASC" Order to return results in. ex "date:desc" |
currency | string ******* NOTE ********** We recommend using the v2/journals/lines route instead. This route only exists for legacy reporting support. Cannot use a custom currency If set, will return debit/credit values in this currency If not set, returns debit/credit values in thier posted currency. |
LocationId | number Will include transactions from this Location and its children Filters on LocationId can further limit data. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "description": "string",
- "transactionDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "reversing": true,
- "reconcileId": "string",
- "consolidated": true,
- "elimination": true,
- "elim2": true,
- "currency": "string",
- "customCurrencyRate": "string",
- "JournalId": 0,
- "Journal_status": "draft",
- "Journal_sourceLedger": "Financial",
- "Journal_entryType": "Standard",
- "Journal_reference": "string",
- "Journal_notes": "string",
- "Journal_number": 0,
- "Journal_reverseDate": "2019-08-24",
- "Journal_createdAt": "2019-08-24T14:15:22Z",
- "Journal_updatedAt": "2019-08-24T14:15:22Z",
- "Journal_AccountingPeriodId": "string",
- "SystemJobId": "string",
- "LedgerAccountId": 0,
- "LedgerAccount_name": "string",
- "LedgerAccount_number": "string",
- "LedgerAccount_type": "Asset",
- "LedgerAccount_subtype": "string",
- "ICAccountId": 0,
- "ICAccount_name": "string",
- "ICAccount_number": "string",
- "ICAccount_type": "string",
- "ICAccount_subtype": "Asset",
- "CostCenterId": 0,
- "CostCenter_name": "string",
- "CostCenter_id": "string",
- "ProductId": 0,
- "Product_name": "string",
- "Product_id": "string",
- "Custom1Id": 0,
- "Custom1_name": "string",
- "Custom1_id": "string",
- "Custom2Id": 0,
- "Custom2_name": "string",
- "Custom2_id": "string",
- "Custom3Id": 0,
- "Custom3_name": "string",
- "Custom3_id": "string",
- "CustomerId": 0,
- "Customer_id": "string",
- "Customer_name": "string",
- "VendorId": 0,
- "Vendor_id": "string",
- "Vendor_name": "string",
- "InvoiceId": 0,
- "Invoice_number": "string",
- "BillId": 0,
- "Bill_invoiceNumber": "string",
- "PaymentId": 0,
- "SalesOrderId": 0,
- "SalesOrder_number": "string",
- "LocationId": 0,
- "Location_name": "string",
- "Location_id": "string",
- "Location_currency": "string",
- "Location_parent_path": [
- 0
], - "ICLocationId": 0,
- "ICLocation_name": "string",
- "ICLocation_id": "string",
- "ICLocation_currency": "string",
- "CashReceiptId": 0,
- "CashReceipt_number": "string",
- "VendorCreditId": "string",
- "VendorCredit_number": "string",
- "JobId": 0,
- "Job_number": "string",
- "Job_name": "string",
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "reportingCurrency": "string",
- "fxRate": "string",
- "debit": "string",
- "credit": "string",
- "txn_type": "standard"
}
]
}
Field | Filterable |
---|---|
_id | ✅ |
description | ✅ |
elimination | ✅ |
elim2 | ✅ |
CostCenterId | ✅ |
currency | ✅ |
Custom1Id | ✅ |
Custom2Id | ✅ |
Custom3Id | ✅ |
CustomerId | ✅ |
ICAccountId | ✅ |
ICLocationId | ✅ |
JobId | ✅ |
JournalId | ✅ |
Journal_entryType | ✅ |
Journal_notes | ✅ |
Journal_number | ✅ |
Journal_reference | ✅ |
Journal_status | ✅ |
Journal_sourceLedger | ✅ |
LedgerAccount_type | ✅ |
LedgerAccount_subtype | ✅ |
LedgerAccountId | ✅ |
LocationId | ✅ |
ProductId | ✅ |
postedDate | ✅ |
transactionDate | ✅ |
reconcileId | ✅ |
reversing | ✅ |
SystemJobId | ✅ |
VendorId | ✅ |
txn_type | ✅ |
createdAt | ✅ |
updatedAt | ✅ |
currency required | string "Ref: Currency.code", cannot use a custom currency Return debit/credit values in this currency |
startDate required | string <date> Will include transactions from this postedDate and forward. |
endDate required | string <date> Will include transactions from this postedDate and back. |
LocationId required | number Will include transactions from this Location and its children Filters on LocationId can further limit data. |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "runningBalance": "string",
- "description": "string",
- "transactionDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "reversing": true,
- "reconcileId": "string",
- "consolidated": true,
- "elimination": true,
- "elim2": true,
- "currency": "string",
- "customCurrencyRate": "string",
- "JournalId": 0,
- "Journal_status": "draft",
- "Journal_sourceLedger": "Financial",
- "Journal_entryType": "Standard",
- "Journal_reference": "string",
- "Journal_notes": "string",
- "Journal_number": 0,
- "Journal_reverseDate": "2019-08-24",
- "Journal_createdAt": "2019-08-24T14:15:22Z",
- "Journal_updatedAt": "2019-08-24T14:15:22Z",
- "Journal_AccountingPeriodId": "string",
- "SystemJobId": "string",
- "ICAccountId": 0,
- "ICAccount_name": "string",
- "ICAccount_number": "string",
- "ICAccount_type": "string",
- "ICAccount_subtype": "Asset",
- "CostCenterId": 0,
- "CostCenter_name": "string",
- "CostCenter_id": "string",
- "ProductId": 0,
- "Product_name": "string",
- "Product_id": "string",
- "Custom1Id": 0,
- "Custom1_name": "string",
- "Custom1_id": "string",
- "Custom2Id": 0,
- "Custom2_name": "string",
- "Custom2_id": "string",
- "Custom3Id": 0,
- "Custom3_name": "string",
- "Custom3_id": "string",
- "CustomerId": 0,
- "Customer_id": "string",
- "Customer_name": "string",
- "VendorId": 0,
- "Vendor_id": "string",
- "Vendor_name": "string",
- "InvoiceId": 0,
- "Invoice_number": "string",
- "BillId": 0,
- "Bill_invoiceNumber": "string",
- "PaymentId": 0,
- "SalesOrderId": 0,
- "SalesOrder_number": "string",
- "LocationId": 0,
- "Location_name": "string",
- "Location_id": "string",
- "Location_currency": "string",
- "Location_parent_path": [
- 0
], - "ICLocationId": 0,
- "ICLocation_name": "string",
- "ICLocation_id": "string",
- "ICLocation_currency": "string",
- "CashReceiptId": 0,
- "CashReceipt_number": "string",
- "VendorCreditId": "string",
- "VendorCredit_number": "string",
- "JobId": 0,
- "Job_number": "string",
- "Job_name": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "reportingCurrency": "string",
- "fxRate": "string",
- "debit": "string",
- "credit": "string",
- "txn_type": "standard"
}
]
}
Field | Filterable |
---|---|
_id | ✅ |
description | ✅ |
elimination | ✅ |
elim2 | ✅ |
CostCenterId | ✅ |
Custom1Id | ✅ |
Custom2Id | ✅ |
Custom3Id | ✅ |
CustomerId | ✅ |
ICAccountId | ✅ |
ICLocationId | ✅ |
JobId | ✅ |
JournalId | ✅ |
Journal_entryType | ✅ |
Journal_notes | ✅ |
Journal_number | ✅ |
Journal_reference | ✅ |
Journal_status | ✅ |
Journal_sourceLedger | ✅ |
LedgerAccount_type | ✅ |
LedgerAccount_subtype | ✅ |
LedgerAccountId | ✅ |
LocationId | ✅ |
ProductId | ✅ |
postedDate | ✅ |
transactionDate | ✅ |
reconcileId | ✅ |
reversing | ✅ |
SystemJobId | ✅ |
VendorId | ✅ |
currency | ✅ |
txn_type | ✅ |
createdAt | ✅ |
updatedAt | ✅ |
currency required | string "Ref: Currency.code", cannot use a custom currency If set, will return debit/credit values in this currency If not set, returns debit/credit values in thier posted currency. |
startDate required | string <date> Sum will include transactions from this postedDate and forward. |
endDate required | string <date> Sum will include transactions from this postedDate and back. |
LocationId required | number Sum will include transactions from this Location and its children Filters on LocationId can further limit data. |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
"string"
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
ItemId | ✅ | ❌ |
status | ✅ | ❌ |
FromWarehouseId | ✅ | ❌ |
ToWarehouseId | ✅ | ❌ |
quantity | ✅ | ✅ |
date | ✅ | ✅ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "date:DESC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "ItemId": 0,
- "status": "inTransit",
- "quantity": "string",
- "ToWarehouseId": 0,
- "FromWarehouseId": 0,
- "date": "2019-08-24T14:15:22Z",
- "Item": {
- "name": "string",
- "number": "string",
- "sku": "string"
}, - "ToWarehouse": {
- "name": "string"
}, - "FromWarehouse": {
- "name": "string"
}, - "createdAt": "2019-08-24",
- "updatedAt": "2019-08-24"
}
]
}
Creates a new Transfer
JSON body to create new Transfer
Cannot transfer to the same warehouse
Currency is set to currency of "FromWarehouse"
date required | string <date-time> Cannot be in the future |
quantity required | string <number> Must be > 0 |
ItemId required | integer Ref: Item._id |
FromWarehouseId required | integer Ref: Warehouse._id |
ToWarehouseId required | integer Ref: Warehouse._id |
dontRunCostBasis | boolean Default: false Set to true to prevent running costbasis upon success |
status | string Default: "complete" Enum: "inTransit" "complete" |
{- "dontRunCostBasis": false,
- "date": "2019-08-24T14:15:22Z",
- "quantity": "string",
- "status": "inTransit",
- "ItemId": 0,
- "ToWarehouseId": 0,
- "FromWarehouseId": 0
}
{- "_id": 0,
- "date": "2019-08-24T14:15:22Z",
- "quantity": "string",
- "status": "inProgress",
- "currency": "string",
- "ItemId": 0,
- "ToWarehouseId": 0,
- "FromWarehouseId": 0
}
Complete Transfer
id required | string Transfer Id |
Request Body
dontRunCostBasis | boolean Default: false Set to true to prevent running costbasis upon success |
{- "dontRunCostBasis": false
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
{- "count": "string",
- "estimate": true
}
Update Transfer
id required | string Transfer Id |
JSON body to update Transfer
Can only update a transfer if it is inTransit
Currency is set to currency of "FromWarehouse"
dontRunCostBasis | boolean Default: false Set to true to prevent running costbasis upon success |
date | string <date-time> Cannot be in the future |
quantity | string <number> Must be > 0 |
ItemId | integer Ref: Item._id |
ToWarehouseId | integer Ref: Warehouse._id |
FromWarehouseId | integer Ref: Warehouse._id |
{- "dontRunCostBasis": false,
- "date": "2019-08-24T14:15:22Z",
- "quantity": "string",
- "ItemId": 0,
- "ToWarehouseId": 0,
- "FromWarehouseId": 0
}
{- "_id": 0,
- "date": "2019-08-24T14:15:22Z",
- "quantity": "string",
- "status": "inProgress",
- "currency": "string",
- "ItemId": 0,
- "ToWarehouseId": 0,
- "FromWarehouseId": 0
}
All Users
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
offset | number offset to page forwards from |
{- "totalItems": 0,
- "data": [
- {
- "LocationId": 0,
- "email": "string",
- "fname": "string",
- "lname": "string",
- "phone_number": "string",
- "profilePicURL": "string",
- "helpUrl": "string",
- "loginUrl": "string",
- "tenantId": "string",
- "tenants": [
- "string"
], - "use_mfa": true,
- "_id": "string"
}
]
}
Create new User
JSON body to create new User
fname required | string |
lname required | string |
email required | string |
phoneNumber required | string |
LocationId required | string |
use_mfa | boolean |
{- "fname": "string",
- "lname": "string",
- "email": "string",
- "phoneNumber": "string",
- "LocationId": "string",
- "use_mfa": true
}
{- "_id": "string",
- "profilePicURL": "string",
- "tenantId": "string",
- "use_mfa": true,
- "fname": "string",
- "lname": "string",
- "LocationId": 0,
- "phone_number": "string",
- "email": "string"
}
{- "_id": "string",
- "profilePicURL": "string",
- "tenantId": "string",
- "use_mfa": true,
- "lname": "string",
- "fname": "string",
- "LocationId": 0,
- "phone_number": "string",
- "authorization": true,
- "permissions": [
- "string"
], - "email": "string",
- "tenants": [
- {
- "uuid": "string",
- "company": "string",
- "LocationId": 0,
- "logo": "string"
}
]
}
Update User
id required | string User Id |
JSON body to update User
fname | string |
lname | string |
phone_number | string |
use_mfa | boolean |
LocationId | number |
{- "fname": "string",
- "lname": "string",
- "phone_number": "string",
- "use_mfa": true,
- "LocationId": 0
}
{- "app_metadata": {
- "LocationId": 0,
- "fname": "string",
- "lname": "string",
- "phone_number": "string",
- "tenantId": "string",
- "usa_mfa": true
}, - "user_id": "string",
- "email": "string",
- "email_verified": true,
- "identities": { },
- "name": "string",
- "nickname": "string",
- "picture": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z"
}
Update User Roles
id required | string User Id |
JSON body to update User Roles
id | string |
description | string |
name | string |
[- {
- "id": "string",
- "description": "string",
- "name": "string"
}
]
Update self
This endpoint will update the user's own information.
This request will only work with a user token and not an api token.
Settings such as hideZeroCoins
, stickyNav
and homePage
will not trigger a webhook.
JSON body to update User
fname | string |
lname | string |
profilePicURL | string |
restoreId | string |
hideZeroCoins | boolean |
stickyNav | boolean |
homePage | string |
{- "fname": "string",
- "lname": "string",
- "profilePicURL": "string",
- "restoreId": "string",
- "hideZeroCoins": true,
- "stickyNav": true,
- "homePage": "string"
}
{- "app_metadata": {
- "LocationId": 0,
- "fname": "string",
- "lname": "string",
- "phone_number": "string",
- "tenantId": "string",
- "usa_mfa": true,
- "hideZeroCoins": true,
- "stickyNav": true,
- "homePage": "string"
}, - "user_id": "string",
- "email": "string",
- "email_verified": true,
- "identities": { },
- "name": "string",
- "nickname": "string",
- "picture": "string",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
id | ✅ | ✅ |
name | ✅ | ✅ |
externalId | ✅ | ✅ |
nameOnCheck | ✅ | ✅ |
accNumber | ✅ | ✅ |
✅ | ✅ | |
terms | ✅ | ✅ |
EIN | ✅ | ✅ |
currency | ✅ | ✅ |
customFields | ✅ | ❌ |
defaultDaysDue | ❌ | ❌ |
is1099 | ✅ | ❌ |
inactive | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
ExpenseAccountId | ❌ | ❌ |
ExpenseAccount.number | ❌ | ❌ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
status | string Enum: "active" "inactive" Results will return |
order | string Default: "id:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "id": "string",
- "externalId": "string",
- "name": "string",
- "nameOnCheck": "string",
- "accNumber": "string",
- "email": "string",
- "terms": "string",
- "EIN": "string",
- "currency": "string",
- "customFields": { },
- "defaultDaysDue": 0,
- "is1099": true,
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "ExpenseAccountId": 0,
- "ExpenseAccount": {
- "number": "string",
- "name": "string"
}, - "Address": {
- "_id": 0,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Contact": {
- "_id": 0,
- "name": "string",
- "email": "string",
- "phone": "string"
}
}
]
}
Creates a new Vendor
JSON body to create new Vendor
Only one of [ExpenseAccount.number, ExpenseAccountId]
can be set
name required | string |
externalId | string |
nameOnCheck | string |
accNumber | string |
string <email> | |
terms | string |
EIN | string |
currency | string Ref: Currency.code |
defaultDaysDue | integer >= 1 |
customFields | object Default: {} Key->Value store of custom fields |
is1099 | boolean Default: false |
inactive | boolean Default: false |
ExpenseAccountId | integer Ref: LedgerAccount._id |
object | |
object Default address for vendor | |
object Primary contact for vendor |
{- "externalId": "string",
- "name": "string",
- "nameOnCheck": "string",
- "accNumber": "string",
- "email": "user@example.com",
- "terms": "string",
- "EIN": "string",
- "currency": "string",
- "defaultDaysDue": 1,
- "customFields": { },
- "is1099": false,
- "inactive": false,
- "ExpenseAccountId": 0,
- "ExpenseAccount": {
- "number": "string"
}, - "Address": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Contacts": {
- "name": "string",
- "email": "string",
- "phone": "string"
}
}
{- "_id": 0,
- "id": "string",
- "externalId": "string",
- "name": "string",
- "nameOnCheck": "string",
- "accNumber": "string",
- "email": "string",
- "terms": "string",
- "EIN": "string",
- "currency": "string",
- "defaultDaysDue": 0,
- "customFields": { },
- "is1099": true,
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "ExpenseAccountId": 0
}
This endpoint returns only bills for the specified vendor. The response and parameters of this endpoint are the same as for Bills Search
id required | string Vendor._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "status": "created",
- "approvalStatus": "unapproved",
- "paymentStatus": "unpaid",
- "externalId": "string",
- "invoiceNumber": "string",
- "invoiceDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "notes": "string",
- "approved_on": "2019-08-24",
- "approved_name": "string",
- "approved_email": "user@example.com",
- "reference": "string",
- "currency": "string",
- "amount": "string",
- "dueAmount": "string",
- "customFields": { },
- "SystemJobId": "string",
- "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "ICLocationId": 0,
- "ICLocation": {
- "id": "string",
- "name": "string"
}, - "VendorId": 0,
- "Vendor": {
- "name": "string"
}, - "APAccountId": 0,
- "APAccount": {
- "name": "string",
- "number": "string"
}, - "PurchaseOrderId": 0,
- "PurchaseOrder": {
- "number": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "active" "inactive" Results will return |
{- "count": "string",
- "estimate": true
}
This endpoint returns only count of bills for the specified vendor. The same filters as Search can be used here.
id required | string Vendor Id |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
credit | boolean Default: false If true, only returns AP Credits i.e. bills with a negative amount. If false or not specified, only returns bills with a positive amount. |
{- "count": "string",
- "estimate": true
}
{- "_id": 0,
- "id": "string",
- "externalId": "string",
- "name": "string",
- "nameOnCheck": "string",
- "accNumber": "string",
- "email": "string",
- "terms": "string",
- "EIN": "string",
- "currency": "string",
- "defaultDaysDue": 0,
- "customFields": { },
- "is1099": true,
- "inactive": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "ExpenseAccountId": 0,
- "ExpenseAccount": {
- "number": "string",
- "name": "string"
}, - "Addresses": [
- {
- "_id": 0,
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}
], - "Contacts": [
- {
- "_id": 0,
- "isPrimary": true,
- "name": "string",
- "email": "string",
- "phone": "string"
}
]
}
Update One Vendor
id required | string Vendor Id |
JSON body containing key and values to update
Only one of [ExpenseAccount.number, ExpenseAccountId]
can be set
externalId | string |
name | string |
nameOnCheck | string |
accNumber | string |
string <email> | |
terms | string |
EIN | string |
currency | string Ref: Currency.code |
defaultDaysDue | integer >= 1 |
is1099 | boolean Default: false |
customFields | object Key->Value store of custom fields |
inactive | boolean Default: false |
ExpenseAccountId | integer Ref: LedgerAccount._id |
object |
{- "externalId": "string",
- "name": "string",
- "nameOnCheck": "string",
- "accNumber": "string",
- "email": "user@example.com",
- "terms": "string",
- "EIN": "string",
- "currency": "string",
- "defaultDaysDue": 1,
- "is1099": false,
- "customFields": { },
- "inactive": false,
- "ExpenseAccountId": 0,
- "ExpenseAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "id": "string",
- "externalId": "string",
- "name": "string",
- "nameOnCheck": "string",
- "accNumber": "string",
- "email": "string",
- "terms": "string",
- "EIN": "string",
- "currency": "string",
- "defaultDaysDue": 0,
- "is1099": true,
- "inactive": true,
- "customFields": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "ExpenseAccountId": 0
}
This endpoint returns only payments for the specified vendor. The response and parameters of this endpoint are the same as for Payments Search
id required | string Vendor._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "checkNumber": "string",
- "number": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "VendorId": 0,
- "CustomerId": 0,
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Address": {
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string",
- "email": "user@example.com",
- "nameOnCheck": "string"
}, - "Bill": {
- "invoiceNumber": "string",
- "description": "string"
}, - "Invoice": {
- "number": "string",
- "reference": "string"
}, - "Customer": {
- "id": "string",
- "name": "string",
- "email": "user@example.com"
}, - "VendorCredit": {
- "number": "string"
}, - "CashReceipt": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "BatchPayment": {
- "referenceNumber": "string"
}
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
number | ✅ | ✅ |
externalId | ✅ | ✅ |
type | ✅ | ✅ |
amount | ✅ | ✅ |
unused | ✅ | ✅ |
description | ✅ | ✅ |
currency | ✅ | ✅ |
receiveDate | ✅ | ✅ |
postingDate | ✅ | ✅ |
status | ✅ | ✅ |
VendorId | ✅ | ❌ |
LedgerAccountId | ✅ | ❌ |
UnappliedCreditAccountId | ✅ | ❌ |
LocationId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "number:DESC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "number": "string",
- "externalId": "string",
- "type": "string",
- "amount": "string",
- "unused": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "status": "created",
- "VendorId": 0,
- "Vendor": {
- "id": "string",
- "name": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string",
- "name": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "UnappliedCreditAccountId": 0,
- "UnappliedCreditAccount": {
- "number": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Creates a new Vendor Credit
JSON body to create new Vendor Credit
Only one of [Vendor.id, VendorId]
can be set
Only one of [LedgerAccount.number, LedgerAccountId]
can be set
Only one of [Location.id, LocationId]
can be set
Only one of [UnappliedCreditAccount.number, UnappliedCreditAccountId]
can be set
number required | string |
type required | string |
amount required | string <number> Must be > 0 |
currency required | string Ref: Currency.code |
receiveDate required | string <date> |
postingDate required | string <date> |
externalId | string |
description | string |
VendorId | number Ref: Vendor._id |
object | |
LedgerAccountId | number Ref: LedgerAccount._id |
object | |
LocationId | number Ref: Location._id |
object | |
UnappliedCreditAccountId | number Ref: LedgerAccount._id |
object |
{- "number": "string",
- "externalId": "string",
- "type": "string",
- "amount": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "VendorId": 0,
- "Vendor": {
- "id": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string"
}, - "UnappliedCreditAccountId": 0,
- "UnappliedCreditAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "number": "string",
- "externalId": "string",
- "type": "string",
- "amount": "string",
- "unused": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "status": "created",
- "VendorId": 0,
- "LedgerAccountId": 0,
- "LocationId": 0,
- "UnappliedCreditAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
{- "count": "string",
- "estimate": true
}
Get one Vendor Credit
id required | string Vendor Credit Id |
{- "_id": 0,
- "number": "string",
- "externalId": "string",
- "type": "string",
- "amount": "string",
- "unused": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "status": "created",
- "VendorId": 0,
- "Vendor": {
- "id": "string",
- "name": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string",
- "name": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string",
- "name": "string"
}, - "UnappliedCreditAccountId": 0,
- "UnappliedCreditAccount": {
- "number": "string",
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Update One Vendor Credit
id required | string Vendor Credit Id |
JSON body containing key and values to update
Cannot update a Vendor Credit if an unapplied cash journal entry was created
Only one of [Vendor.id, VendorId]
can be set
Only one of [LedgerAccount.number, LedgerAccountId]
can be set
Only one of [Location.id, LocationId]
can be set
Only one of [UnappliedCreditAccount.number, UnappliedCreditAccountId]
can be set
number | string |
externalId | string |
type | string Enum: "charge" "check" "ACH" "Wire" |
amount | string <number> Must be > 0 |
description | string |
currency | string Ref: Currency.code |
receiveDate | string <date> |
postingDate | string <date> |
attachments | Array of strings <uri> [ items <uri > ] Links to any attached documents |
VendorId | number Ref: Vendor._id |
object | |
LedgerAccountId | number Ref: LedgerAccount._id |
object | |
LocationId | number Ref: Location._id |
object | |
UnappliedCreditAccountId | number Ref: LedgerAccount._id |
object |
{- "number": "string",
- "externalId": "string",
- "type": "charge",
- "amount": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "VendorId": 0,
- "Vendor": {
- "id": "string"
}, - "LedgerAccountId": 0,
- "LedgerAccount": {
- "number": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string"
}, - "UnappliedCreditAccountId": 0,
- "UnappliedCreditAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "number": "string",
- "externalId": "string",
- "type": "charge",
- "amount": "string",
- "unused": "string",
- "description": "string",
- "currency": "string",
- "receiveDate": "2019-08-24",
- "postingDate": "2019-08-24",
- "status": "created",
- "VendorId": 0,
- "LedgerAccountId": 0,
- "LocationId": 0,
- "UnappliedCreditAccountId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
This endpoint returns only payments for the specified vendor credit. The response and parameters of this endpoint are the same as for Payments Search
id required | string Vendor Credit._id |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "externalId": "string",
- "externalCheckId": "string",
- "externalCheckBankId": "string",
- "type": "manual",
- "checkNumber": "string",
- "number": "string",
- "status": "created",
- "amount": "string",
- "paymentDate": "2019-08-24",
- "postedDate": "2019-08-24",
- "memo": "string",
- "notes": "string",
- "currency": "string",
- "BillId": 0,
- "VendorCreditId": 0,
- "LedgerAccountId": 0,
- "CashReceiptId": 0,
- "AddressId": 0,
- "LocationId": 0,
- "InvoiceId": 0,
- "VendorId": 0,
- "CustomerId": 0,
- "BatchPaymentId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Address": {
- "isDefault": true,
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "Vendor": {
- "id": "string",
- "name": "string",
- "email": "user@example.com",
- "nameOnCheck": "string"
}, - "Bill": {
- "invoiceNumber": "string",
- "description": "string"
}, - "Invoice": {
- "number": "string",
- "reference": "string"
}, - "Customer": {
- "id": "string",
- "name": "string",
- "email": "user@example.com"
}, - "VendorCredit": {
- "number": "string"
}, - "CashReceipt": {
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}, - "LedgerAccount": {
- "name": "string",
- "number": "string"
}, - "BatchPayment": {
- "referenceNumber": "string"
}
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
VendorId | ✅ | ✅ |
ItemId | ✅ | ✅ |
price | ✅ | ✅ |
minValue | ✅ | ✅ |
maxValue | ✅ | ✅ |
Item | ❌ | ❌ |
Vendor | ❌ | ❌ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
order | string Default: "_id:ASC" Order to return results in. ex "date:desc" |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "VendorId": 0,
- "ItemId": 0,
- "price": "1",
- "minValue": "1",
- "maxValue": "1",
- "Item": {
- "name": "string",
- "sku": "string",
- "number": 0
}, - "Vendor": {
- "name": "string",
- "id": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Create new Vendor Price
JSON body to create new Vendor Price
VendorId required | integer |
ItemId required | integer |
price required | number must be > 0 |
minValue required | number |
maxValue | number or null 0 will be treated as an infinite value, and returned as null. Must be greater than minValue |
{- "VendorId": 0,
- "ItemId": 0,
- "price": 0,
- "minValue": 0,
- "maxValue": 0
}
{- "_id": "string",
- "VendorId": 0,
- "ItemId": 0,
- "price": "string",
- "minValue": "string",
- "maxValue": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Show price for Vendor & Item relationships
quantity required | number quantity of items |
VendorId required | number VendorId of Vendor Price Pair |
ItemId required | number ItemId of Vendor Price Pair |
{- "price": "1",
- "source": "VendorPrice"
}
Update one Vendor Price
id required | string Vendor Price Id |
JSON object containing key and values to update
price | number must be > 0 |
minValue | number |
maxValue | number Must be > minValue. 0 will be treated as an infinite value |
{- "price": 0,
- "minValue": 0,
- "maxValue": 0
}
{- "_id": 0,
- "VendorId": 0,
- "ItemId": 0,
- "price": "string",
- "minValue": "string",
- "maxValue": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
name | ✅ | ✅ |
externalId | ✅ | ❌ |
address | ✅ | ✅ |
exchange | ✅ | ✅ |
description | ✅ | ✅ |
tag | ✅ | ✅ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
DepositAccountId | ✅ | ❌ |
WithdrawalAccountId | ✅ | ❌ |
LocationId | ✅ | ❌ |
DepositAccount.number | ❌ | ✅ |
WithdrawalAccount.number | ❌ | ✅ |
Location.id | ❌ | ✅ |
LocationId | string Filters for Wallets (Receive, Sent, Fee) in the specified location. Defaults to Global Location when not set. |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
order | string Default: "name:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "name": "string",
- "externalId": "string",
- "address": "string",
- "description": "string",
- "exchange": "string",
- "tag": "string",
- "DepositAccountId": 0,
- "WithdrawalAccountId": 0,
- "LocationId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "DepositAccount": {
- "name": "string",
- "number": "string"
}, - "WithdrawalAccount": {
- "name": "string",
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}
}
]
}
Creates a new Wallet
name required | string |
externalId | string |
address | string |
description | string |
exchange | string |
tag | string |
LocationId | integer Default: "Global Location" Ref: Location._id |
object | |
DepositAccountId | integer Ref: LedgerAccount._id |
object | |
WithdrawalAccountId | integer Ref: LedgerAccount._id |
object |
{- "name": "string",
- "externalId": "string",
- "address": "string",
- "description": "string",
- "exchange": "string",
- "tag": "string",
- "LocationId": "Global Location",
- "Location": {
- "id": "string"
}, - "DepositAccountId": 0,
- "DepositAccount": {
- "number": "string"
}, - "WithdrawalAccountId": 0,
- "WithdrawalAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "name": "string",
- "externalId": "string",
- "address": "string",
- "description": "string",
- "exchange": "string",
- "tag": "string",
- "DepositAccountId": 0,
- "WithdrawalAccountId": 0,
- "LocationId": "Global Location"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
LocationId | string Filters for Wallets (Receive, Sent, Fee) in the specified location. Defaults to Global Location when not set. |
{- "count": "string",
- "estimate": true
}
{- "_id": 0,
- "name": "string",
- "externalId": "string",
- "address": "string",
- "description": "string",
- "exchange": "string",
- "tag": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "DepositAccountId": 0,
- "WithdrawalAccountId": 0,
- "LocationId": 0,
- "DepositAccount": {
- "name": "string",
- "number": "string"
}, - "WithdrawalAccount": {
- "name": "string",
- "number": "string"
}, - "Location": {
- "id": "string",
- "name": "string"
}
}
Updates a Wallet
id required | string id value |
name | string |
externalId | string |
address | string |
description | string |
exchange | string |
tag | string |
LocationId | integer Ref: Location._id |
object | |
DepositAccountId | integer Ref: LedgerAccount._id |
object | |
WithdrawalAccountId | integer Ref: LedgerAccount._id |
object |
{- "name": "string",
- "externalId": "string",
- "address": "string",
- "description": "string",
- "exchange": "string",
- "tag": "string",
- "LocationId": 0,
- "Location": {
- "id": "string"
}, - "DepositAccountId": 0,
- "DepositAccount": {
- "number": "string"
}, - "WithdrawalAccountId": 0,
- "WithdrawalAccount": {
- "number": "string"
}
}
{- "_id": 0,
- "name": "string",
- "externalId": "string",
- "address": "string",
- "description": "string",
- "exchange": "string",
- "tag": "string",
- "DepositAccountId": 0,
- "WithdrawalAccountId": 0,
- "LocationId": "Global Location"
}
List of Wallet's Coins with balance details
Field | Filterable | Orderable |
---|---|---|
_id | ✅ | ✅ |
name | ✅ | ✅ |
symbol | ✅ | ✅ |
isFiat | ❌ | ❌ |
rateSymbol | ✅ | ✅ |
quantity | ❌ | ❌ |
totalCostBasis | ❌ | ❌ |
id required | string Wallet.Id |
showHidden | string exclude zero balance coins |
date | string <date-time> date to filter by. defaults to "now" ISO DateTime |
hideZero | string <date-time> exclude zero balance coins |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": "string",
- "name": "string",
- "gainLoss": "123.321",
- "symbol": "string",
- "isFiat": true,
- "rate": {
- "PRICE": "string",
- "CHANGEPCT24HOUR": "string"
}, - "rateId": "string",
- "rateSource": "coinmarketcap",
- "rateSymbol": "string",
- "quantity": "1",
- "totalCostBasis": "1",
- "value": "123.321",
- "customFields": { }
}
]
}
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
name | ✅ | ✅ |
inactive | ✅ | ✅ |
description | ✅ | ✅ |
externalId | ✅ | ✅ |
AddressId | ✅ | ❌ |
Address.label | ✅ | ❌ |
Address.line1 | ✅ | ❌ |
Address.line2 | ✅ | ❌ |
Address.city | ✅ | ❌ |
Address.state | ✅ | ❌ |
Address.zip | ✅ | ❌ |
Address.country | ✅ | ❌ |
ParentId | ✅ | ❌ |
LocationId | ✅ | ❌ |
createdAt | ✅ | ✅ |
updatedAt | ✅ | ✅ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
status | string Enum: "active" "inactive" Results will return |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
order | string Default: "name:ASC" Order to return results in. ex "date:desc" |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "inactive": true,
- "name": "string",
- "externalId": "string",
- "description": "string",
- "LocationId": 0,
- "ParentId": 0,
- "AddressId": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "Location": {
- "id": "string",
- "name": "string",
- "currency": "string"
}, - "Parent": {
- "name": "string"
}, - "Address": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}
}
]
}
Create new Warehouse
JSON body to create new Warehouse
One of [LocationId, Location.id]
is required
name required | string |
LocationId required | integer Ref: Location._id |
inactive | boolean Default: false |
description | string |
externalId | string |
object | |
object | |
ParentId | integer "Ref: Warehouse._id" Cannot set self as parent |
object |
{- "inactive": false,
- "name": "string",
- "description": "string",
- "externalId": "string",
- "Address": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "LocationId": 0,
- "Location": {
- "id": 0
}, - "ParentId": 0,
- "Parent": {
- "name": 0
}
}
{- "_id": "string",
- "name": "string",
- "description": 0,
- "externalId": 0,
- "inactive": true,
- "AddressId": "string",
- "ParentId": "string",
- "LocationId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
The same filters as Search can be used here.
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
status | string Enum: "active" "inactive" Results will return |
LocationId | number Will include items from this Location and its children Filters on LocationId can further limit data. |
{- "count": "string",
- "estimate": true
}
{- "_id": 0,
- "inactive": true,
- "name": "string",
- "externalId": "string",
- "description": "string",
- "LocationId": 0,
- "ParentId": 0,
- "AddressId": 0,
- "Location": {
- "id": "string",
- "name": "string",
- "currency": "string"
}, - "Parent": {
- "name": "string"
}, - "Address": {
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "country": "string",
- "zip": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Updates a Warehouse
id required | string id value |
Cannot Update Location if there are linked stock adjustments
name | string |
description | string |
externalId | string |
inactive | boolean |
AddressId | integer Ref: Address._id |
object Address properties if provided will be added to the warehouse current address or new (if a different AddressId is provided) | |
LocationId | integer Ref: Location._id |
object | |
ParentId | integer "Ref: Warehouse._id" Cannot set self as parent |
object |
{- "name": "string",
- "description": "string",
- "externalId": "string",
- "inactive": true,
- "AddressId": 0,
- "Address": {
- "label": "string",
- "line1": "string",
- "line2": "string",
- "city": "string",
- "state": "string",
- "zip": "string",
- "country": "string"
}, - "LocationId": 0,
- "Location": {
- "id": "string"
}, - "ParentId": 0,
- "Parent": {
- "id": 0
}
}
{- "_id": "string",
- "name": "string",
- "description": 0,
- "externalId": 0,
- "inactive": true,
- "AddressId": "string",
- "ParentId": "string",
- "LocationId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Summary of Warehouse stocked Items
id required | string ID of Warehouse |
childWh | boolean Determine if the summary balances include stock from child warehouses |
[- {
- "iId": 0,
- "iName": "string",
- "iNumber": "string",
- "iSku": "string",
- "iDescription": "string",
- "qtyAvailable": "1",
- "wiMinValue": "1",
- "wiMaxValue": "1"
}
]
Field | Filterable | Sortable |
---|---|---|
_id | ✅ | ✅ |
WarehouseId | ✅ | ✅ |
ItemId | ✅ | ✅ |
minValue | ✅ | ✅ |
maxValue | ✅ | ✅ |
customFields | ✅ | ❌ |
Item | ❌ | ❌ |
Warehouse | ❌ | ❌ |
filter | string JSON Key:Value object to filter results on |
filterType | string Default: "all" Enum: "all" "any" Results will match "all" filters or just "any" of the passed filters |
order | string Default: "_id:ASC" Order to return results in. ex "date:desc" |
cursor | string Cursor key to page forwards from. Must be populated from the result of a previous query call. |
limit | integer [ 1 .. 1000 ] Default: 25 Maximum number of records to return. |
{- "hasNextPage": true,
- "cursor": "string",
- "data": [
- {
- "_id": 0,
- "WarehouseId": 0,
- "ItemId": 0,
- "minValue": "1",
- "maxValue": "1",
- "customFields": { },
- "Item": {
- "name": "string",
- "sku": "string",
- "number": 0,
- "description": "string"
}, - "Warehouse": {
- "name": "string"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
Create new Warehouse Item
JSON body to create new Warehouse Item
WarehouseId required | integer |
ItemId required | integer |
minValue required | number |
maxValue | number must be > 0 and > minValue |
customFields | object Key->Value hash of custom field names and values. Custom fields must be defined via the UI to be visible in the UI Custom field values must be unique for all Warehouse Items in the same Warehouse |
{- "WarehouseId": 0,
- "ItemId": 0,
- "minValue": 0,
- "maxValue": 0,
- "customFields": { }
}
{- "_id": "string",
- "WarehouseId": 0,
- "ItemId": 0,
- "minValue": "1",
- "maxValue": "1",
- "customFields": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Update one Warehouse Item
id required | string Warehouse Item Id |
JSON object containing key and values to update
price | number |
minValue | number |
maxValue | number must be > 0 and > minValue |
customFields | object Key->Value hash of custom field names and values. Custom fields must be defined via the UI to be visible in the UI Custom field values must be unique for all Warehouse Items in the same Warehouse |
{- "price": 0,
- "minValue": 0,
- "maxValue": 0,
- "customFields": { }
}
{- "_id": 0,
- "WarehouseId": 0,
- "ItemId": 0,
- "minValue": "string",
- "maxValue": "string",
- "customFields": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
{- "totalItems": 0,
- "data": [
- {
- "_id": 0,
- "tenantId": "string",
- "year": 0,
- "start": "2019-08-24",
- "end": "2019-08-24",
- "type": "string",
- "status": "open",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
The passed data will be the first day of the year created. Format, year(YYYY), month(MM), day(DD). Any subsequent years must have the same MM/DD as the previous years. Years must be created ±1 apart (no gaps between years)
JSON body to create new Year
year required | number |
month required | string |
type | string Value: "month" |
{- "year": 0,
- "month": "string",
- "type": "month"
}
{- "_id": 0,
- "tenantId": "string",
- "year": 0,
- "start": "string",
- "end": "string",
- "type": "month",
- "status": "open",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}