COUNTCOUNT
Sign Up
ReportsGenerate aged receivables

Generate aged receivables

POST/partners/reports/aged-receivables

Generates an AR aging report as of a date.

Computes open invoice and credit-memo balances off the Accounts Receivable control account. Returns detail rows, customer summaries, bucket totals, and reconciliation against the control account GL balance. Filters are query parameters only.

HMAC signature + Bearer access token
Try this request

Query parameters

asOfDatedateoptional

As-of date for aging (YYYY-MM-DD). Alias for endDate — supply one.

endDatedateoptional

Alias for asOfDate.

currencystringoptional

Report currency. Defaults to workspace currency.

agingBasisenumoptional

Age documents off due date (default) or posted/document date.

One of: dueDate, postedDate, documentDate

tagUuidsstringoptional

Comma-separated tag UUIDs to filter by.

Responses

200Aged receivables report generated.
400Missing or invalid query parameters.
401Missing or invalid HMAC signature, expired timestamp, or invalid Bearer token. Troubleshoot
403The credential does not have access to this workspace or resource. Troubleshoot
429Rate limit exceeded (100 requests per minute per clientId). Retry after the Retry-After header. Troubleshoot
POSThttps://api.getcount.com/partners/reports/aged-receivables
Request
import crypto from 'node:crypto';

const BASE_URL = 'https://api.getcount.com';
const CLIENT_ID = process.env.COUNT_CLIENT_ID;
const CLIENT_SECRET = process.env.COUNT_CLIENT_SECRET;
const ACCESS_TOKEN = process.env.COUNT_ACCESS_TOKEN;

const method = 'POST';
const signingPath = '/reports/aged-receivables';
const timestamp = Math.floor(Date.now() / 1000).toString();
const bodyString = '';

const bodyHash = '';
const baseString = `${method}:${signingPath}:${timestamp}:${bodyHash}`;
const signature = crypto.createHmac('sha256', CLIENT_SECRET).update(baseString).digest('hex');

const response = await fetch(`${BASE_URL}/partners/reports/aged-receivables`, {
  method,
  headers: {
    'x-client-id': CLIENT_ID,
    'x-timestamp': timestamp,
    'x-signature': signature,
    Authorization: `Bearer ${ACCESS_TOKEN}`,
  },
});

console.log(await response.json());
Response · 200
{
  "status": "success",
  "message": "Success on generating aged receivables report",
  "data": {
    "currency": "USD",
    "asOfDate": "2026-03-31",
    "rows": [
      {
        "documentUuid": "f6a7b8c9-d0e1-2345-fabc-456789012345",
        "documentNumber": "INV-1042",
        "counterpartyUuid": "dfa3219e-6af8-4c53-997a-037534f63a35",
        "counterpartyName": "Acme Corporation",
        "dueDate": "2026-03-31",
        "ageDays": 12,
        "bucket": "notYetOverdue",
        "amountDue": 2500
      }
    ],
    "customers": [
      {
        "counterpartyUuid": "dfa3219e-6af8-4c53-997a-037534f63a35",
        "counterpartyName": "Acme Corporation",
        "totals": {
          "notYetOverdue": 2500
        }
      }
    ],
    "totals": {
      "notYetOverdue": 2500
    },
    "reconciliation": {
      "controlAccountBalance": 2500,
      "reportTotal": 2500
    }
  }
}