Accounts payable report
Ages the unpaid vendor bill line items into buckets by how far each one is from its due date. One row is one vendor, property or portfolio depending on groupBy, and each column is an age bucket holding an amount and a bill count.
Authorization
AuthorizationstringrequiredQuery parameters
asOfDatestring · dateThe date to age the bills against, included. Read in the company's timezone. Leave it out to age against everything recorded.
groupByenum<string>What one row stands for: everything on one line, one line per vendor, per property, or per portfolio.
vendorIdsstring[]Only include bills owed to these vendors. Repeat the parameter once per id.
boundariesDaysinteger[]Where the age buckets break, in days. Repeat the parameter once per boundary. Leave it out for the default of 7, 15, 30 and 60.
includeOverduebooleanWhether to add the mirrored overdue buckets for bills already past their due date.
companyBillsbooleanFilter on who pays. Leave it out to include everything, set it true for bills the management company pays, false for bills the owner pays.
portfolioIdsstring[]Narrow the report to these portfolios. Repeat the parameter once per id. An id that does not exist returns 404.
propertyIdsstring[]Narrow the report to these properties. Repeat the parameter once per id. An id that does not exist returns 404.
Response
200 · The aged payables.
groupHeadersobject[]The age buckets in order, followed by a total column. Their id values are the keys used inside every columns and grandTotals object.
linesobject[]One row per group.
grandTotalsobjectThe same figures added across every row, keyed by bucket key.
vendorsobject[]Every vendor named by a row.
propertiesobject[]Every property named by a row.
portfoliosobject[]Every portfolio named by a row.
401 · The access token is missing, expired, or not valid for this company.
404 · A portfolio, property or owner id in the query does not exist in the caller's company.
portfolioIds and propertyIds are resolved down to one set of properties and narrow each other rather than adding up. This report does not take ownerIds, unlike most of the others here.
groupHeaders names the age buckets in order, then adds a total column at the end. Every amount object in the report, on a row and in grandTotals, is keyed by those bucket keys. Each value is a pair: amount is money still owed, billCount is how many bills make it up.
boundariesDays moves the bucket edges. It defaults to 7, 15, 30, 60, which with includeOverdue left on produces these twelve columns:
| Bucket key | Heading | Which bills land in it |
|---|---|---|
od_>60 | Overdue >60 Days | More than 60 days past due |
od_31-60 | Overdue 31-60 Days | 31 to 60 days past due |
od_16-30 | Overdue 16-30 Days | 16 to 30 days past due |
od_8-15 | Overdue 8-15 Days | 8 to 15 days past due |
od_1-7 | Overdue 1-7 Days | 1 to 7 days past due |
today | Due Today | Due on the as-of date itself |
1-7 | 1-7 Days | Falling due in the next 1 to 7 days |
8-15 | 8-15 Days | Falling due in 8 to 15 days |
16-30 | 16-30 Days | Falling due in 16 to 30 days |
31-60 | 31-60 Days | Falling due in 31 to 60 days |
>60 | >60 Days | Falling due more than 60 days out |
total | Total | The row's whole outstanding balance |
Sending your own boundariesDays rebuilds the keys the same way. Boundaries of 30 and 90 give od_>90, od_31-90, od_1-30, today, 1-30, 31-90, >90 and total. Turning includeOverdue off drops every od_ bucket.
A vendor bill's line items are aged one by one, and only those with an outstanding amount are counted. billCount counts the distinct bills contributing to a bucket, so one bill split across two buckets is counted in both.