Dates & Timestamps
The PayConnect API uses a single, consistent convention for dates across customers, invoices, and subscriptions.
Responses: ISO-8601 UTC strings
Every date field in a response is an ISO-8601 UTC date-time string, for example:
{
"dueDate": "2026-04-01T12:00:00.000Z",
"createdAt": "2026-03-15T14:37:05.123Z",
"nextBillingDate": "2026-05-01T12:00:00.000Z"
}
This matches the convention transaction timestamps (processedAt, createdAt)
have always used. Parse them with any standard date library
(new Date(value), Date.parse(value), datetime.fromisoformat(...), etc.).
Fields affected include, across all resources: invoiceDate, dueDate,
createdAt, updatedAt, nextBillingDate, firstBillingDate,
currentPeriodStart, currentPeriodEnd, lastBillingDate, trialStart,
trialEnd, endDate, cancellationDate, and delayedPostDate.
Requests: date-only or full ISO-8601
Date inputs accept either form:
| Input | Interpreted as |
|---|---|
Date-only "2026-04-01" | Noon UTC of that day — 2026-04-01T12:00:00.000Z |
Full ISO-8601 "2026-04-01T09:30:00.000Z" | That exact instant |
Epoch milliseconds 1743508800000 (where a field documents it) | That exact instant |
Why noon UTC for date-only values
A date-only value such as "2026-04-01" is anchored to noon UTC, not
midnight. Midnight UTC renders as the previous calendar day in any negative
(US) timezone, so an invoice due 2026-04-01 could display as 03/31.
Anchoring to noon keeps the rendered calendar day stable across every US
timezone. Invoices and subscriptions use the same rule, so identical date-only
input produces the same instant on both.
Date filters (search)
Search filters accept the same input forms. For an eq filter on a date field
with a date-only or date-string value, the match is the whole UTC calendar
day that contains it (a date-only value bounds its literal day; a datetime
value bounds the UTC day of that instant). Supplying an explicit epoch-ms
number with eq keeps exact-millisecond matching.
Provider passthrough fields (exceptions)
A few fields mirror the payment provider's own representation verbatim and are not normalized:
- Saved payment method / account vault
created_tsandmodified_tsare epoch seconds (not milliseconds), passed through from Fortis. - Card
exp_dateisMMYY(e.g."1226"for December 2026).
These are documented on the individual payment-method endpoints; everywhere else, dates follow the ISO-8601 convention above.