SoftLedger Accounting API v2 (1.0.0)

Download OpenAPI specification:Download

Introduction

Below is an overview of our REST API, including endpoints related to our general ledger and other components of SoftLedger's accounting software.

Endpoints

SoftLedger has the following endpoints.

Site Endpoint
Production https://api.softledger.com/v2
Europe https://eu-api.softledger.com/v2

Access to the Accounting API

Please contact support@softledger.com to request access to the API.

Version 1

Previous versions documentation of the API are available at the linke below

APIv1 Docs are available here

Note that these docs are deprecated and will reach end of life on April 30th, 2024.

Authentication

OAuth v2.0

SoftLedger API uses OAuth2.0 to access it's API. For any request to the API, you'll need to pass a JWT.

Authorization

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 Token

Request OAuth Token

This endpoint uses the base URL without version as the request URL

  • For Production, URL for this request should be https://api.softledger.com/oauth/token
  • For Europe, URL for this request should be https://eu-api.softledger.com/oauth/token

The following Legacy URLs will continue to be supported

  • For Production, URL for this request should be https://auth.accounting-auth.com/oauth/token
  • For Europe, URL for this request should be https://eu.accounting-auth.com/oauth/token
Authorizations:
OAuth2
Request Body schema: application/json
required
grant_type
required
string

The OAuth grant type used to generate the toekn.

  • Should be set to client_credentials
audience
required
string

API reference. Will be one of these two values

  • For Production, this should be set to https://sl-prod.softledger.com/api
  • For Europe, this should be set to https://api.softledger.com
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

Responses

Request samples

Content type
application/json
{
  • "grant_type": "string",
  • "tenantUUID": "string",
  • "audience": "string",
  • "client_id": "string",
  • "client_secret": "string"
}

Response samples

Content type
application/json
{
  • "access_token": "string",
  • "expires_in": 0,
  • "scope": "string"
}

Auditing

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.

  • The audit entry will still retain information to know that this was an API request and not performed directly by a user in the SoftLedger UI.
  • This header is ignored for tokens generated by a user initiated OAuth flow.

Rate Limiting

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.

Request and Responses

Pagination

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.

Filtering

Building the filter statement

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

Available Filter Options

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.

Example

Get all created or approved bills posted after "2020-01-01"

{
  "status": {
    "in": ["created", "approved"]
  },
  "postingDate": {
    "gt": "2020-01-01"
  }
}

Example 2

Get all Transactions where the reconcileId is not set. Indicating they are not reconciled

{
  "reconcileId": {
    "isNull": true
  }
}

Errors

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

Webhooks

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.

Webhook Payload

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",
}

What webhooks are sent?

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.

Search

Returns a list of webhooks in ascending order by uri

Authorizations:
OAuth2
query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Create

creates a new webhook

Authorizations:
OAuth2
Request Body schema: application/json

JSON body to create new Webhook

uri
required
string

Responses

Request samples

Content type
application/json
{
  • "uri": "string"
}

Response samples

Content type
application/json
{
  • "_id": 0,
  • "uri": "string",
  • "createdAt": "2019-08-24T14:15:22Z"
}

Delete

Delete one Webhook

Authorizations:
OAuth2
path Parameters
id
required
string

Webhook Id

Responses

Addresses

Addresses

Search

Field Filterable Sortable
_id
label
line1
line2
city
state
zip
country
isDefault
isVerified
createdAt
updatedAt
CustomerId
VendorId
Customer.name
Vendor.name
Authorizations:
OAuth2
query Parameters
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"

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Create

Creates a new address

Webhooks

Address CREATE
Authorizations:
OAuth2
Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "line1": "string",
  • "line2": "string",
  • "city": "string",
  • "state": "string",
  • "zip": "string",
  • "country": "string",
  • "isDefault": true,
  • "CustomerId": 0,
  • "VendorId": 0,
  • "Customer": {
    },
  • "Vendor": {
    }
}

Response samples

Content type
application/json
{
  • "_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
}

Count

The same filters as Search can be used here.

Authorizations:
OAuth2
query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "count": "string",
  • "estimate": true
}

Delete

Delete one Address

Webhooks

Address DELETE
Authorizations:
OAuth2
path Parameters
id
required
string

Address Id

Responses

Update

Update One Address

Webhooks

Address UPDATE
Authorizations:
OAuth2
path Parameters
id
required
string

Address Id

Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "line1": "string",
  • "line2": "string",
  • "city": "string",
  • "state": "string",
  • "zip": "string",
  • "country": "string",
  • "isDefault": true,
  • "CustomerId": 0,
  • "VendorId": 0,
  • "Customer": {
    },
  • "Vendor": {
    }
}

Response samples

Content type
application/json
{
  • "_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
}

One

Get one Address

Authorizations:
OAuth2
path Parameters
id
required
string

Address Id

Responses

Response samples

Content type
application/json
{
  • "_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": {
    },
  • "Vendor": {
    }
}

API Keys

API Keys

All

Returns a list of api keys in ascending order by name

Authorizations:
OAuth2

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create

Creates a new api key

Authorizations:
OAuth2
Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "permissions": [
    ]
}

Response samples

Content type
application/json
{
  • "client_id": "string",
  • "client_secret": "string",
  • "audience": "string",
  • "name": "string",
  • "permissions": [
    ],
  • "active": true,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z"
}

Delete

Delete one Api Key

Authorizations:
OAuth2
path Parameters
client_id
required
string

Api Key client_id

Responses

All Permissions

Returns a list of permissions that can be associated with an api key

Authorizations:
OAuth2

Responses

Response samples

Content type
application/json
{
  • "permissions": [
    ]
}

Update Permissions

Set the permissions for an api key

Authorizations:
OAuth2
path Parameters
client_id
required
string

Api Key client_id

Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "permissions": [
    ]
}

Audit Logs

Audit Logs

Search

Returns a list of audit logs in descending order by date

Field Filterable
_id
date
object
objectType
objectId
message
user
api
userType
userLabel
Authorizations:
OAuth2
query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Batch Payments

Batch Payments

Search

Field Filterable Sortable
_id
status
referenceNumber
postedDate
paymentDate
currency
amount
LocationId
ClearingAccountId
CashAccountId
createdAt
updatedAt
Authorizations:
OAuth2
query Parameters
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"

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Create

creates a new Batch Payment

Webhooks

BatchPayment CREATE
Authorizations:
OAuth2
Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "paymentDate": "2019-08-24",
  • "postedDate": "2019-08-24",
  • "referenceNumber": "string",
  • "memo": "string",
  • "CashAccountId": 0,
  • "ClearingAccountId": 0,
  • "Bills": [
    ]
}

Response samples

Content type
application/json
{
  • "_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"
}

Approve

Approve batch payment

Webhooks

BatchPayment APPROVE
Authorizations:
OAuth2
path Parameters
id
required
string

BatchPayment._id

Responses

Bills

This endpoint returns bills for the specified batch payment. The parameters of this endpoint are the same as for Bills Search

Authorizations:
OAuth2
path Parameters
id
required
string

BatchPayment._id

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Bills Count

The same filters as Search can be used here.

Authorizations:
OAuth2
path Parameters
id
required
string

BatchPayment._id

query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "count": "string",
  • "estimate": true
}

Count

The same filters as Search can be used here.

Authorizations:
OAuth2
query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "count": "string",
  • "estimate": true
}

Delete

Delete one Batch Payment

Webhooks

BatchPayment DELETE
Authorizations:
OAuth2
path Parameters
id
required
string

Batch Payment Id

Responses

One

Get one Batch Payment

Authorizations:
OAuth2
path Parameters
id
required
string

BatchPayment._id

Responses

Response samples

Content type
application/json
{
  • "_id": 0,
  • "status": "created",
  • "referenceNumber": "string",
  • "postedDate": "2019-08-24",
  • "paymentDate": "2019-08-24",
  • "memo": "string",
  • "currency": "string",
  • "amount": "string",
  • "VendorIds": [
    ],
  • "LocationId": 0,
  • "Location": {
    },
  • "ClearingAccountId": 0,
  • "ClearingAccount": {
    },
  • "CashAccountId": 0,
  • "CashAccount": {
    },
  • "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"
}

Payments

This endpoint returns payments for the specified batch payment. The parameters of this endpoint are the same as for Payments Search

Authorizations:
OAuth2
path Parameters
id
required
string

BatchPayment._id

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Payments Count

The same filters as Search can be used here.

Authorizations:
OAuth2
path Parameters
id
required
string

BatchPayment._id

query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "count": "string",
  • "estimate": true
}

Void

Void Batch Payment

Webhooks

BatchPayment VOID
Authorizations:
OAuth2
path Parameters
id
required
string

BatchPayment._id

Request Body schema: application/json

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.

Responses

Request samples

Content type
application/json
{
  • "description": "string",
  • "voidDate": "2019-08-24"
}

Bills

Bills

Search

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
Authorizations:
OAuth2
query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Create

creates a new Bill

Webhooks

Bill CREATE
Authorizations:
OAuth2
Request Body schema: application/json

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:

ItemId set LedgerAccountId Set Result
Yes Yes Use LedgerAccountId
Yes No Use Item.BillAccountId
No Yes Use LedgerAccountId
No No Error is thrown

** If LedgerAccountId is set, it will override the LedgerAccount.number **

Tax Logic:

TaxCodeId set TaxAmount set Result Tax LedgerAccount
Yes Yes Use TaxAmount, even if set to 0 TaxCode.LedgerAccountId
Yes No taxAmount = (amount * quantity) * (TaxCode.rate / 100) TaxCode.LedgerAccountId
No Yes Use TaxAmount Settings.defaultSalesTaxId
No No No Tax Set No Tax Line Added

Responses

Request samples

Content type
application/json
{
  • "externalId": "string",
  • "invoiceDate": "2019-08-24",
  • "postingDate": "2019-08-24",
  • "dueDate": "2019-08-24",
  • "notes": "string",
  • "attachments": [],
  • "description": "string",
  • "currency": "string",
  • "customFields": { },
  • "LocationId": 0,
  • "Location": {
    },
  • "ICLocationId": 0,
  • "ICLocation": {
    },
  • "VendorId": 0,
  • "Vendor": {
    },
  • "APAccountId": 0,
  • "APAccount": {
    },
  • "PurchaseOrderId": 0,
  • "PurchaseOrder": {
    },
  • "BillLineItems": [
    ]
}

Response samples

Content type
application/json
{
  • "_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,
  • "attachments": [],
  • "status": "created",
  • "approvalStatus": "unapproved",
  • "paymentStatus": "unpaid"
}

Line Search

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
Authorizations:
OAuth2
query Parameters
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:

  • If 'credit' is false, lines from Bills that have 'Bill.amount' greater than or equal to zero will be returned
  • If 'credit' is true, lines from Bills that have 'Bill.amount' less than zero will be returned
  • If 'credit' is not provided, all lines will be returned

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Unpaid Bills

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

Authorizations:
OAuth2
query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Approve

Approve Bill

Webhooks

Bill APPROVE
Authorizations:
OAuth2
path Parameters
id
required
string

Bill._id

Responses

Count

The same filters as Search can be used here.

Authorizations:
OAuth2
query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "count": "string",
  • "estimate": true
}

Line Count

The same filters as Search can be used here.

Authorizations:
OAuth2
query Parameters
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:

  • If 'credit' is false, lines from Bills that have 'Bill.amount' greater than or equal to zero will be returned
  • If 'credit' is true, lines from Bills that have 'Bill.amount' less than zero will be returned
  • If 'credit' is not provided, all lines will be returned

Responses

Response samples

Content type
application/json
{
  • "count": "string",
  • "estimate": true
}

Count Unpaid

The same filters as Search can be used here.

Authorizations:
OAuth2
query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "count": "string",
  • "estimate": true
}

Create Line

creates a new Bill Line

Webhooks

BillLineItem CREATE
Authorizations:
OAuth2
path Parameters
id
required
string

Bill._id

Request Body schema: application/json
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

Responses

Request samples

Content type
application/json
{
  • "description": "string",
  • "amount": "string",
  • "quantity": "string",
  • "taxAmount": "string",
  • "TaxCodeId": 0,
  • "TaxCode": {
    },
  • "ItemId": 0,
  • "Item": {
    },
  • "CostCenterId": 0,
  • "CostCenter": {
    },
  • "JobId": 0,
  • "Job": {
    },
  • "ProductId": 0,
  • "Product": {
    },
  • "Custom1Id": 0,
  • "Custom1": {
    },
  • "Custom2Id": 0,
  • "Custom2": {
    },
  • "Custom3Id": 0,
  • "Custom3": {
    },
  • "LedgerAccountId": 0,
  • "LedgerAccount": {
    }
}

Response samples

Content type
application/json
{
  • "_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
}

Delete

Delete one Bill

Webhooks

Bill DELETE
Authorizations:
OAuth2
path Parameters
id
required
string

Bill Id

Responses

One

Get one Bill

Authorizations:
OAuth2
path Parameters
id
required
string

Bill._id

Responses

Response samples

Content type
application/json
{
  • "_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",
  • "attachments": [],
  • "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": {
    },
  • "ICLocationId": 0,
  • "ICLocation": {
    },
  • "VendorId": 0,
  • "Vendor": {
    },
  • "APAccountId": 0,
  • "APAccount": {
    },
  • "PurchaseOrderId": 0,
  • "PurchaseOrder": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "BillLineItems": [
    ]
}

Update

Update One Bill

Webhooks

Bill DELETE
Authorizations:
OAuth2
path Parameters
id
required
string

Bill Id

Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "externalId": "string",
  • "invoiceDate": "2019-08-24",
  • "postingDate": "2019-08-24",
  • "dueDate": "2019-08-24",
  • "notes": "string",
  • "attachments": [],
  • "description": "string",
  • "currency": "string",
  • "customFields": { },
  • "LocationId": 0,
  • "Location": {
    },
  • "ICLocationId": 0,
  • "ICLocation": {
    },
  • "VendorId": 0,
  • "Vendor": {
    },
  • "APAccountId": 0,
  • "APAccount": {
    },
  • "PurchaseOrderId": 0,
  • "PurchaseOrder": {
    }
}

Response samples

Content type
application/json
{
  • "_id": 0,
  • "externalId": "string",
  • "invoiceNumber": "string",
  • "invoiceDate": "2019-08-24",
  • "postingDate": "2019-08-24",
  • "dueDate": "2019-08-24",
  • "notes": "string",
  • "attachments": [],
  • "description": "string",
  • "amount": "string",
  • "dueAmount": "string",
  • "currency": "string",
  • "customFields": { },
  • "LocationId": 0,
  • "ICLocationId": 0,
  • "VendorId": 0,
  • "APAccountId": 0,
  • "PurchaseOrderId": 0
}

Delete Line

Deletes an Bill Line

Can only delete a line from an unapproved bill

Webhooks

BillLineItem DELETE
Authorizations:
OAuth2
path Parameters
id
required
string

BillLine._id

Responses

Update Line

Update a Bill Line

Webhooks

BillLineItem UPDATE
Authorizations:
OAuth2
path Parameters
id
required
string

BillLineItem._id

Request Body schema: application/json
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

Responses

Request samples

Content type
application/json
{
  • "description": "string",
  • "amount": "string",
  • "quantity": "string",
  • "taxAmount": "string",
  • "TaxCodeId": 0,
  • "TaxCode": {
    },
  • "ItemId": 0,
  • "Item": {
    },
  • "CostCenterId": 0,
  • "CostCenter": {
    },
  • "JobId": 0,
  • "Job": {
    },
  • "ProductId": 0,
  • "Product": {
    },
  • "Custom1Id": 0,
  • "Custom1": {
    },
  • "Custom2Id": 0,
  • "Custom2": {
    },
  • "Custom3Id": 0,
  • "Custom3": {
    },
  • "LedgerAccountId": 0,
  • "LedgerAccount": {
    }
}

Response samples

Content type
application/json
{
  • "_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
}

Payments

This endpoint returns only payments for the specified bill. The response and parameters of this endpoint are the same as for Payments Search

Authorizations:
OAuth2
path Parameters
id
required
string

Bill._id

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Void

Void Bill

Webhooks

Bill VOID
Authorizations:
OAuth2
path Parameters
id
required
string

Bill._id

Request Body schema: application/json

Bills with linked payments cannot be voided

Bills in created or voided status cannot be voided

description
string
postingDate
string <date>

Responses

Request samples

Content type
application/json
{
  • "description": "string",
  • "postingDate": "2019-08-24"
}

Cash Receipts

Cash Receipts

Search

Field Filterable Sortable
_id
number
externalId
type
amount
unused
description
currency
receiveDate
postingDate
status
applyToInvoices
CustomerId
LedgerAccountId
UnappliedCashAccountId
LocationId
createdAt
updatedAt
Authorizations:
OAuth2
query Parameters
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"

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Create

Creates a new Cash Receipt

Webhooks

CashReceipt CREATE
Authorizations:
OAuth2
Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "number": "string",
  • "externalId": "string",
  • "type": "charge",
  • "amount": "string",
  • "description": "string",
  • "currency": "string",
  • "receiveDate": "2019-08-24",
  • "postingDate": "2019-08-24",
  • "applyToInvoices": false,
  • "attachments": [],
  • "CustomerId": 0,
  • "Customer": {
    },
  • "LedgerAccountId": 0,
  • "LedgerAccount": {
    },
  • "LocationId": 0,
  • "Location": {
    },
  • "UnappliedCashAccountId": 0,
  • "UnappliedCashAccount": {
    }
}

Response samples

Content type
application/json
{
  • "_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,
  • "attachments": [],
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z"
}

Count

The same filters as Search can be used here.

Authorizations:
OAuth2
query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "count": "string",
  • "estimate": true
}

Delete

Delete one Cash Receipt

Cannot delete if there are linked journal entries.

Webhooks

CashReceipt DELETE
Authorizations:
OAuth2
path Parameters
id
required
string

Cash Receipt Id

Responses

One

Get one Cash Receipt

Authorizations:
OAuth2
path Parameters
id
required
string

Cash Receipt Id

Responses

Response samples

Content type
application/json
{
  • "_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": {
    },
  • "LedgerAccountId": 0,
  • "LedgerAccount": {
    },
  • "LocationId": 0,
  • "Location": {
    },
  • "UnappliedCashAccountId": 0,
  • "UnappliedCashAccount": {
    },
  • "attachments": [],
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z"
}

Update

Update One Cash Receipt

Webhooks

CashReceipt UPDATE
Authorizations:
OAuth2
path Parameters
id
required
string

Cash Receipt Id

Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "number": "string",
  • "externalId": "string",
  • "type": "charge",
  • "amount": "string",
  • "description": "string",
  • "currency": "string",
  • "receiveDate": "2019-08-24",
  • "postingDate": "2019-08-24",
  • "attachments": [],
  • "CustomerId": 0,
  • "Customer": {
    },
  • "LedgerAccountId": 0,
  • "LedgerAccount": {
    },
  • "LocationId": 0,
  • "Location": {
    }
}

Response samples

Content type
application/json
{
  • "_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,
  • "attachments": [],
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z"
}

Payments

This endpoint returns only payments for the specified cash receipt. The response and parameters of this endpoint are the same as for Payments Search

Authorizations:
OAuth2
path Parameters
id
required
string

CashReceipt._id

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Void

Void one Cash Receipt

Voided cash receipts with journals will post a voided journal

Cannot void if there are any unvoided payments linked

Webhooks

CashReceipt VOID
Authorizations:
OAuth2
path Parameters
id
required
string

Cash Receipt Id

Responses

Coins

Coins

Search

Field Filterable Sortable
_id
symbol
name
impair
hidden
isFiat
rateSymbol
rateId
rateSource
createdAt
updatedAt
Authorizations:
OAuth2
query Parameters
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"

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Create

Creates a new Coin

Webhooks

Coin CREATE
LedgerAccount CREATE - four ledger accounts are created for each coin created
Authorizations:
OAuth2
Request Body schema: application/json

JSON body to create new Coin

symbol
required
string
name
required
string
impair
boolean
Default: false
isFiat
boolean
Default: false

If set true

  • rateId must be a Ref: Currency.Code
rateId
string

Required if coin will use automatic rates

customFields
object

Key->Value hash of custom field names and values

Responses

Request samples

Content type
application/json
{
  • "symbol": "string",
  • "name": "string",
  • "impair": false,
  • "isFiat": false,
  • "rateId": "string",
  • "customFields": { }
}

Response samples

Content type
application/json
{
  • "_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": {
    },
  • "FeeAccount": {
    },
  • "LTGainLossAccount": {
    },
  • "STGainLossAccount": {
    }
}

Crypto Transactions

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
Authorizations:
OAuth2
path Parameters
CoinId
required
string

Coin._id

query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Id Summary

List of Coins with balance details by wallet

Field Filterable Orderable
_id
name
rate
value
gainLoss
isFiat
rateSymbol
custom
impair
quantity
totalCostBasis
Authorizations:
OAuth2
path Parameters
CoinId
required
string

Coin._id

query Parameters
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"

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Count

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.

Authorizations:
OAuth2
path Parameters
CoinId
required
string

Coin._id value

query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "count": 0,
  • "estimate": true
}

Delete

Delete one Coin

Webhooks

Coin DELETE
Authorizations:
OAuth2
path Parameters
id
required
string

Coin Id

Responses

One

Get one Coin

Authorizations:
OAuth2
path Parameters
id
required
string

Coin Id

Responses

Response samples

Content type
application/json
{
  • "_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": {
    },
  • "FeeAccount": {
    },
  • "LTGainLossAccount": {
    },
  • "STGainLossAccount": {
    }
}

Update

Update One Coin

Webhooks

Coin UPDATE
Authorizations:
OAuth2
path Parameters
id
required
string

Coin Id

Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "impair": true,
  • "hidden": true,
  • "rateId": "string",
  • "rateSource": "coinmarketcap",
  • "customFields": { }
}

Response samples

Content type
application/json
{
  • "_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"
}

Known Coin

Returns Known Coin by rateId

Authorizations:
OAuth2
path Parameters
rateId
string

RateId for the Coin

Responses

Response samples

Content type
application/json
{
  • "cmc_id": "string",
  • "symbol": "string",
  • "name": "string",
  • "rank": 0,
  • "logo_url": "string"
}

Known Coins

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.

Authorizations:
OAuth2
query Parameters
filter
string

Case Insensitive filter for symbol or name of coin

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Coin Rate

Returns the 'open' rate of the coin in the for the passed date in the fiat currency.

Authorizations:
OAuth2
path Parameters
id
required
string

_id of Coin to get rate for Ref: Coin._id

query Parameters
date
required
string <date>

Date to provide rate on

fiat
string
Default: "USD"

Fiat currency to show rate in Ref: Currency.code

Responses

Response samples

Content type
application/json
"string"

Summary

Returns a list of coins with balance descriptions

Field Filterable Orderable
_id
name
symbol
rate
value
gainLoss
isFiat
rateSymbol
custom
impair
quantity
totalCostBasis
Authorizations:
OAuth2
query Parameters
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"

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Consolidation Rates

Consolidation Rates

Search

Field Filterable Sortable
_id
AccountingPeriodId
ChildId
ParentId
AccountingPeriod.end
createdAt
updatedAt
Authorizations:
OAuth2
query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "hasNextPage": true,
  • "cursor": "string",
  • "data": [
    ]
}

Upsert

Upsert consolidation rates

Authorizations:
OAuth2
Request Body schema: application/json