Skip to main content
GET
/
api
/
invoices
/
outreach
Get collections outreach dashboard data
curl --request GET \
  --url https://dev.exante.app/api/invoices/outreach \
  --header 'Authorization: Bearer <token>'
{
  "status": "success",
  "status_code": 200,
  "message": "Success",
  "data": {
    "items": [
      {
        "uid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "invoice_number": "<string>",
        "target_party_uid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "counterparty_name": "<string>",
        "amount_due_cents": 123,
        "currency": "<string>",
        "status": "<string>",
        "issue_date": "2023-11-07T05:31:56Z",
        "due_date": "2023-11-07T05:31:56Z",
        "paid_date": "2023-11-07T05:31:56Z",
        "contact_summary": {
          "total": 123,
          "by_agent": 123,
          "by_user": 123
        },
        "email_status": {
          "sent": 123,
          "bounced": 123,
          "failed": 123,
          "pending": 123,
          "scheduled": 123
        },
        "severity": "ok",
        "last_contact_at": "2023-11-07T05:31:56Z",
        "next_scheduled_at": "2023-11-07T05:31:56Z",
        "latest_email": {
          "status": "<string>",
          "delivery_status": "<string>",
          "sent_at": "2023-11-07T05:31:56Z",
          "planned_send_at": "2023-11-07T05:31:56Z"
        }
      }
    ],
    "summary": {
      "invoices_being_worked": 123,
      "overdue_invoices_with_no_contact": 123,
      "emails_bounced_last_7_days": 123,
      "delivery_success_rate_pct_last_30_days": 123
    },
    "total_rows": 123,
    "_meta": {},
    "_links": {}
  }
}
Returns the collections outreach dashboard payload in one request:
  • summary metrics for health at a glance
  • paginated invoice outreach rows
  • per-invoice contact and deliverability aggregates
For constrained filter UIs (dropdowns, sliders, type-ahead), use:
  • GET /api/invoices/outreach/filter-options
This endpoint returns available values for statuses, users, agents, customers, numeric ranges, date ranges, and sort fields based on the current filter context.

Organization scoping

  • If organization_uid is omitted, the API uses your default organization.
  • If organization_uid is invalid, the API returns 400.
  • If you are not a member of the requested organization, the API returns 403.

Row inclusion behavior

The table can include invoices that have not yet been contacted.
  • For these rows, contact_summary.total is 0.
  • last_contact_at is null.
  • next_scheduled_at is null unless there is a future pending email.
The summary KPI invoices_being_worked still counts only invoices with at least one outbound email.

Filter behavior

Some filters are existence filters. They decide which invoices appear, but invoice-level aggregates still include all outbound emails for matching invoices.
  • initiator_type
  • agent_uid
  • agent_name
  • user_uid
  • user_email
  • outbound_email_status
  • email_delivery_status
  • sent_at_*
  • planned_send_at_*
email_status is a post-aggregation filter and is applied using grouped bucket counts. Other supported filters include:
  • invoice identifiers and customer filters (invoice_uid, invoice_number, target_party_uid, customer_uids)
  • date windows (issue_date_*, due_date_*, paid_date_*, sent_at_*, planned_send_at_*, last_contact_at_*)
  • aggregate ranges (amount_due_from, amount_due_to, contacts_min, contacts_max)
Accepted aliases used by frontend routes:
  • customers and target_party_uids map to customer_uids
  • agent_id maps to agent_uid
  • user_id maps to user_uid
  • planned_sent_at_from/planned_sent_at_to map to planned_send_at_from/planned_send_at_to
  • last_contact_date_from/last_contact_date_to map to last_contact_at_from/last_contact_at_to

Sorting

Supported sort fields:
  • due_date (default)
  • issue_date
  • paid_date
  • amount_due
  • invoice_number
  • status
  • last_contact_at
  • next_scheduled_at
  • total_contacts
Null values sort last.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

organization_uid
string<uuid>
invoice_uid
string<uuid>
invoice_number
string
target_party_uid
string<uuid>
customer_uids
string

Comma-separated customer/party UIDs

customers
string

Alias for customer_uids

target_party_uids
string

Alias for customer_uids

invoice_status
string

Comma-separated invoice statuses

issue_date_from
string<date-time>
issue_date_to
string<date-time>
due_date_from
string<date-time>
due_date_to
string<date-time>
paid_date_from
string<date-time>
paid_date_to
string<date-time>
amount_due_from
integer
Required range: x >= 0
amount_due_to
integer
Required range: x >= 0
initiator_type
enum<string>
Available options:
AGENT,
USER
agent_uid
string<uuid>
agent_id
string<uuid>

Alias for agent_uid

agent_name
string

Partial match against agent name

user_uid
string<uuid>
user_id
string<uuid>

Alias for user_uid

user_email
string

Partial match against user email

email_delivery_status
string
outbound_email_status
string

Comma-separated outbound email statuses

email_status
string

Comma-separated values from all_delivered,has_bounces,has_failures,has_scheduled

sent_at_from
string<date-time>
sent_at_to
string<date-time>
planned_send_at_from
string<date-time>
planned_send_at_to
string<date-time>
planned_sent_at_from
string<date-time>

Alias for planned_send_at_from

planned_sent_at_to
string<date-time>

Alias for planned_send_at_to

contacts_min
integer
Required range: x >= 0
contacts_max
integer
Required range: x >= 0
last_contact_at_from
string<date-time>
last_contact_at_to
string<date-time>
last_contact_date_from
string<date-time>

Alias for last_contact_at_from

last_contact_date_to
string<date-time>

Alias for last_contact_at_to

sort
string

Sort fields such as +due_date,-last_contact_at,+amount_due,+total_contacts

page
integer
default:1
Required range: x >= 1
per_page
integer
default:25
Required range: 1 <= x <= 100

Response

Outreach dashboard data

status
string
Example:

"success"

status_code
integer
Example:

200

message
string
Example:

"Success"

data
object