Review outstanding collections

View as Markdown

This guide walks through identifying unpaid invoices, sending payment reminders, and projecting future collections using the Tabs API. Tabs exposes invoice status and balance data so your AR team can spot overdue accounts and act on them—without leaving the API.

By the end of this guide, you can retrieve a filtered list of open invoices, trigger payment reminders for overdue customers, and view a cash forecast across your book.

Step 1: Fetch open invoices

Filter the invoices list by status to see all invoices with a balance outstanding. Invoices in the SENT status have been delivered to the customer and have not been paid at all. Invoices in the PARTIALLY_PAID status have received one or more payments but still carry a remaining balance.

Fetch invoices in the SENT status:

$curl "https://integrators.prod.api.tabsplatform.com/v3/invoices?filter=status:eq:SENT&page=1&limit=50" \
> -H "Authorization: YOUR_API_KEY"

Fetch invoices in the PARTIALLY_PAID status:

$curl "https://integrators.prod.api.tabsplatform.com/v3/invoices?filter=status:eq:PARTIALLY_PAID&page=1&limit=50" \
> -H "Authorization: YOUR_API_KEY"

Tabs returns a paginated list of invoices:

1{
2 "payload": {
3 "data": [
4 {
5 "id": "inv_ghi012",
6 "customerId": "cust_abc123",
7 "invoiceNumber": "INV-1042",
8 "status": "SENT",
9 "issueDate": "2026-04-01",
10 "dueDate": "2026-05-01",
11 "total": 12500.00,
12 "balanceRemaining": 12500.00
13 }
14 ],
15 "limit": 50,
16 "totalItems": 1,
17 "currentPage": 1
18 },
19 "success": true,
20 "message": "Invoices retrieved successfully",
21 "error": null
22}

Key fields for collections review:

FieldDescription
balanceRemainingThe amount still owed on the invoice
dueDateThe date payment is due
statusSENT (unpaid) or PARTIALLY_PAID (partial balance remaining)
paidOnSet when the invoice is fully paid—null on open invoices

Use page and limit to paginate large result sets. The default page size is 50; the maximum is 500.

Step 2: Identify overdue invoices

An invoice is overdue when its dueDate has passed and balanceRemaining is greater than zero. Filter by dueDate to scope the list to accounts that are past due:

$curl "https://integrators.prod.api.tabsplatform.com/v3/invoices?filter=status:eq:SENT,dueDate:lte:2026-05-25&page=1&limit=50" \
> -H "Authorization: YOUR_API_KEY"

Replace 2026-05-25 with today’s date to return all open invoices whose due date has passed.

Calculate days overdue per invoice from dueDate and balanceRemaining. There is no built-in aging bucket endpoint—both fields are present on every Invoice response.

Scope results to a single customer using a customerId filter:

filter=customerId:eq:{customerId},status:eq:SENT,dueDate:lte:2026-05-25

Step 3: Send a payment reminder

Once you’ve identified an overdue invoice, send a reminder email to the customer’s billing contact:

$curl -X POST "https://integrators.prod.api.tabsplatform.com/v3/customers/{customerId}/invoices/{invoiceId}/actions" \
> -H "Authorization: YOUR_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "action": "SEND_REMINDER_EMAIL",
> "sendReminderEmail": true
> }'

Tabs emails the billing contact on the Customer record and returns the updated Invoice object.

To automate reminders based on a configurable schedule rather than triggering them manually, see Automate reminders with dunning below.

To write off an uncollectible invoice, create and apply a credit memo.

Automate reminders with dunning

Tabs can send payment reminders automatically on a configurable schedule without requiring manual API calls.

Dunning schedules are configured per merchant or per customer in the Tabs app under Settings → Customers → Dunning. A schedule consists of:

  • Fixed steps—reminders sent a set number of days before or after the invoice due date (for example, 7 days before, 1 day after, 14 days after)
  • Recurring step—a repeating reminder that fires every N days after the last reminder, used for persistent follow-up on aging accounts

Customer-level schedules override the merchant-level default, so you can configure more aggressive or more lenient cadences for individual accounts.

Dunning pauses automatically when an invoice moves to the PENDING status—typically while awaiting bank confirmation of a Stripe payment—and stops when the invoice is marked as PAID or VOID. If a match is reversed in Plaid, dunning resumes.

Get a cash forecast

The cash forecasting report shows due and paid amounts by period across your customer base, giving your AR team a forward view of expected collections.

$curl "https://integrators.prod.api.tabsplatform.com/v3/reports/cash-forecasting" \
> -H "Authorization: YOUR_API_KEY"

Tabs returns a list of customers with their projected cash activity by period:

1{
2 "payload": {
3 "data": [
4 {
5 "customerId": "cust_abc123",
6 "customerName": "Acme Corp",
7 "cashForecastingPerPeriod": [
8 {
9 "period": "2026-05",
10 "dueTotal": 12500.00,
11 "paidTotal": 0.00,
12 "total": 12500.00
13 },
14 {
15 "period": "2026-06",
16 "dueTotal": 8000.00,
17 "paidTotal": 0.00,
18 "total": 8000.00
19 }
20 ]
21 }
22 ],
23 "limit": 50,
24 "totalItems": 1,
25 "currentPage": 1
26 },
27 "success": true,
28 "message": "Cash forecasting report retrieved successfully",
29 "error": null
30}
FieldDescription
periodTime period in YYYY-MM format
dueTotalTotal invoiced amount due in the period
paidTotalAmount already collected in the period
totalSum of dueTotal and paidTotal

Past-due amounts roll into the current period rather than remaining in their original period.

Next steps