Tracking (v1)

Returns the full, vendor-agnostic scan history for a tracked item. This endpoint is the system of record for tracking events across every shipping vendor (USPS First Class, presort vendors, and future carriers) — the response shape is identical regardless of which carrier produced the scans.

Unlike the legacy Payment Tracking endpoint (which is hard-wired to payments and reflects a single carrier's passthrough), this endpoint is entity-agnostic: pass the kind of item you want to track with the entity_type parameter.

Tracking is keyed to the physical mailpiece, so when one piece fulfils several items (for example, every payment in a bundle), each item returns the same single, de-duplicated event timeline.

You may request a single item or up to 1,000 items at once by passing an array of IDs, and narrow the result set by status. You can also omit id entirely to page through every tracking record you own for that entity_type (returned newest tracking first). Results are paginated (up to 1,000 per page). Access is scoped to your OAuth credentials: you can only retrieve tracking for items owned by your account — IDs outside your scope are silently omitted from the response.

Parameters
Parameter Type Required Default Description
entity_type String No payment The kind of item to track. Supported values: payment, document, payment_bundle. A payment_bundle is yours when it contains at least one payment owned by your account.
id Int | Int[] No N/A One item ID or an array of item IDs (e.g. payment, document, or bundle IDs) found in your Checkissuing dashboard or returned by other API calls. Omit this parameter to return every tracking record you own for the given entity_type (paginated, newest tracking first). When supplied, a maximum of 1,000 IDs may be requested per call; requesting more returns an error.
tracking_status String | String[] No N/A Optional filter. One status or an array of statuses; only items whose current status matches are returned. Each value must be one of pending, in_transit, out_for_delivery, delivered, exception, cancelled, unknown. An invalid value returns an error.
per_page Int No 1000 Number of items per page, between 1 and 1,000. Values above 1,000 are clamped to 1,000.
page Int No 1 1-based page number to retrieve.
Response Fields
Field Description
status 1 on success, 0 when errors are present.
errors Array of error strings (empty on success).
error_message The error strings joined into a single message (empty on success).
entity_type Echo of the requested entity type.
pagination Page metadata: page, per_page, total (total matching items across all pages), and total_pages.
tracking[] An array of tracked items (one entry per matching, owned item with tracking). Each entry carries its own id plus the fields below.
tracking[].id The item ID this tracking entry belongs to.
tracking[].tracking_number The carrier tracking number / barcode (e.g. the IMb for USPS First Class). May be null.
tracking[].tracking_carrier Carrier code (e.g. USPS).
tracking[].tracking_status Current status: pending, in_transit, out_for_delivery, delivered, exception, cancelled, unknown.
tracking[].events[] Chronological scan timeline (oldest first). Each event includes event_phase, event_label, occurred_at, location, facility_code, vendor, raw_event_code, stop_the_clock, source, confidence (confirmed or unconfirmed), and anticipated_delivery_date / estimated_delivery_date.
Sample Response
Errors

Validation problems are returned with status: 0 and a populated errors array (and error_message), while tracking is an empty array. Possible errors include:

  • Invalid entity_type — the entity_type is not a supported value.
  • Too many ids — more than 1,000 IDs were supplied in a single call.
  • Invalid tracking_status — one or more tracking_status values are not recognized.

A request with valid parameters but no matching, owned items still returns status: 1 with an empty tracking array and pagination.total: 0. A missing or invalid OAuth token returns HTTP 403 with Access Denied.

Batch Request Example

Request tracking for several payments at once, limited to in-transit and delivered items:

{
  "entity_type": "payment",
  "id": [12345, 12346, 12347],
  "tracking_status": ["in_transit", "delivered"],
  "per_page": 1000,
  "page": 1
}