contractId
required |
string (uuid)
|
The contract that was billed.
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
customerId
required |
string (uuid)
|
The customer who owns the contract.
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
amountBilled
required |
number (double)
|
Amount charged.
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
success
required |
boolean
|
Whether the billing attempt was successful.
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
skipped
required |
boolean
|
Whether the contract was skipped (already billed).
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
transactionId
required |
string (uuid)
|
The transaction created in the payment engine.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
failureReason
required |
string
|
Failure reason if the billing attempt failed.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
processorResponseCode
required |
string
|
Payment processor response code.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
processorMessage
required |
string
|
Payment processor message.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
executedAt
required |
string (date-time)
|
When the billing execution started.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
completedAt
required |
string (date-time)
|
When the billing execution completed.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
persistenceFailed
required |
boolean
|
True when the contract was charged successfully (`success` = true,
`transactionId` populated) but the customer document update that
would have written the new `ExecutionHistory` record and advanced
`NextScheduledRun` failed at `SaveChangesAsync`. The charge stands;
the contract's local view of it is missing until the next billing cycle replays
the persistence step (deterministic `IdempotencyKey` prevents re-charge).
Null when the row's persistence either succeeded or never ran (skipped/failed).
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
persistenceFailureReason
required |
string
|
Short label naming the exception type that caused `persistenceFailed`
(e.g. `"DbUpdateException"`). Surfaced in the run detail UI so operators can
distinguish a transient concurrency conflict from a structural shape bug without leaving
the page. Null when `persistenceFailed` is null.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
preCreditAmount
required |
number (double)
|
The contract amount this cycle was priced at before any proration credit, pre-surcharge. Null
on items written before proration existed and on skips that resolved no amount.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
creditApplied
required |
number (double)
|
The proration credit taken off this charge, or null when none applied.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
chargedAmount
required |
number (double)
|
The contract amount submitted after the credit, pre-surcharge. Zero for a cycle the credit
covered in full; null on items written before proration existed and on skips.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
planPriceId
required |
string (uuid)
|
The plan price revision this contract was billed under, or null when the contract carries no
plan and on items written before the field existed.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
planPriceTotalAmount
required |
number (double)
|
What that revision charges per cycle, resolved from the merchant's plan catalog once for the
whole run. Null whenever `planPriceId` is, and also when the revision can no
longer be read: the plan it belonged to has since been deleted, or the catalog read failed.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
planPriceEffectiveFrom
required |
string (date-time)
|
When that revision started applying, in UTC. Null under the same conditions as
`planPriceTotalAmount`.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
|
skipCategory
required |
RecurringBillingSkipCategory
RecurringBillingSkipCategory |
Why the run did not charge this contract, or null when it did or tried to. Set for every
skipped item, and for a failed item whose consent state could not be read. Null on items
recorded before this field existed.
nullable
Values:
Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
AlreadyBilled |
The contract already has a successful charge for this scheduled run. Harmless: nothing is owed, and nothing needs attention. | MerchantIneligible |
The merchant that owns the contract is missing, deleted, or inactive. | InvalidContract |
The contract's own per-bill amount is zero or less, so there is nothing to charge. | PlanUnresolved |
The contract subscribes to a plan whose price could not be read, so the amount is unknown. | MissingConsent |
The stored payment method has no active stored-credential consent that permits a recurring charge. | ConsentLookupUnavailable |
The platform could not read the stored payment method's consent state. A platform fault rather than a configuration problem, recorded as a failed run item, and retried on the next run. |
|