Skip to content

Essence Payment & Billing API ​

All OpenAPI documents

Version v1.0 · OpenAPI 3.0.1 · 368 operations · Download the JSON document

Production-Ready Billing & Subscription Management API. All endpoints require a Bearer token issued by the Essence Auth service (WS-D 5.1 foundation adoption), except /api/v1/webhooks/* which uses signature verification.

Generated from the Billing service's code at build time (api-specs/generated/Billing/Essence.Payment.Billing.Api.json) and drift-checked in CI. It describes what the code registers, which is not the same as what any one deployment has routed.

AccessToWorkReimbursements

POST/api/v1/orgs/{organizationId}/access-to-work/awards

Takes delivery of an approved award, or of its withdrawal, from the scheme.

<b>Service authority only.</b> This is the front door through which the amount a reimbursement may be paid up to enters EPIC 14. Exposing it to an employer's own token would let them assert their own award — the exact assertion the ceiling exists to make un-assertable. Idempotent on the scheme's award id.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/orgs/{organizationId}/access-to-work/awards/{adjustmentId}

Reads the award funding one adjustment, or 404 when the scheme has issued none.

Returned to the employer so their console can show the ceiling it is claiming against without a round-trip to the scheme. Carries the coarse funding category and nothing finer — that category is the whole of what the employer is permitted to learn about what was funded.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
adjustmentIdpathstringyes—

Request body

No request body.

Responses

GET/api/v1/orgs/{organizationId}/access-to-work/reimbursement-claims

Reads every reimbursement claim this organisation has made, most recent first.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/orgs/{organizationId}/access-to-work/reimbursement-claims

Submits a reimbursement claim against an approved award.

<br> Retrying is safe: a repeat claim for the same adjustment returns the claim already made. Reimbursing the same spend twice is the worst outcome this surface has, and network retries are ordinary. <br> A 422 carries a machine-readable `reasonCode` in the RFC 7807 body — `award-absent`, `organization-mismatch`, `award-withdrawn`, `claim-exceeds-award`, `currency-mismatch`, `employer-reference-invalid`, `incurred-on-invalid`, `incurred-before-eligibility`, `claim-amount-invalid` or `transition-not-allowed` — so the employer console can branch without parsing prose.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/orgs/{organizationId}/access-to-work/reimbursement-claims/{adjustmentId}

Reads the claim this organisation made against one adjustment.

404 when they have not claimed. The `not-claimed` token in the employer console's vocabulary describes an <i>adjustment</i> with no claim against it — a queue-row property — not a state a claim can be in. Synthesising a claim id and a submission instant for a claim nobody made would put a fabricated record in front of the employer, so the absence is reported as an absence.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
adjustmentIdpathstringyes—

Request body

No request body.

Responses

POST/api/v1/orgs/{organizationId}/access-to-work/reimbursement-claims/{claimId}/decision

Records the scheme's ruling on a submitted claim.

<b>Service authority only.</b> The scheme rules on the claim; an employer does not rule on its own. A rejection must carry a reason the employer can act on — a refusal they cannot act on is indistinguishable from the claim having disappeared, and they have already spent the money.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
claimIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/orgs/{organizationId}/access-to-work/reimbursement-claims/{claimId}/disbursement

Records that the reimbursement has been disbursed to the employer.

<b>Service authority only, and only from an approved claim.</b> Paying a claim the scheme has not approved would move public money on the claimant's say-so. Set-once on the reference: a second, different reference is refused rather than overwritten, because one of the two would then describe a payment this claim did not make.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
claimIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

AccountHealthSignals

GET/api/v1/accounts/{organizationId}/health-signals

The invoice and payment posture of organizationId over the trailing year.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

No request body.

Responses

503Server Error

AdminNetTermsRefunds

POST/api/v1/billing/admin/invoices/{invoiceId}/net-terms-refunds

Refunds the invoice: `amount` (gross, the invoice's currency; omitted = everything not yet credited), finance's `reference` (the refund is idempotent on it) and a `reason`. 200 with the credit note and ledger credit. 403 `REFUND_AUTHORIZATION_REQUIRED` above the single-approver tier (FR-14.015a); 409 with a `rule` when the invoice is not a paid net-terms invoice, was settled by a gateway payment, or the refund would be paid out by bank transfer (FR-14.015g (b), not yet executable); 409 `credit_exceeds_invoice` past the invoice total.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
invoiceIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

AdminOnboardingRecovery

POST/api/v1/admin/subscriptions/onboarding/stranded/void

Voids ONLY a licence onboarding minted pre-claim for the named session that is PendingPayment, has received no money, and whose session has not provisioned. DRY RUN unless `dryRun` is explicitly false; idempotent (a re-run reports `AlreadyVoided`). Validated by the pipeline (API-002); refusals are ProblemDetails (API-003).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

AdminOrganisationCommercialProfile

GET/api/v1/billing/admin/organisations/{organizationId}/commercial-profile

The organisation's commercial profile; 404 `commercial_profile.not_found` when it has none.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

No request body.

Responses

PUT/api/v1/billing/admin/organisations/{organizationId}/commercial-profile/invoice-collection-approval

#10358 R6 / #10555 — approves the organisation to be invoiced (`SendInvoice`) on the given terms, with a reason (the evidence it rests on). The actor and instant are recorded from the token and the clock. Without a live approval a `SendInvoice` subscription create is refused 403 `collection_method.invoice_not_approved`. A routed organisation is invoiced to its payer already: 400 `commercial_profile.invoice_collection_follows_payer`.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

DELETE/api/v1/billing/admin/organisations/{organizationId}/commercial-profile/invoice-collection-approval

#10555 — revokes the organisation's invoice-collection approval. New `SendInvoice` creates are refused from now on; subscriptions already invoiced keep their collection method. Revoking none is a no-op (200).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

No request body.

Responses

PUT/api/v1/billing/admin/organisations/{organizationId}/commercial-profile/payment-terms

Sets (or, with `days: null`, clears) the payment-terms override, with a reason. A routed organisation's terms follow its payer: setting an override on one is 400 `commercial_profile.terms_follow_payer` (P5-R22).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

AdminRefundQueue

GET/api/v1/billing/admin/refund-queue

The refund-required invoices, oldest first: only those still owed unless `includeResolved=true`. At most `limit` rows (default 200, max 1000; 400 outside that).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
includeResolvedquerybooleanno—
limitqueryinteger (int32)no—

Request body

No request body.

Responses

POST/api/v1/billing/admin/refund-queue/{invoiceId}/resolve

Records how the invoice's refund was settled: `outcome` (`refunded` | `account_credit` | `not_owed`), finance's `reference` and an optional `note`. 200 with the updated row; 404 for an unknown invoice; 409 `refund_not_required` when it is not flagged, `refund_already_resolved` when it was settled already.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
invoiceIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

AdminSubscriptions

POST/api/v1/admin/subscriptions

Seeds a no-payment subscription (and its projected entitlements) for an arbitrary subject. Platform-admin only.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

POST/api/v1/admin/subscriptions/entitlements/reprovision

Recomputes and re-applies the entitlement grant of subscriptions that ALREADY EXIST (debt-2026-08-16-141). Platform-admin only.

<br> Entitlements are a materialised projection computed once, at subscription creation. Widening what a plan grants therefore corrects only subscriptions created afterwards and leaves the existing population on the narrower set — invisible while a presence verifier is in use, and a customer-facing denial the moment a fail-closed verifier is configured. This endpoint is the supported way to close that gap without replaying `SubscriptionCreatedEvent`, which other services consume as a NEW subscription. <br> Run it with `dryRun=true` first: the response names every subject and the exact feature set that would be published, which is what the follow-up verification against `POST /api/v1/entitlements/check` needs. <br> Large populations are walked a page at a time — pass the returned `nextCursor` back as `afterSubscriptionId` until it comes back null.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/admin/subscriptions/entitlements/reprovision/readiness

#19134 M1 — readiness of the outbox indexes behind the re-provision's delivery-evidence baseline. A publishing re-provision is refused (409 `ENTITLEMENT_EVIDENCE_INDEXES_NOT_READY`) until `ready` is true; the platform seed polls this before its walk. Platform-admin only (class policy).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

AdminTaxPendingQueue

GET/api/v1/billing/admin/tax-pending-queue

The held invoices, longest-held first: only those escalated to finance (held past 24 h) unless `includeNotYetEscalated=true`, which also shows the backlog forming inside the window. At most `limit` rows (default 200, max 1000; 400 outside that).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
includeNotYetEscalatedquerybooleanno—
limitqueryinteger (int32)no—

Request body

No request body.

Responses

POST/api/v1/billing/admin/tax-pending-queue/{invoiceId}/determine-tax

Determines the invoice's tax by hand and releases the hold at that rate: `ratePercent` (a PERCENTAGE — 20% VAT is `20`, not `0.2`) and the `reason` finance determined it on. 200 with the row as it now stands; 404 for an unknown invoice; 409 `invoice_not_tax_pending` when it is not held (the retry may have issued it meanwhile), `tax_hold_not_escalated` when the hold is younger than 24 h.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
invoiceIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

Analytics

GET/api/v1/Analytics/partners/{partnerId}

Get comprehensive partner analytics.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
periodStartquerystring (date-time)no—
periodEndquerystring (date-time)no—
includeMonthlyBreakdownquerybooleanno—
includeTopPlansquerybooleanno—
topPlansCountqueryinteger (int32)no—

Request body

No request body.

Responses

GET/api/v1/Analytics/partners/{partnerId}/export

Export partner analytics to CSV.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
periodStartquerystring (date-time)no—
periodEndquerystring (date-time)no—

Request body

No request body.

Responses

200Success
GET/api/v1/Analytics/partners/{partnerId}/summary

Get partner dashboard summary.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—

Request body

No request body.

Responses

AppRevenueReassignments

POST/api/v1/billing/app-revenue-reassignments/execute

Settle the outgoing owner and bind the incoming one, effective at the cut (journey step 4).

Idempotent on the transfer id: a re-run returns the existing settlement rather than paying the outgoing owner twice.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/app-revenue-reassignments/prepare

Check that the reassignment will be able to run. Moves no money (journey step 2).

A 200 with `incomingDestinationBound = false` is the interesting answer, not an error: it is the finding the acquirer has to act on, and EPIC 25's dry-run turns it into a blocking gate rather than a warning.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

BillingActuals

GET/api/v1/BillingActuals/organizations/{organizationId}

Get realised billing actuals for an organisation over a period.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation to scope actuals to.
periodStartquerystring (date-time)noInclusive window start (UTC); defaults to one year before periodEnd.
periodEndquerystring (date-time)noInclusive window end (UTC); defaults to now.
freshnessBudgetHoursqueryinteger (int32)noFreshness budget driving the staleness flag (default 24h).

Request body

No request body.

Responses

Capacity

POST/api/v1/internal/capacity/check

Answers whether the subject may hold `currentCount + requested` of the capacity feature. A refusal of the allowance is a 200 with `allowed=false`; only a malformed request is a 400.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

ChainParticipants

POST/api/v1/chain-participants

Registers an organisation's position in a distribution chain.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/chain-participants/by-org/{orgId}

An organisation's active chain position, or 404 if it is in no chain.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
orgIdpathstring (uuid)yes—

Request body

No request body.

Responses

PUT/api/v1/chain-participants/{participantId}/commercial-contact

Records the invoicing party and relationship manager shown on a channel customer's invoice ledger (AC-07.067).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
participantIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

ChannelBilling

GET/api/v1/channel-commissions

List channel commissions for the authenticated partner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—
statusquerystringno—

Request body

No request body.

Responses

GET/api/v1/channel-commissions/statement

Get a monthly commission statement for the authenticated partner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
periodStartquerystring (date-time)no—
periodEndquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/channel-orders

List channel orders for the authenticated partner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—
statusquerystringno—

Request body

No request body.

Responses

GET/api/v1/channel-orders/{id}

Get detail for a single channel order.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesChannel order identifier

Request body

No request body.

Responses

GET/api/v1/channel-orders/{id}/invoices

List invoices for a channel order.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesChannel order identifier

Request body

No request body.

Responses

GET/api/v1/channel-payouts/reconciliation

FR-14.090..096 / F6-T09: returns the two-stream (Marketplace + Channel) payout reconciliation report for the authenticated partner over the requested period. Per PRD v2.0 §3.10 the identity `commissions == payouts + tax + pending` must hold for each stream; any drift surfaces on Essence.Payment.Billing.Application.DTOs.PayoutStreamReconciliationDto.Gaps.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
periodStartquerystring (date-time)no—
periodEndquerystring (date-time)no—

Request body

No request body.

Responses

ChannelCommissionQueries

GET/api/v1/channel-commissions/queries

The caller's queries, newest first, each with both numbers, its age and its trail, and how many are open.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

POST/api/v1/channel-commissions/queries/{queryId}/withdraw

Withdraws one of the caller's open queries. Any hold is released.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
queryIdpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/channel-commissions/{commissionId}/queries

Raises a query on one of the caller's commission lines, with the figure it expected and a reason. A queried clawback line is held out of the payout run until the query closes.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
commissionIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

ChannelReceivables

GET/api/v1/channel-orders/receivables

What the caller's partner owes, per currency and aged on the platform definition, with the open invoices behind it, any written-off value, and how many Buy-Sell orders carry no invoice.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

ChannelRoutedOrganisations

GET/api/v1/partners/{partnerId}/routed-organisations

One page of the organisations partnerId pays for (`{ items, nextCursor }`).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
cursorquerystringno—
limitqueryinteger (int32)no—

Request body

No request body.

Responses

CisDisbursements

POST/api/v1/disbursements/cis

Releases a CIS payment, binding the named verification to it.

<br> Retrying is safe: a repeat release for the same pay run and subcontractor returns the payment that was already made. Paying a subcontractor twice and reporting both on the CIS300 is the worst outcome this surface has, and network retries are ordinary. <br> A 422 carries a machine-readable `reasonCode` — `verification-absent`, `verification-expired`, `stale-blocked-by-policy`, `override-reason-required`, `rate-disagreement`, `subcontractor-mismatch` or `organization-mismatch` — so the surface can branch without parsing prose.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/disbursements/cis/organizations/{organizationId}/policy

Reads an organisation's CIS settings.

Never 404s. An organisation that has configured nothing is governed by the statutory default, which is returned with `isStatutoryDefault` set — so the surface can say "you have not configured this" rather than presenting defaults as deliberate choices.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

No request body.

Responses

PUT/api/v1/disbursements/cis/organizations/{organizationId}/policy

Stores or replaces an organisation's CIS settings.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/disbursements/cis/pay-runs/{payRunId}

Reads every CIS payment released on one pay run.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
payRunIdpathstringyes—

Request body

No request body.

Responses

POST/api/v1/disbursements/cis/verifications

Takes delivery of a CIS status check from the verification service.

<b>Service authority only.</b> This is the front door through which the rate a payment may be released on enters EPIC 14. Exposing it to a contractor's own token would let them assert their subcontractor's HMRC status — the exact assertion the binding exists to make un-assertable. Idempotent on the verification id.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/disbursements/cis/verifications/{verificationId}

Reads a CIS check EPIC 14 holds, or 404 when it holds none under that id.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
verificationIdpathstringyes—

Request body

No request body.

Responses

GET/api/v1/disbursements/cis/{paymentId}

Reads one released CIS payment, with its binding and deduction statement.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
paymentIdpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/disbursements/cis/{paymentId}/anchor

Records EPIC 4's anchor reference against a bound payment.

Service authority only, and set-once. The contractor's surface reads the authoritative anchoring state from EPIC 4's own `GET /api/v1/anchor-receipts/{entityId}`; this records EPIC 14's local copy so the reference lives in the payment's own history. A second, different reference is refused rather than overwritten.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
paymentIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

CloudMarketplaceSettlements

GET/api/v1/marketplace-fulfilment/{marketplaceCode}/settlements/exceptions

The break list for marketplaceCode: every settlement line that did not tie, with its reason, owner and age, oldest first.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
marketplaceCodepathstringyes—
limitqueryinteger (int32)no—

Request body

No request body.

Responses

POST/api/v1/marketplace-fulfilment/{marketplaceCode}/settlements/import

Reads marketplaceCode's settlement report for the period through its adapter, ties every line, and records it. A second import of the same report changes nothing and answers `already_imported`; a period the marketplace has not settled answers `no_report`.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
marketplaceCodepathstringyes—

Request body

Not marked as required in the document.

Responses

200The outcome, the counts (matched + exceptions = lines) and every line. — Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementImportDto
404No adapter for the marketplace is registered on this instance. — Microsoft.AspNetCore.Mvc.ProblemDetails
POST/api/v1/marketplace-fulfilment/{marketplaceCode}/settlements/lines/{lineId}/disposition

#22582 — closes a break with a disposition. The line's figures are never edited; the decision, its reason, the caller and the time are appended to the line's trail and the line leaves the break list.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
marketplaceCodepathstringyes—
lineIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

404No such line for the marketplace, or a re-tie names no existing subscription. — Microsoft.AspNetCore.Mvc.ProblemDetails
409The line tied at import, is already dispositioned, or another operator saved first. — Microsoft.AspNetCore.Mvc.ProblemDetails
POST/api/v1/marketplace-fulfilment/{marketplaceCode}/settlements/lines/{lineId}/owner

#22582 — hands an open break to another owner. The break stays open; the change is on its trail.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
marketplaceCodepathstringyes—
lineIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

404No such line for the marketplace. — Microsoft.AspNetCore.Mvc.ProblemDetails
409The line is not an open break, already has that owner, or another operator saved first. — Microsoft.AspNetCore.Mvc.ProblemDetails
GET/api/v1/marketplace-fulfilment/{marketplaceCode}/settlements/period-close

#22582 / NFR-CMC.006 — whether the settlement period can close: `closed` only when a report for it is on file and every line is matched or dispositioned; `open_breaks` or `no_report` otherwise.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
marketplaceCodepathstringyes—
periodStartUtcquerystring (date-time)no—
periodEndUtcquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/marketplace-fulfilment/{marketplaceCode}/settlements/{reportReference}

One imported report with every line and its disposition.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
marketplaceCodepathstringyes—
reportReferencepathstringyes—

Request body

No request body.

Responses

404No report with that reference has been imported from the marketplace. — Microsoft.AspNetCore.Mvc.ProblemDetails

CommissionQueryAdjudication

GET/api/v1/commission-queries

Every partner's queries: open first, oldest first. Each has both numbers, the difference, the reason, the age and the trail.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
statusquerystringnoOptional: `Open`, `Withdrawn` or `Upheld`.
limitqueryinteger (int32)no1 to 200 (default 100).

Request body

No request body.

Responses

POST/api/v1/commission-queries/{id}/uphold

Upholds the ledger figure. A reason is required, because the partner reads it. Releases any hold. A query that is already closed is 409, and the first outcome stands.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

Commissions

GET/api/v1/commissions/partner/{partnerId}

Gets commissions for a partner with optional filtering.

Sample request: GET /api/v1/commissions/partner/3fa85f64-5717-4562-b3fc-2c963f66afa6?startDate=2024-01-01&status=Pending Returns all pending commissions for the partner since January 1, 2024.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yesPartner ID (GUID)
startDatequerystring (date-time)noOptional start date filter (ISO 8601 format)
endDatequerystring (date-time)noOptional end date filter (ISO 8601 format)
statusquerystringnoOptional status filter. Valid values: Pending, Paid, Voided, Reversed

Request body

No request body.

Responses

400Invalid filter parameters — Microsoft.AspNetCore.Mvc.ProblemDetails
401Unauthorized - JWT token missing or invalid — Microsoft.AspNetCore.Mvc.ProblemDetails
GET/api/v1/commissions/partner/{partnerId}/pending-balance

Gets the pending commission balance for a partner.

Sample request: GET /api/v1/commissions/partner/3fa85f64-5717-4562-b3fc-2c963f66afa6/pending-balance Returns the total pending (unpaid) commission amount and count for the partner. This is useful for partners to see their current earnings awaiting payout.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yesPartner ID (GUID)

Request body

No request body.

Responses

401Unauthorized - JWT token missing or invalid — Microsoft.AspNetCore.Mvc.ProblemDetails
GET/api/v1/commissions/{id}

Gets commission by ID.

A non-admin caller may read only their own partner's commissions. A commission belonging to another partner answers 404 rather than 403: the caller supplies no partner id here, so 403 would confirm that a given commission id exists and merely belongs to somebody else, turning the endpoint into an id oracle. The route-scoped endpoints above can safely answer 403 because the caller named the partner in the request.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesCommission ID (GUID)

Request body

No request body.

Responses

401Unauthorized - JWT token missing or invalid — Microsoft.AspNetCore.Mvc.ProblemDetails
404No commission with that id is visible to the caller — Microsoft.AspNetCore.Mvc.ProblemDetails

ConsumerRemedies

POST/api/v1/consumer-remedies

FR-14.210 — records a claim outcome. Idempotent on `claimReference`.

Self-scoped: a non-admin caller always records a claim for THEMSELVES. The body's `ClaimantUserId` and `OrganizationId` are overwritten from the token, so a consumer cannot open a settlement in someone else's name or attribute their personal claim to an organisation.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/consumer-remedies/mine

Lists the calling consumer's own claim outcomes.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/consumer-remedies/{id}

Reads a claim outcome, including the deduction and the current release blockers. Readable by the claimant or a billing admin.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/consumer-remedies/{id}/deduction

FR-14.224 — records the seller's use/wear deduction against the gross agreed remedy. The settlement cannot release money until the consumer accepts it.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

DELETE/api/v1/consumer-remedies/{id}/deduction

FR-14.224 — the seller withdraws the deduction, conceding the full gross agreed remedy.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/consumer-remedies/{id}/deduction/review

FR-14.224 — the consumer's answer to the deduction. Accepting unblocks release of the net amount; disputing keeps the money frozen.

Self-scoped rather than admin-gated: the deduction is the seller's assertion about this consumer's payout, so only that consumer can answer it. The check is against the settlement's own claimant, not a caller-supplied id.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/consumer-remedies/{id}/reconcile-ownership

FR-14.211 — reconciles ownership/transfer history. Either advances the settlement to `OwnershipReconciled` or holds it for review.

Self-scoped. A non-admin caller may not nominate a rightful holder: the only self-declaration we accept is `PriorTransferFound=false`, which reconciles the item to the caller. `PriorTransferFound=true` is refused with 409 — see the class remarks.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/consumer-remedies/{id}/settle

FR-14.211 / FR-14.224 — settles the claim outcome. Returns 409 when either money-movement gate refuses: ownership unreconciled / wrong party, or a deduction the consumer has not accepted.

Self-scoped. Both gates are domain invariants, so a claimant settling their own claim gets the same 409 an operator would: unreconciled or wrong-party ownership, or a deduction they have not answered.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

CoolingOffSettlements

GET/api/v1/billing/cooling-off-settlements

Every cooling-off settlement the provider in `X-Organization-Id` recorded (its billing administrators only).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

POST/api/v1/billing/cooling-off-settlements

Records a customer's cooling-off cancellation for the provider in `X-Organization-Id` (its billing administrators only) and computes the deduction and refund. 201; 409 `COOLING_OFF_WINDOW_EXPIRED` after the window.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—

Request body

Not marked as required in the document.

Responses

GET/api/v1/billing/cooling-off-settlements/mine

The caller's own cooling-off settlements, newest first, each with its deduction and refund.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/billing/cooling-off-settlements/{id}

One settlement, for its customer, or for an administrator of its provider presenting the provider in `X-Organization-Id`. 404 for anyone else.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

POST/api/v1/billing/cooling-off-settlements/{id}/release

Records the refund returned to the customer as cash or credit, under the provider's refund reference (its billing administrators only). A second release is refused with 400 `BUSINESS_RULE_VIOLATION`.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
X-Organization-Idheaderstring (uuid)no—

Request body

Not marked as required in the document.

Responses

CorporateGroupBilling

GET/api/v1/billing/corporate-groups/{parentOrgId}/rollup

The group's invoiced position for one calendar month.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
parentOrgIdpathstring (uuid)yesThe parent organisation the group is rooted at.
periodquerystringnoThe month as `YYYY-MM`; the current UTC month when omitted.

Request body

No request body.

Responses

CreditNotes

GET/api/v1/credit-notes

The caller's credit notes (addressed to them, or to their organisation when it may see figures).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/credit-notes/{id}

One credit note.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

GET/api/v1/credit-notes/{id}/pdf

A credit note's PDF.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200Success
GET/api/v1/invoices/{invoiceId}/credit-notes

The credit notes issued against an invoice the caller may read.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
invoiceIdpathstring (uuid)yes—

Request body

No request body.

Responses

CspReport

POST/api/v1/csp-report

Receives a CSP violation report. Returns 204 on success so browsers do not retry (RFC 7234 idempotency on unsupported status codes is gateway-dependent). A malformed report is refused by throwing, so it is a 400 RFC 7807 ProblemDetails like every other error on this service (API-003, #18049).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

200Success

DealTerms

GET/api/v1/deal-terms/by-subscription/{subscriptionId}

The approval a subscription redeemed, if any.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdpathstring (uuid)yesThe subscription.

Request body

No request body.

Responses

200The approval that authorised this subscription's non-standard terms. — Essence.Payment.Billing.Application.DTOs.ApprovedDealTermsDto
404The subscription redeemed no deal-desk approval — it is standard-priced. — Microsoft.AspNetCore.Mvc.ProblemDetails
GET/api/v1/deal-terms/{authorisationReference}

Resolve an authorisation reference to the approval behind it.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
authorisationReferencepathstringyesThe opaque redemption token.

Request body

No request body.

Responses

200The landed approval, and whether a subscription has redeemed it. — Essence.Payment.Billing.Application.DTOs.ApprovedDealTermsDto
404No approval carries that reference. — Microsoft.AspNetCore.Mvc.ProblemDetails

DeveloperApiPlans

GET/api/v1/subscriptions/developer-api/tiers

The sold ladder as EPIC 14 can currently sell it.

<br> Carries no quota figure — those are EPIC 25's, at `GET /api/v1/developer/api-quota/tiers`. What this adds is `isSellableNow`: whether the rung's SKU is registered and `Active`, and so whether a checkout would succeed. A console that greys out an unsellable rung is telling the truth; one that offers it and then 422s is not.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

POST/api/v1/subscriptions/developer-api/upgrade

Buys a rung of the developer-API ladder and returns the charge ↔ entitlement linkage.

<br> The returned `correlationId` is what the console hands to EPIC 39's propagation view, so it follows <i>this</i> purchase rather than the account's latest entitlement. <br> A 422 carries a machine-readable `reasonCode` in the RFC 7807 body — `unknown-tier`, `requires-sales-contact`, `plan-not-ratified`, `already-on-tier` or `no-billing-account` — so the console can branch to the right remediation instead of parsing prose at the moment the developer is already throttled.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

POST/api/v1/subscriptions/developer-api/upgrade-requests

Asks an approver for the upgrade instead of buying it — the governed path for an actor who holds no billing authority (journey open decision OD-2).

Idempotent per (developer, tier): clicking twice returns the request the approver has already been told about rather than raising a second one for the same purchase. `approverEmail` is `null` when Billing holds no billing account for this developer — an admitted absence, so the console can ask who to route to instead of showing an address nobody reads.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

POST/api/v1/subscriptions/developer-api/upgrade-requests/{requestId}/decision

Records an approver's decision on a governed upgrade request.

Billing-admin authority. The approver decides whether the money may be spent; approval does not itself charge, because the purchase then runs through M:Essence.Payment.Billing.Api.Controllers.DeveloperApiPlansController.Upgrade(Essence.Payment.Billing.Api.Controllers.UpgradeDeveloperApiPlanRequest,System.Threading.CancellationToken) — one code path between rungs, one place a charge can be raised.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
requestIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

EnterpriseContracts

POST/api/v1/enterprise-contracts

Originate a draft Enterprise contract (FR-14.195b). The terms become the authoritative source FR-14.189..193 read; nothing is invoiced until activation.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/enterprise-contracts/{id}

Read an Enterprise contract by id (FR-14.195). 404 if none exists.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/enterprise-contracts/{id}/activate

Activate a draft contract (FR-14.195d). Replaces the trial, issues the first FR-14.189 invoice, and grants the committed entitlement. A dual-auth contract (FR-14.195c) must carry a distinct `secondApproverId`; otherwise the activation returns HTTP 409 (`enterprise-contract-not-activatable`).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/enterprise-contracts/{id}/amend

Amend an active contract mid-term (FR-14.192): a committed-seat increase (`additionalSeats ≥ 1`) or a tier/feature add-on. The negotiated additional commitment grows the committed contract total and its remaining-term share is invoiced immediately (FR-14.003 / FR-14.180) via `EnterpriseContractAmendedEvent`. Mid-term reductions are rejected (HTTP 400/409); they take effect at renewal. Returns the amended contract.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/enterprise-contracts/{id}/dunning/advance

Advance the net-terms invoice-level dunning for an unpaid Enterprise invoice (FR-14.193). Reminds at `due+7`, `due+14`, `due+30` and suspends the contract at `due+30` (no card-retry — Enterprise invoices settle on negotiated net terms). Idempotent per (contract, invoice); intended to be driven by a daily dunning sweep. Returns the contract with its advanced dunning state.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/enterprise-contracts/{id}/dunning/cure

Cure the net-terms arrears on a contract (FR-14.193) — the overdue invoice was paid. Clears any in-progress dunning and reinstates a suspended contract to `active`, restoring entitlements. Idempotent. Returns the cured contract.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

Entitlements

POST/api/v1/Entitlements/check

Checks whether an organisation is entitled to provision an instance (or, for any other feature code, returns the ADR-018 boundary denial — this endpoint is the provisioning/quota authority only).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/Entitlements/{organizationId}/module-provisioning

Resolves an organisation's module-slot quota — the tier ceiling EPIC 7's org dashboard enforces before provisioning another paid module (FR-07.007). A module SLOT is a quota, so it is answered here and not by the EntitlementEngine (ADR-018: Billing owns provisioning/quota because only Billing holds the plan and its allowances). <br>This is the exact contract EPIC 7's `BillingModuleEntitlementReader` has always called and which no service implemented, leaving the Starter/Professional module ceilings enforced nowhere on the deployed fleet (debt-2026-08-15-249).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

No request body.

Responses

FamilyBilling

POST/api/v1/billing/family/rehome

Re-homes a departing family-plan member onto their own self-pay subscription with a mid-cycle proration credit for the already-covered remainder of the period. Idempotent on `rehomeRequestId` — a retried departure returns the first result unchanged.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

FamilyMemberships

POST/api/v1/family-memberships

Open the membership roster for a Family subscription (FR-14.185 / FR-14.187). The owner is fixed to the subscriber. Idempotent: re-opening returns the existing roster.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/family-memberships/for-user/{userId}

"Which Family roster is this user on?" — the read that makes a family plan DISCOVERABLE (#6290). Consumed service-to-service by the EPIC 30 family module behind `GET /api/v1/family-plan/mine`.

<br> <b>Why this endpoint exists.</b> Every other route on this controller is keyed by `subscriptionId` — an identifier a user has no way to obtain and which the product never shows them. So none of them can answer the only question a plan owner actually asks, and the family console was reachable only by pasting an internal id. This route is keyed on the subject instead. <br> <b>Authorized explicitly, not by being unrouted.</b> Neither gateway routes `/api/v1/family-memberships/for-user/**`, and it must stay that way — the Global gateway routes the sibling actions (#9560) by explicit path, never by a catch-all that would take this one too. But a roster read is not safe merely because it is hard to reach, so this action requires the caller to <i>be</i> the subject, or to hold Essence.Payment.Billing.Api.Authorization.BillingPolicies.FamilyRosterReadPermission (the family module's service principal), or to be a billing admin. Anything else is refused. A user's own read at the edge is M:Essence.Payment.Billing.Api.Controllers.FamilyMembershipsController.GetMine(System.Threading.CancellationToken). <br> <b>Service-only at the endpoint (ADR-021 5h-A, #13630).</b> The route is gated on Essence.Payment.Billing.Api.Authorization.BillingPolicies.FamilyRosterRead, a `ServicePrincipal.Is` policy: only a service subject holding the roster-read scope reaches the action, so the subject and billing-admin branches below are defence in depth, not live audiences. Its one caller is the family module, which resolves the subject from the end user's own token and then asks here with its minted `service:family` token. <br> <b>Always 200, never 404.</b> "On no family plan" is a real answer (`found: false`) and must stay distinguishable from "that route does not exist" at the consumer — the same reason the erasure-obligation summary never 404s. It is also not an existence oracle: the answer is only ever about the caller's own membership, and a caller who is neither the subject nor an authorised principal is refused before anything is read.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
userIdpathstring (uuid)yes—

Request body

No request body.

Responses

GET/api/v1/family-memberships/mine

The caller's own family position (#9560): the roster they own or hold a seat on, and the invitations addressed to their verified email — every id the family console needs, from the token alone. Always 200; "on no plan" is `roster.found: false`, never a 404.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/family-memberships/{subscriptionId}

Fetch the Family roster for a subscription (FR-14.185) — for its owner, an accepted member or a billing admin. 404 if none is open, and the same 404 for a caller who is not on it (#9560).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/family-memberships/{subscriptionId}/members

Invite an additional member by email (FR-14.185). A pending invite occupies a seat; an invite that would exceed the 6-seat cap returns HTTP 409 (`family-seat-cap-exceeded`) after the owner is notified.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

DELETE/api/v1/family-memberships/{subscriptionId}/members/{memberId}

Remove an accepted member or revoke a pending invite (FR-14.187), freeing the seat back to the cap. The owner removes anyone; an accepted member may remove only their own seat — leaving (#9560).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdpathstring (uuid)yes—
memberIdpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/family-memberships/{subscriptionId}/members/{memberId}/accept

Accept a pending invitation (FR-14.185), linking the seat to the CALLER — who must be the invitation's addressee by verified token email (#9560). No body is needed; any accepting user id a body carries is ignored.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdpathstring (uuid)yes—
memberIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GrandfatheredCohortReport

GET/api/v1/billing/grandfather-cohort-report

The grandfathered-cohort finance report, one entry per supersede cohort and currency. 200.

Always 200, with an empty `cohorts` list when no lock matches — "this cohort has nobody in it" is a finding a finance surface must be able to state, not a 404.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
supersedeReferencequerystringnoOne cohort, by the upstream EPIC 79 supersede decision's own reference. Omit for every cohort.
asOfquerystring (date-time)noReport as at this instant rather than now, so last month's figures can be re-run and give last month's answer.
churnRateOnExpiryquerynumber (double)noThe share of a cohort assumed not to renew once its lock ends, in `[0, 1]`. Defaults to the specified surface's own modelled figure; whatever is used is returned on the response and written into the CSV.

Request body

No request body.

Responses

GET/api/v1/billing/grandfather-cohort-report/export

The same report as a CSV download (FR-14.106). 200.

Rendered from the identical DTO the JSON surface returns, so the export can never carry a figure the API does not. One row per cohort and lock-expiry month, with each projection's assumptions as columns — a spreadsheet outlives the response that made it.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
supersedeReferencequerystringno—
asOfquerystring (date-time)no—
churnRateOnExpiryquerynumber (double)no—

Request body

No request body.

Responses

200Success

GrandfatherPriceLocks

GET/api/v1/billing/grandfather-price-locks/{subscriptionId}

The subscription's standing lock and its audited renewal-price re-resolution timeline.

Always 200, with `lock: null` for a subscription that has never had one. A lock whose end has passed is returned with `inForce: false` and its history intact — "the protection ran out" and "there was never any protection" are different facts and this surface keeps them apart.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/billing/grandfather-price-locks/{subscriptionId}

Holds one subscription below the current list price until a stated date. 201.

The next renewal at or after this call is charged `lockedAmount` rather than whatever the current plan resolves to, and the resolution is audited with the lock recorded against it. A second lock on a subscription that already has one is refused (409) rather than layered, so which price protects the subscriber is never ambiguous.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

DELETE/api/v1/billing/grandfather-price-locks/{subscriptionId}

Withdraws the standing lock. Its next renewal resolves at the current list price.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GroupSchemeBilling

GET/api/v1/billing/group-schemes/{schemeId}/aggregated-invoices

What the scheme has been billed, line by line and member by member, and what the next run would bill. 404 when Billing holds no billing configuration for the scheme.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
schemeIdpathstringyes—
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

POST/api/v1/billing/group-schemes/{schemeId}/aggregated-invoices

Issues the scheme's next aggregated invoice: every member premium that has moved since the last run, itemised and attributed, on ONE invoice to the organisation with `billing_model=group_scheme`, plus a credit note for any already-billed premium withdrawn by a mid-cycle leaver.

Refused 422 `scheme-bills-members-individually` when the scheme bills its members directly — it supplies roster and eligibility only, so no aggregated invoice exists to issue — and 422 `nothing-to-aggregate` when every premium has already been billed at its current figures (the normal answer to a second run, and NOT the same as nothing being owed).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
schemeIdpathstringyes—
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

GET/api/v1/billing/group-schemes/{schemeId}/billing-configuration

How the scheme is billed. <b>404 means Billing holds no billing configuration for it</b> — the scheme has no billing route — never "it is billed to nobody".

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
schemeIdpathstringyes—
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

PUT/api/v1/billing/group-schemes/{schemeId}/billing-configuration

Sets, then amends, how the scheme is billed. `invoicingParty` is fixed on the first call: a later call naming the other party is refused 422 `invoicing-party-fixed`, because who owes the premiums is not an administrative detail once invoices have been issued on the current reading.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
schemeIdpathstringyes—
X-Organization-Idheaderstring (uuid)no—

Request body

Not marked as required in the document.

Responses

GroupSchemePremium

GET/api/v1/orgs/{organizationId}/group-premium/schemes/{schemeId}/accruals

The scheme's premium ledger: every line (accrued and voided), every stop, and the accrued total — optionally only lines sharing a day with `from`..`to`.

<b>404 means Billing holds nothing for this scheme</b> — the premium is on no bill — never "nothing is owed". A known scheme with no line in the window answers 200 with a zero total.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
schemeIdpathstringyes—
fromquerystringno—
toquerystringno—

Request body

No request body.

Responses

POST/api/v1/orgs/{organizationId}/group-premium/schemes/{schemeId}/accruals

Post the scheme's premium accruals — `IGroupPremiumPort.postAccruals`.

Idempotent per (member, period): a redelivery is `unchanged`, a recomputed line is `revised`. All-or-nothing: a 422 names the reason and the member, and nothing of the posting is kept.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
schemeIdpathstringyes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/orgs/{organizationId}/group-premium/schemes/{schemeId}/members/{memberRef}/stop-accrual

Stop one member's premium from `effectiveFrom` (the first day not covered) — `IGroupPremiumPort.stopAccrual`.

Voids, in the same commit, every posted line that charges a day on or after `effectiveFrom`, and refuses any later line that would. Re-asserting the same date is a no-op; moving it earlier voids more; moving it later is refused (422 `stop-cannot-move-later`).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
schemeIdpathstringyes—
memberRefpathstringyes—

Request body

Not marked as required in the document.

Responses

InternalBillingDocuments

GET/api/v1/internal/billing-documents/{kind}/{id}/pdf

The PDF of an invoice or credit note, for recipientUserId only if they are its payer.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
kindpathstringyes—
idpathstring (uuid)yes—
recipientUserIdquerystring (uuid)no—

Request body

No request body.

Responses

200Success
404No such document, or the recipient is not in its payer audience. — Microsoft.AspNetCore.Mvc.ProblemDetails
503The organisation directory could not be read; retry.

Invoices

GET/api/v1/Invoices

List invoices for the authenticated user.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
pagequeryinteger (int32)no1-based page number.
pageSizequeryinteger (int32)noNumber of records per page (max 100).
statusquerystringnoOptional status filter: Pending, Paid, Overdue, Draft, Canceled.

Request body

No request body.

Responses

POST/api/v1/Invoices

Create a new invoice.

The owning `UserId` and `OrganizationId` are derived from the JWT principal — any value supplied in the request body is overwritten (debt-2026-05-11-163, A07). Admin-on-behalf creation is routed through a separate Essence.Payment.Billing.Api.Authorization.BillingPolicies.Admin endpoint and is intentionally not exposed here. Exceptions propagate to the foundation GlobalExceptionHandler / local ExceptionHandlingMiddleware (debt-2026-05-17-118): domain exceptions are mapped to ProblemDetails with the typed Code; unexpected exceptions surface as 500 with a traceId only — no `ex.Message` leakage.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

POST/api/v1/Invoices/usage

Generate a usage-based invoice for a subscription.

#19044 — the caller is authorised against the <em>subscription</em> before anything is issued: an unknown or foreign subscription is the same bare 404 (#18174), and an organisation's subscription needs its billing admin. Until then the command ran first and ownership was checked on the invoice it had already persisted, so a stranger holding a subscription id got a 403 <em>and</em> an invoice raised against someone else's subscription. A period whose usage a live usage invoice already covers is refused 409 by the handler.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/Invoices/{id}

Get an invoice by ID.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

GET/api/v1/Invoices/{id}/download

Download invoice as PDF.

`{id}/pdf` is the path EPIC 14's `api-contracts.md` publishes and the one essence-web's invoice history calls; `{id}/download` is kept for the admin portal. Until #7692 only `download` was routed, so the contract path 404'd for every id — real or not — and read as "no PDF was ever generated" (#8495). The PDF is generated on demand either way; it never depended on `BlobReference`.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesInvoice ID

Request body

No request body.

Responses

200Success — string (binary)
500Server Error
GET/api/v1/Invoices/{id}/download-url

Get secure download URL for invoice PDF (with temporary SAS token).

When the blob store cannot be reached (Global has none) the answer is 503 `INVOICE_DOWNLOAD_URL_UNAVAILABLE`, not a 500; `GET {id}/pdf` serves the same PDF without it (#14485).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesInvoice ID
expiryMinutesqueryinteger (int32)noURL expiry in minutes; clamped to Essence.Payment.Billing.Api.Controllers.InvoicesController.MaxSasExpiryMinutes (15) per debt-2026-05-11-040.

Request body

No request body.

Responses

200Success — unspecified
GET/api/v1/Invoices/{id}/pdf

Download invoice as PDF.

`{id}/pdf` is the path EPIC 14's `api-contracts.md` publishes and the one essence-web's invoice history calls; `{id}/download` is kept for the admin portal. Until #7692 only `download` was routed, so the contract path 404'd for every id — real or not — and read as "no PDF was ever generated" (#8495). The PDF is generated on demand either way; it never depended on `BlobReference`.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesInvoice ID

Request body

No request body.

Responses

200Success — string (binary)
500Server Error
POST/api/v1/Invoices/{id}/resend

Resend the invoice email notification.

Commercial Licence P6 N9: under `Billing:Notices:Mode=Enforce` the invoice is sent to its PAYER — whoever asked — with the PDF attached, and the answer is 202 Accepted (Notifications delivers it from the outbox). A routed payer with no billing contact answers 409 `INVOICE_PAYER_UNADDRESSABLE`. Under Off and Audit nothing is sent and an issued invoice answers 501 `INVOICE_EMAIL_DELIVERY_UNAVAILABLE` (#8495). A draft answers 409 `INVOICE_NOT_RENDERABLE` in every Mode. Authorised via Essence.Payment.Billing.Api.Authorization.BillingPolicies.ResourceOwner after the invoice is loaded, then the routed-figure gate (a routed organisation's member gets a bare 404).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

202Accepted
POST/api/v1/Invoices/{id}/void

Void an unpaid invoice.

Used by the Instance Service's provisioning-rollback saga to compensate the Step-3 invoice when an organisation instance fails to provision (debt-2026-06-21-121). Authorised via Essence.Payment.Billing.Api.Authorization.BillingPolicies.ResourceOwner after the invoice is loaded — the caller must own the invoice or hold the BillingAdmin role (the Instance service account does). Voiding a paid invoice is rejected by the domain invariant and surfaces as a 400 via the global exception handler; an already-void invoice is an idempotent no-op success.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

204No Content

LevyAccounts

GET/api/v1/levy-accounts/approved-providers

The approved providers an allocation may name, for the form's picker.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

POST/api/v1/levy-accounts/approved-providers

Registers or amends an approved training provider.

<b>Service authority only.</b> Levy funds may only be drawn against training delivered by an approved provider, so approval is a precondition of a commitment rather than a check made later — and an employer able to add a provider could approve their own.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/levy-accounts/funded-standards

The funded standards an allocation may be made against, for the form's picker.

Withdrawn standards are included, carrying their withdrawal instant, so the form can explain why a standard an employer allocated to last year can no longer be chosen. Omitting them would make it look as though it never existed.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

POST/api/v1/levy-accounts/funded-standards

Registers or amends a funded apprenticeship standard and its band cap.

<b>Service authority only.</b> The band cap and the co-investment percentage decide how much public money one apprentice place may consume; an employer that could write them would be setting their own funding. Amending a cap affects only commitments made from now on — allocations already made carry the cap they were made under.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/levy-accounts/mine

Reads the calling organisation's levy account: balances, ledger and allocations.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)noThe active organisation, sent by the portal as `X-Organization-Id` and verified against the caller's own org claim.

Request body

No request body.

Responses

POST/api/v1/levy-accounts/mine/allocations

Commits part of the pot to one standard with one approved provider.

<br> Retrying is safe. A repeat of the same commitment — the same organisation, standard, provider and place count — returns the allocation already made rather than reserving the pot twice. Funds reserved against places that do not exist still expire while reserved, so a double-clicked form is not a harmless duplicate. <br> A 422 carries a machine-readable `reasonCode` in the RFC 7807 body — `account-absent`, `standard-not-funded`, `standard-withdrawn`, `provider-not-approved`, `provider-withdrawn`, `places-invalid` or `insufficient-available-funds` — so the employer console can branch without parsing prose. Every one of those names something the employer can act on.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—

Request body

Not marked as required in the document.

Responses

GET/api/v1/levy-accounts/mine/completion-audits

The completion audit joins for apprentices who have finished — qualification against the reconciled spend that funded it.

<b>Ids only, never content.</b> The credential id, the reconciliation line ids and the evidence entry ids. An auditor joins qualification → spend → milestone → evidence without this API ever carrying the evidence itself, which is what keeps a funding surface out of the apprentice's own training record and out of their vault.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

GET/api/v1/levy-accounts/mine/reconciliation

The milestone-keyed spend reconciliation for the calling organisation's funded cohort.

<br> Apprenticeship funding is released as milestones are evidenced, not paid up front. Each line is one milestone's money, carrying the ids that join it back to the training record so an auditor can walk from a payment to the evidence that earned it. <br> <b>Three money figures per line, and they are allowed to disagree.</b> `plannedPence` is what the schedule promises, `drawnPence` what left the levy pot, and `paidToProviderPence` what reached the provider. The gaps are the reconciliation. <br> An organisation with no funded apprenticeships gets a <b>200 with an empty reconciliation</b> and a real `computedAtIso`, never a 404 — the client's vocabulary maps a 404 to `failed`, whose message tells the employer to treat the figures as unknown.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

POST/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/completion

Records the qualification EPIC 29 issued and returns the completion audit join — service authority only.

<br> <b>The `QualificationIssued` landing point.</b> EPIC 29 has no producer for that event yet, so no consumer is bound to it here — a consumer wired to a message nothing publishes reads as a delivered seam. This is the endpoint that consumer will call. <br> <b>It evidences the completion payment; it does not release it.</b> The qualification is what earns the final rung, so it marks that rung achieved with the credential as its evidence. Releasing here would mint a drawdown with no attributed actor, and an event cannot be asked at audit who authorised a payment.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
apprenticeshipIdpathstringyes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/early-leaver

Records that an apprentice left before completing — service authority only.

Closes the funding line to further releases and puts the apprentice on the early-leaver list the employer works through. It does not itself reverse anything: the clawback is a deliberate ledger movement against the milestones that were not in fact earned, because automating it would reverse payments for milestones the apprentice <i>had</i> earned before leaving.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
apprenticeshipIdpathstringyes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/milestones

Opens or extends one apprentice's funding schedule — service authority only.

<b>The schedule is not the employer's to write.</b> What each milestone is worth is set by the funding rules and the provider agreement; an employer able to schedule their own milestone values would be deciding how much public funding each rung of their own apprenticeship releases. Idempotent on the apprenticeship and on each milestone code, and it does not amend a rung already drawn against.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
apprenticeshipIdpathstringyes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/milestones/{milestoneCode}/achievement

Records that EPIC 29 has evidenced a milestone as achieved — service authority only.

<b>This is the gate every release depends on,</b> which is exactly why the employer cannot write it. A party able to record their own achievements could make any milestone releasable, and the evidence requirement would be decorative.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
apprenticeshipIdpathstringyes—
milestoneCodepathstringyes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/milestones/{milestoneCode}/drawdowns

Releases levy funds against an evidenced milestone — service authority only.

<br> Writes the milestone rung, the ledger drawdown and the outbox notification in one transaction. A 422 carries a machine-readable `reasonCode`: `milestone-not-achieved` when EPIC 29 has recorded no evidence for it, `attribution-required` when no actor was named, `apprentice-has-left`, or `drawdown-exceeds-milestone`. <br> <b>The actor is part of what is being recorded, not a header we infer.</b> Every release names the person whose sign-off moved public money, because an unattributed drawdown is one nobody can be asked about at audit.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
apprenticeshipIdpathstringyes—
milestoneCodepathstringyes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/milestones/{milestoneCode}/provider-payments

Records that drawn funds for a milestone have reached the provider — service authority only.

Deliberately separate from the release: funds leave the levy pot when the milestone is released and reach the provider when the payment run settles. Collapsing the two would make the gap between drawn and paid — one of the two discrepancies this reconciliation exists to surface — impossible to represent.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
apprenticeshipIdpathstringyes—
milestoneCodepathstringyes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/levy-accounts/{organizationId}/ledger-entries

Records a movement on an organisation's levy ledger.

<b>Service authority only.</b> This is the front door through which money enters and leaves a levy pot: payroll accruals from HMRC's declaration, top-ups from the scheme, drawdowns for delivered training, expiries and clawbacks. An employer able to write their own accrual would be crediting themselves public funds. Idempotent on the caller's own `sourceReference` — a retried March payroll returns the movement already recorded rather than crediting the month twice.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

MarketplaceFulfilment

POST/api/v1/marketplace-fulfilment/{marketplaceCode}/activations

Resolves marketplaceCode's purchase token, mints (or replays) the caller's organisation's marketplace-bound licence, and tells the marketplace it is fulfilled. Idempotent on the marketplace's entitlement id: a retried or refreshed activation answers 200 with the same licence; a first activation answers 201.

The buyer and the organisation are the token's, never the body's, and only an administrator of that organisation may activate — a marketplace-bound licence is a purchase the organisation is billed for, by the marketplace.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
marketplaceCodepathstringyes—

Request body

Not marked as required in the document.

Responses

MarketplaceLifecycleNotifications

POST/api/v1/marketplace-fulfilment/{marketplaceCode}/lifecycle-notifications

Receives one lifecycle notification from marketplaceCode, has its adapter authenticate and read it, and applies it to the bound licence — idempotent on the marketplace's event id.

200 for every notification that is now in effect — applied, already in effect, superseded by the licence's end, or a replay — so the marketplace stops redelivering. Every refusal is non-2xx so it redelivers: 401 not authentic, 404 no adapter or no bound licence, 422 a change that cannot be applied (a pushed activation, a plan with no mapping or no plan selling it, a missing seat count or plan id), 413 too large.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
marketplaceCodepathstringyes—

Request body

No request body.

Responses

MarketplacePayoutSettlements

GET/api/v1/payouts/partners/{partnerId}/marketplace-settlements

Lists the partner's completed marketplace payouts created in `[from, to)`, most recently paid first, each with the marketplace transactions it settled and whether its lines add up to its amount.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yesThe Billing partner id the payouts were made to.
fromquerystring (date-time)noStart of the window (UTC, inclusive). Defaults to 365 days before to.
toquerystring (date-time)noEnd of the window (UTC, exclusive). Defaults to now.

Request body

No request body.

Responses

Merge

GET/api/v1/billing/merge/{mergeSessionId}/disposition

Returns the merge billing disposition for a merge session — survivor-scoped: the authenticated caller is treated as the surviving account. Post-commit this returns the persisted, audited settlement; pre-commit it returns the disposition Billing prepared when EPIC 9 announced the proven session (survivor + retired billing metadata only, no vault plaintext). Supplying retiredAccountId computes a live preview when no preparation exists. Returns 404 when none of the three is available, or the caller is not the session's survivor (honest-unavailable — the seam panel guards on this).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
mergeSessionIdpathstring (uuid)yes—
retiredAccountIdquerystring (uuid)no—

Request body

No request body.

Responses

ModuleSubscriptions

GET/api/v1/module-subscriptions

List all module subscriptions for the active organisation.

Requires a member of the organisation named by `X-Organization-Id` (or a platform billing admin). Returns all module subscriptions (active and cancelled) for the org.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)noThe active organisation, sent as `X-Organization-Id`.

Request body

No request body.

Responses

POST/api/v1/module-subscriptions/quote

FR-14.050a — quote a module purchase <b>before</b> the organisation commits to it.

Returns the recurring total for the requested seats, what is charged today (prorated when the module aligns to the organisation's existing billing period), the next billing date, and the cancellation terms. Read-only: it creates no subscription and reserves nothing, so a checkout screen may call it on every seat-count change. The organisation is the `X-Organization-Id` header bound to the caller's own claim, never the request body — a quote priced against another tenant's billing period would leak that tenant's renewal date. Quoting is the first step of a purchase, so it needs an organisation administrator (#17832).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)noThe active organisation, sent as `X-Organization-Id`.

Request body

Not marked as required in the document.

Responses

GET/api/v1/module-subscriptions/{id}

Get a specific module subscription by ID.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesModule subscription identifier.
X-Organization-Idheaderstring (uuid)noThe active organisation, sent as `X-Organization-Id`.

Request body

No request body.

Responses

POST/api/v1/module-subscriptions/{id}/cancel

Cancel a module subscription, stopping future billing for the module.

Stopping billing is an administrator's decision, so this needs an organisation administrator of the organisation named by `X-Organization-Id` (or a platform billing admin), not merely a member (#17832).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesModule subscription identifier to cancel.
X-Organization-Idheaderstring (uuid)noThe active organisation, sent as `X-Organization-Id`.

Request body

No request body.

Responses

204No Content

OrganisationLicenceContext

GET/api/v1/billing/organisations/{organizationId}/licence-context

The licence context of organizationId.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

No request body.

Responses

OrganisationLicencePosture

GET/api/v1/billing/organisations/{organizationId}/licence-posture

The licence posture of organizationId.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

No request body.

Responses

OrganizationBillingDetails

GET/api/v1/billing/organization-details

Reads the active organisation's billing details (organisation billing administrators only). `recorded: false` when none have been recorded.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

PUT/api/v1/billing/organization-details

Records or replaces the active organisation's billing address and VAT number (organisation billing administrators only). Every invoice addressed to the organisation afterwards carries them.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—

Request body

Not marked as required in the document.

Responses

OrganizationWholesaleRates

GET/api/v1/organizations/{organizationId}/modules/{moduleId}/wholesale-rate

Returns the organisation's authoritative wholesale per-seat rate for a module.

Answers 200 whether or not an arrangement exists: no arrangement yields `isAuthoritative=false` with a null `perSeatPrice`, which is the answer the console needs in order to keep labelling its own list-price figure an estimate. A 404 would be indistinguishable from "module does not exist" and would also leak which modules a tenant holds arrangements for.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe sponsoring organisation. Must match the caller's tenant.
moduleIdpathstringyesModule identifier (resolves against the arrangement's feature set).

Request body

No request body.

Responses

OrgBillingCatalogue

GET/api/v1/billing/catalogue/{moduleId}/pricing

Reads the SKU-aware list pricing for one catalogue module: its purchasable plans with the entitlement quotas that differentiate them, its add-ons, and its individually priced metered items (AC-07.064).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
moduleIdpathstringyesThe module identifier from the module registry.
X-Organization-Idheaderstring (uuid)noThe active organisation, sent by the portal as `X-Organization-Id` and verified against the caller's own org claim.

Request body

No request body.

Responses

OrgBillingConsumption

GET/api/v1/billing/consumption/meters

Reads the calling organisation's usage meters and projected end-of-period cost across its active subscriptions.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)noThe active organisation, sent by the portal as `X-Organization-Id` and verified against the caller's own org claim.

Request body

No request body.

Responses

OrgBillingCredits

GET/api/v1/billing/credits/balance

Reads the calling organisation's credit position: redeemable balance, credits earned this calendar month, and the face value expiring within 90 days.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)noThe active organisation, sent by the portal as `X-Organization-Id` and verified against the caller's own org claim.

Request body

No request body.

Responses

GET/api/v1/billing/credits/statement

Downloads the calling organisation's monthly credit statement as CSV or PDF (AC-07.062).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)noThe active organisation, sent by the portal as `X-Organization-Id` and verified against the caller's own org claim — the same binding the balance read performs, and for the same reason.
periodquerystringnoThe statement month as `YYYY-MM` (the portal's month picker's own value).
formatquerystringno`csv` or `pdf`.

Request body

No request body.

Responses

200Success — string (binary)

OrgBillingDunning

GET/api/v1/billing/dunning

Reads the calling organisation's dunning position: past-due subscriptions with their retry schedule and grace deadline, the blast radius of seats and modules, the dated degrade/restore timeline, and — after a recovery — the org-wide restoration confirmation including anything that did NOT come back.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)noThe active organisation, sent by the portal as `X-Organization-Id` and verified against the caller's own org claim.

Request body

No request body.

Responses

OrgBillingEnterpriseAgreement

GET/api/v1/billing/enterprise-agreement/overview

Reads the active organisation's position against its Enterprise Agreement: committed vs actual spend, the term and whether it renews, and deployed seats against the committed floor (AC-07.065).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)noThe active organisation, sent by the portal as `X-Organization-Id` and verified against the caller's own org claim and administrator role.

Request body

No request body.

Responses

OrgBillingInvoiceDetail

GET/api/v1/billing/invoices/{invoiceId}

The invoice, in the org invoice list's line shape.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
invoiceIdpathstring (uuid)yes—
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

OrgBillingInvoices

GET/api/v1/billing/invoices

Lists the calling organisation's issued invoices, newest first.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)noThe active organisation, sent by the portal as `X-Organization-Id` and verified against the caller's own org claim and administrator role.
limitqueryinteger (int32)noMost rows to return (bounded server-side).

Request body

No request body.

Responses

OrgBillingSubscription

GET/api/v1/billing/subscription

Reads the calling organisation's subscription position: its plan-level subscriptions (each with its own billing period and renewal), its module installs, and its seat figures with their provenance.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)noThe active organisation, sent by the portal as `X-Organization-Id` and verified against the caller's own org claim.

Request body

No request body.

Responses

POST/api/v1/billing/subscription/modules/{offeringId}/cancel

Cancels one of the organisation's module installs at the end of its current billing period (AC-07.060 module change; FR-14.052a / AC-14.007).

<br> <b>This is a deprovision, not an uninstall.</b> Entitlement is retained to the period end with no renewal and no refund. The immediate revocation on `ModuleSubscriptionsController.{id}/cancel` is the <i>uninstall</i> path — the aggregate's own documentation scopes `Cancel()` to that — and binding a customer's cancel to it would cut access they have already paid for. <br> <b>Keyed by offering, org bound by the guard.</b> The route names the offering the page displays; the tenant comes from `X-Organization-Id` and is bound by M:Essence.Payment.Billing.Api.Authorization.OrgScopeGuard.RequireOrgBillingAdmin(Microsoft.AspNetCore.Mvc.ControllerBase,System.Guid). A write needs that binding more than the reads do — the gateway forwards `billing` with `AuthorizationPolicy: None`, so without it any authenticated user could cancel another tenant's modules by changing one header. It needs the <i>role</i> half at least as much: this cancellation changes what the organisation is billed, so an ordinary member of it must not be able to reach the lookup at all (issue #8523).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
offeringIdpathstring (uuid)yesThe marketplace offering whose install is being cancelled.
X-Organization-Idheaderstring (uuid)noThe active organisation, sent as `X-Organization-Id`.

Request body

No request body.

Responses

OrgSeatLifecycle

GET/api/v1/billing/seat-lifecycle/my-notices

Reads the seat notices that concern the caller — their own leaver disposition notice or new-hire confirmation.

Scoped to the caller's own subject and to nobody else's. An admin route that could read another person's notice would put the leaver's and the new hire's private accounts of the change behind an org-scope check, which is not who they belong to.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
limitqueryinteger (int32)noMaximum notices, most recent first.

Request body

No request body.

Responses

POST/api/v1/billing/seat-lifecycle/organizations/{organizationId}/bulk-reclaim

Reclaims several seats in one operation, reporting per-row outcomes.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation whose seats they are.

Request body

Not marked as required in the document.

Responses

GET/api/v1/billing/seat-lifecycle/organizations/{organizationId}/change-log

Reads the organisation's seat-change log — the access-review feed, deliberately separate from the billing CSV.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation whose seat movements to read.
limitqueryinteger (int32)noMaximum rows, most recent first.

Request body

No request body.

Responses

GET/api/v1/billing/seat-lifecycle/organizations/{organizationId}/policy

Reads the organisation's configurable reclaim defaults.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation.

Request body

No request body.

Responses

PUT/api/v1/billing/seat-lifecycle/organizations/{organizationId}/policy

Sets the organisation's configurable reclaim defaults.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation.

Request body

Not marked as required in the document.

Responses

GET/api/v1/billing/seat-lifecycle/organizations/{organizationId}/preview

Reads what reclaiming a holder's seat would revoke and what would stay with the seat, plus the organisation's pre-selected defaults.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation whose seat it is.
leaverRefquerystring (uuid)noThe departing holder (opaque org-user reference).

Request body

No request body.

Responses

POST/api/v1/billing/seat-lifecycle/organizations/{organizationId}/reclaim

Reclaims a seat from a departing holder and requests the teardown the chosen scope implies.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation whose seat it is.

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/seat-lifecycle/organizations/{organizationId}/records/{seatReassignmentId}/assign

Grants a reclaimed seat to its incoming holder. No new seat, no new charge (FR-14.238); 409 when the licence no longer pays for the seat (FR-14.238(c)).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation whose seat it is.
seatReassignmentIdpathstring (uuid)yesThe reclaimed seat record to complete.

Request body

Not marked as required in the document.

Responses

OrgSeatRegister

GET/api/v1/billing/seat-register/organizations/{organizationId}

Reads the organisation's seat register, or the reason it has none.

An unenrolled organisation is answered 200 with `enrolled: false` and a reason rather than 404: the surface must be able to say the figure is unavailable <i>and what to do about it</i>, which a 404 conveys neither of.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation.

Request body

No request body.

Responses

POST/api/v1/billing/seat-register/organizations/{organizationId}/enrol

Enrols the organisation into the seat register, optionally seeding it with the seats it already bills for.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation.

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/seat-register/organizations/{organizationId}/seats

Adds a seat to the register, unheld.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation.

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/seat-register/organizations/{organizationId}/seats/{seatRef}/assign

Records that a holder now occupies a registered seat.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation.
seatRefpathstringyesThe seat.

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/seat-register/organizations/{organizationId}/seats/{seatRef}/release

Returns a registered seat to the organisation's unassigned pool.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation.
seatRefpathstringyesThe seat.

Request body

No request body.

Responses

PackageVersionMigrations

GET/api/v1/billing/package-version-migrations

Every delta recorded for the organisation in `X-Organization-Id` (its billing administrators only), optionally narrowed to one subscription.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—
subscriptionIdquerystring (uuid)no—

Request body

No request body.

Responses

POST/api/v1/billing/package-version-migrations

Records the delta against the subscription, append-only, with the migration's effective date stamped. 201; 409 `PACKAGE_VERSION_MIGRATION_OUTSIDE_PERIOD` when the effective date falls outside the period.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—

Request body

Not marked as required in the document.

Responses

GET/api/v1/billing/package-version-migrations/mine

The caller's own version-migration deltas, newest first, each with its credit, charge and net.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

POST/api/v1/billing/package-version-migrations/preview

Computes the delta for a proposed version migration and stores nothing — the figure the renewal screen shows before anything is charged. 409 `PACKAGE_VERSION_MIGRATION_OUTSIDE_PERIOD` when the effective date falls outside the current billing period.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—

Request body

Not marked as required in the document.

Responses

GET/api/v1/billing/package-version-migrations/{id}

One delta, for its subscriber, or for an administrator of its organisation presenting that organisation in `X-Organization-Id`. 404 for anyone else.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

POST/api/v1/billing/package-version-migrations/{id}/apply

Stamps the invoice or credit note that carried the delta (the organisation's billing administrators only). A second apply, or applying a zero delta, is refused with 400 `BUSINESS_RULE_VIOLATION`.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
X-Organization-Idheaderstring (uuid)no—

Request body

Not marked as required in the document.

Responses

PartnerChannelTrueUp

GET/api/v1/channel-commissions/true-up

The caller's true-up for one quarter.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
periodquerystringnoThe quarter, `yyyy-Qn` (e.g. `2026-Q2`); anything else is 400 `INVALID_CHANNEL_TRUE_UP_PERIOD`.

Request body

No request body.

Responses

PartnerMetrics

GET/api/v1/billing/partner-metrics

FR-14.313 — every metric the caller has registered.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

POST/api/v1/billing/partner-metrics

FR-14.313 — registers a metric for one of the caller's offerings. It lands Draft: nothing rates until the offering is published.

409 when the code is already registered, when it collides with a first-party Essence meter, or when it is within two characters of one (which the usage endpoint refuses as a typo, so such a code could never be metered at all).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/billing/partner-metrics/statement

FR-14.315 — the builder statement for one calendar month: per offering and metric, the usage, the rated amount, the exchange take, the builder share and its payout status.

A statement shows the caller's own money only. Another builder's offering id is not an error — it simply matches nothing of the caller's, so it cannot be used to learn that the offering exists.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
periodquerystringnoThe month, `yyyy-MM` (UTC). Omitted means the current month.
offeringIdquerystring (uuid)noRestrict to one of the caller's offerings.
partnerIdquerystring (uuid)noHonoured ONLY for a billing admin, who must name the builder. A partner caller's own builder is resolved from its standing and a different id here is refused.

Request body

No request body.

Responses

GET/api/v1/billing/partner-metrics/{id}

One registration.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/billing/partner-metrics/{id}/activate

FR-14.313 — the offering is published, so its metrics begin to rate. Idempotent.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/billing/partner-metrics/{id}/withdraw

FR-14.313 — the listing is gone; the metric stops rating. Idempotent.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

PartnerPayouts

GET/api/v1/payouts/mine

The caller's payouts, each with its `statement` block.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/payouts/{id}/statement

The statement PDF for one of the caller's payouts.

404 for a payout that is not the caller's, exactly as for one that does not exist. 409 `PAYOUT_STATEMENT_NOT_AVAILABLE` while the payout has no outcome yet.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200Success — string (binary)

PartnerPayoutSettings

GET/api/v1/payouts/settings

The caller's payout destination (masked) and its current withholding declaration.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

PUT/api/v1/payouts/settings/withholding

Records a withholding declaration. It replaces the current one, which is kept as history.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

PartnerReports

GET/api/v1/partners/{partnerId}/commission-summary

Gets commission summary for a partner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
startDatequerystring (date-time)no—
endDatequerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/partners/{partnerId}/financial-report

Gets comprehensive financial report for a partner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
startDatequerystring (date-time)no—
endDatequerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/partners/{partnerId}/financial-report/export

Exports financial report as CSV.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
startDatequerystring (date-time)no—
endDatequerystring (date-time)no—

Request body

No request body.

Responses

200Success
GET/api/v1/partners/{partnerId}/payout-summary

Gets payout summary for a partner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
startDatequerystring (date-time)no—
endDatequerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/partners/{partnerId}/revenue-breakdown

Gets revenue share breakdown by product type and tier.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
startDatequerystring (date-time)no—
endDatequerystring (date-time)no—

Request body

No request body.

Responses

PaymentMethods

GET/api/v1/payment-methods

List payment methods for the authenticated user.

Returns all stored (tokenised) payment methods associated with the user identified by the `sub` JWT claim. Methods are sorted with the default method first.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

POST/api/v1/payment-methods

Add a new payment method using a gateway token.

Accepts a payment method token from the client-side Stripe.js or Adyen SDK. Raw card data (PAN, CVC) must NEVER be sent to this endpoint. Typical workflow: 1. Client collects card details using Stripe.js / Adyen SDK. 2. SDK tokenises the card and returns a PaymentMethod ID / token. 3. Client sends that token to this endpoint. 4. Server stores the token reference — no card data touches our backend. Idempotency (AC-14.003): send an `Idempotency-Key` header. A retry with the same key and the same registration returns the method the first request created (200, with `Idempotent-Replayed: true`) and registers nothing; the same key with a different registration is 409.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—
Idempotency-Keyheaderstringno—

Request body

Not marked as required in the document.

Responses

POST/api/v1/payment-methods/setup-intent

Start a PCI-safe card-collection flow and return what the browser needs to mount the gateway's hosted card element.

Provisions (or reuses) the caller's gateway customer, opens a SetupIntent against it, and returns the intent's client secret plus the publishable key and SDK URL. The response carries NO secret: a client secret authorises attaching one payment method to one customer and nothing else. The card itself is posted by the browser straight to the gateway — it never reaches this API, which is what keeps the integration inside PCI SAQ-A. Returns 503 when this deployment has no real gateway credentials, so a placeholder environment fails loudly instead of collecting a card that can never be charged.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

502Server Error
503Server Error
DELETE/api/v1/payment-methods/{id}

Remove a stored payment method.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

204No Content
PUT/api/v1/payment-methods/{id}/default

Set a payment method as the default for the authenticated user. Commercial Licence P6-R26: the overdue invoices of the caller's PastDue or Suspended licences — or, with `X-Organization-Id`, of that organisation's — are charged to it once (at most once an hour per invoice and card), a settled one reinstates its licence, and the answer says `overdueSettlement`: `none`, `settled` or `declined`.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

PaymentPageScriptRegister

GET/api/v1/payment-page-script-registers/{environmentKey}

Reads an environment's register: every entry (removed ones included) and its full history. 404 when no register has been started for the environment.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
environmentKeypathstringyes—

Request body

No request body.

Responses

POST/api/v1/payment-page-script-registers/{environmentKey}/scripts

Proposes a script for the environment's register. It enters `Pending` and is not authorised until `authorise` is called. 409 when the URL already has a live entry.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
environmentKeypathstringyes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/payment-page-script-registers/{environmentKey}/scripts/{scriptId}/authorise

Authorises a Pending or Suspended entry. 409 for a removed one.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
environmentKeypathstringyes—
scriptIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/payment-page-script-registers/{environmentKey}/scripts/{scriptId}/remove

Removes an entry. Terminal: the entry stays in the register as evidence.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
environmentKeypathstringyes—
scriptIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/payment-page-script-registers/{environmentKey}/scripts/{scriptId}/suspend

Suspends an Authorised entry. 409 for any other status.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
environmentKeypathstringyes—
scriptIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

Payments

GET/api/v1/Payments

List payment history for a user.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
userIdquerystring (uuid)noOptional user filter. Non-admin callers may only filter by their own id; admins may filter by any user.
pagequeryinteger (int32)no1-based page number.
pageSizequeryinteger (int32)noNumber of records per page (max 100).

Request body

No request body.

Responses

POST/api/v1/Payments

Create a new payment. The owning `UserId` is taken from the JWT principal — any value supplied in the body is overwritten (debt-2026-05-11-163, A07).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

POST/api/v1/Payments/intents

Create a Payment Intent for client-side confirmation. Returns client secret for Stripe.js or client-side SDK.

This endpoint creates a Payment Intent in the payment gateway and returns a client secret for client-side confirmation. This is the modern, recommended approach for handling payments with SCA (Strong Customer Authentication) support. Workflow: 1. Client calls this endpoint to create Payment Intent 2. Server returns client_secret 3. Client uses Stripe.js (or similar) to confirm payment with 3D Secure 4. Client calls /confirm endpoint after authentication 5. Server verifies payment status Owning `UserId` is taken from the JWT principal — body-supplied values are overwritten (debt-2026-05-11-163, A07).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/Payments/intents/{paymentIntentId}

Get Payment Intent status from the payment gateway.

Retrieves the current status of a Payment Intent from the gateway. Useful for checking payment status after 3D Secure redirect or for polling payment status on the client side.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
paymentIntentIdpathstringyes—
gatewayquerystringno—

Request body

No request body.

Responses

POST/api/v1/Payments/intents/{paymentIntentId}/confirm

Confirm a Payment Intent after 3D Secure authentication.

Call this endpoint after the customer completes 3D Secure authentication. The endpoint retrieves the latest payment status from the gateway and updates the local payment record accordingly.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
paymentIntentIdpathstringyes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/Payments/{id}

Get a payment by ID. Authorised via Essence.Payment.Billing.Api.Authorization.BillingPolicies.ResourceOwner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/Payments/{id}/process

Process a payment through the payment gateway. The payment must be owned by the caller; resource ownership is verified after the load and before dispatch.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/Payments/{id}/refund

Process a refund for a completed payment.

Initiates a refund through the payment gateway. A full refund is issued when request does not specify an amount. Partial refunds are supported by providing an amount less than the original payment. The caller's FR-14.015a/b authority is read from their claims (Essence.Payment.Billing.Api.Authorization.RefundAuthority): the payment's owner (self-service, full refunds within 14 days), the organisation's admin or `billing.refund` holder for its own invoices (within 90 days), or billing admin.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

PayoutApprovals

GET/api/v1/payouts

Lists payouts newest first, a keyset page at a time.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
statusquerystringnoOptional status name, e.g. `Pending`.
cursorquerystringnoThe `nextCursor` of the previous page.
limitqueryinteger (int32)noPage size, 1 to 200 (default 25).

Request body

No request body.

Responses

GET/api/v1/payouts/{id}

Gets one payout, including whether it is awaiting approval.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/payouts/{id}/approve

Approves a pending payout above the FR-14.095 threshold so it can be processed. The approver is taken from the token and must not be the administrator who created the payout.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

PayoutRetry

GET/api/v1/payouts/manual-reissue-tasks

FR-14.097(b): finance's manual-reissue tasks, oldest first — one per payout that fell back to manual bank transfer, naming the partner, the amount owed and the failure that sent it there. Open tasks only unless includeResolved.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
includeResolvedquerybooleanno—
limitqueryinteger (int32)no—

Request body

No request body.

Responses

POST/api/v1/payouts/{id}/disbursement-failures

Records that an attempt to disburse a released payout failed. The payout is retried at day 1, 3 and 7 after its first failure; after the day-7 failure, or at once on `account_closed` or `payout_method_invalid`, it falls back to manual handling.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/payouts/{id}/manual-reissue

Completes a payout awaiting manual handling, recording the bank transfer's reference. Resolves the payout's manual-reissue task.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

Payouts

POST/api/v1/payouts

Creates a new payout for a partner.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/payouts/partner/{partnerId}

Gets all payouts for a partner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yesPartner identifier
startDatequerystring (date-time)noOptional start date filter
endDatequerystring (date-time)noOptional end date filter

Request body

No request body.

Responses

GET/api/v1/payouts/partner/{partnerId}/statistics

Gets payout statistics for a partner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yesPartner identifier

Request body

No request body.

Responses

200Success — unspecified
POST/api/v1/payouts/{id}/process

Processes a pending payout.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesPayout identifier

Request body

Not marked as required in the document.

Responses

PluginPurchases

GET/api/v1/plugin-purchases

List all plugin purchases for the authenticated user.

Returns all purchases (active and cancelled) in descending purchase date order. The user identity is derived from the JWT 'sub' claim.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/plugin-purchases/{id}

Get a specific plugin purchase by ID.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesPlugin purchase identifier.

Request body

No request body.

Responses

PremiumFinancePlans

GET/api/v1/orgs/{organizationId}/premium-finance/plans

Every premium-finance plan this insurer holds, most recently changed first.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/orgs/{organizationId}/premium-finance/plans

Opens the EPIC 14 record of a premium-finance agreement and its instalment schedule.

<br> Retrying is safe: a repeat open for the same agreement returns the plan already held rather than a second schedule, which would double the policyholder's apparent liability. <br> A 422 carries a machine-readable `reasonCode` in the RFC 7807 body — `plan-already-open`, `insurer-mismatch`, `schedule-invalid`, `currency-invalid` or `plan-details-invalid` — so the seam can branch without parsing prose.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/orgs/{organizationId}/premium-finance/plans/{agreementId}

The full plan — schedule, attempt history and arrears episodes.

The oversight view behind the position. The attempt history is what a lender's default notice and an insurer's cancellation are defended against, so it is readable rather than collapsed to a status.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
agreementIdpathstringyes—

Request body

No request body.

Responses

POST/api/v1/orgs/{organizationId}/premium-finance/plans/{agreementId}/arrears-payments

Takes an arrears payment against a plan — the cure path.

<br> Applied oldest instalment first, which is what the lender's own ledger does, so a plan paid down here reconciles against it without a rule about which instalment a part-payment settled. <br> Clearing the arrears closes the arrears episode and publishes `PremiumFinanceArrearsClearedIntegrationEvent` — the signal the insurer's cascade needs to stand a default down before a cancellation already in flight proceeds against someone who has paid. <br> A 422 carries `reasonCode` — `plan-absent`, `plan-not-active`, `currency-mismatch`, `amount-invalid`, `no-arrears-outstanding` or `payment-exceeds-arrears`. An overpayment is refused rather than held: this is a record of a credit agreement, not a wallet, and quietly keeping a policyholder's money with no surface that shows or returns it would be worse than refusing it.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
agreementIdpathstringyes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/orgs/{organizationId}/premium-finance/plans/{agreementId}/cancellation

Terminates a plan — the cascade reached cancellation of cover, or the agreement was settled off-platform.

Outstanding instalments are written off so the arrears position falls to zero. A cancelled plan that kept reporting arrears would leave the policyholder's cover-status surface asking them for money against an agreement that no longer exists.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
agreementIdpathstringyes—

Request body

No request body.

Responses

POST/api/v1/orgs/{organizationId}/premium-finance/plans/{agreementId}/instalments/{sequence}/collection-attempts

Records the outcome of one attempt to collect an instalment from the mandate.

<br> A refusal publishes `PremiumFinanceInstalmentFailedIntegrationEvent` on the outbox in the same unit of work as the attempt row (EVT-003) — never `SubscriptionPastDue`, which would have EPIC 39 restrict the policyholder's vault for an insurance instalment they did not pay to Essence. <br> Attempts are append-only: a retry records a further attempt rather than overwriting the last refusal, because the attempt history is what the lender's default notice is defensible against. <br> A 422 carries `reasonCode` — `plan-absent`, `plan-not-active`, `instalment-absent` or `instalment-not-collectable`.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
agreementIdpathstringyes—
sequencepathinteger (int32)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/orgs/{organizationId}/premium-finance/plans/{agreementId}/position

Billing's position on one premium-finance agreement — the read model the insurer's seam queries.

<br> <b>404 means "we hold no plan", never "you owe nothing".</b> The seam distinguishes an unavailable ledger from a clear one, and a zero position returned for an unknown agreement would collapse the two into the single most dangerous sentence this journey can show a policyholder who is a day from losing cover. <br> `asOf` is always present so the surface can say when the figure was true.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—
agreementIdpathstringyes—

Request body

No request body.

Responses

PriceBookStates

GET/api/v1/price-book-states/{organizationId}

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

No request body.

Responses

PUT/api/v1/price-book-states/{organizationId}

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

PricingPlans

POST/api/v1/PricingPlans

Create a new pricing plan (Admin only).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/PricingPlans/active

Get the active pricing plans, optionally narrowed to one audience.

#9481: the catalogue now carries both a consumer ladder and an organisation one, so a caller building an upgrade surface must be able to ask for the right half — an individual pressing "upgrade" was previously offered a GBP 499/month, 25-seat organisation plan. Every plan also carries its own `audience` in the response, so a caller that wants to group rather than filter can. The parameter is optional and unfiltered by default deliberately: this endpoint is `[AllowAnonymous]` and backs the public pricing page, where showing the catalogue to a visitor who has not yet said which they are is correct. An unrecognised value is refused rather than ignored — silently returning everything to a caller that asked for one audience is how a consumer gets shown an organisation plan. <br><b>Partner plans are the one exception to "unfiltered".</b> They are sold under a partner agreement, not off a public price page, so the handler withholds them unless a caller names `Partner` explicitly. A numeric value is refused for the same reason: the enum member Partner happens to be 3, and `?audience=3` is not a caller naming it. <br><b>Unlisted plans reach only the people who maintain the price list (#12001).</b> A plan that declares no SKU is on no ladder and is, in practice, a one-customer negotiated contract. The handler withholds it unless the caller satisfies the same predicate as Essence.Payment.Billing.Api.Authorization.BillingPolicies.Admin, so the admin console still lists the plan it created while an anonymous visitor never learns it exists.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
audiencequerystringno`Consumer`, `Organisation` or `Partner` to return only plans sold to that audience. Omitted returns the catalogue a buyer may shop from — every audience EXCEPT Partner.

Request body

No request body.

Responses

PUT/api/v1/PricingPlans/{id}

Update an existing pricing plan (Admin only). Used by the commercial console to configure a plan after creation — e.g. the Free plan's storage quota (`Features["limit_storagegb"]`) and base price. Fields omitted from the body are left unchanged; a supplied `features` map replaces the plan's features wholesale.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

Quota

POST/api/v1/quota/check

Answers whether the named subject may draw the requested units of a metric.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

QuotaLease

POST/api/v1/usage/quota/lease

Draws a lease: at most `blockUnits` (≤ 1,000), never more than the allowance has left after recorded usage, outstanding reservations and outstanding leases.

An exhausted allowance is a 200 with `allowed=false` and `grantedUnits=0`, as for the check. A missing idempotency key is a 400 and a key reused for a different block a 409 (RFC 7807 ProblemDetails). An expired lease that is never settled keeps holding what was not recorded under it until the billing period ends — it never over-grants.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstringno—

Request body

Not marked as required in the document.

Responses

POST/api/v1/usage/quota/lease/{leaseId}/settle

Settles a lease: reports the units used; the rest return to the allowance. Idempotent by (lease, `sequence`): a retry is answered as a replay, a different settlement is a 409. Accepted after the lease's TTL — a late settlement only ever returns units.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
leaseIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

Receivables

GET/api/v1/receivables/accounts/{accountKey}

One account's whole record — the rolled-up position, every unpaid object behind it, the full escalation history across every ladder, and any write-off proposals.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
accountKeypathstringyesThe account, as `org:{guid}` or `user:{guid}`.
segmentquerystringnoSegment label selecting the ageing bands to apply.

Request body

No request body.

Responses

404The account has no open receivable. — Microsoft.AspNetCore.Mvc.ProblemDetails
POST/api/v1/receivables/accounts/{accountKey}/hold

Place a bounded collections hold. Suppresses every automatic notice for this account, including the FR-14.014c day-44 auto-cancel, until it expires.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
accountKeypathstringyesThe account.

Request body

Not marked as required in the document.

Responses

400The expiry is in the past or beyond the configured maximum. — Microsoft.AspNetCore.Mvc.ProblemDetails
DELETE/api/v1/receivables/accounts/{accountKey}/hold

Release a live hold early, returning the account to the ladder at the stage it left.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
accountKeypathstringyesThe account.

Request body

Not marked as required in the document.

Responses

400No hold is in force, or the reason is missing. — Microsoft.AspNetCore.Mvc.ProblemDetails
POST/api/v1/receivables/accounts/{accountKey}/ownership

Take an account off the automatic dunning engine and onto a named owner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
accountKeypathstringyesThe account.

Request body

Not marked as required in the document.

Responses

400The account key or the reason is malformed. — Microsoft.AspNetCore.Mvc.ProblemDetails
DELETE/api/v1/receivables/accounts/{accountKey}/ownership

Hand an account back to the automatic dunning engine, releasing any hold with it.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
accountKeypathstringyesThe account.

Request body

Not marked as required in the document.

Responses

400The account key or the reason is malformed. — Microsoft.AspNetCore.Mvc.ProblemDetails
GET/api/v1/receivables/ageing

The aged-receivables book: every open position banded by age, per currency, with the bucketing basis stated on the response.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
bucketqueryEssence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucketnoRestrict to one band.
currencyquerystringnoRestrict to one ISO 4217 currency.
accountKindqueryEssence.Payment.Billing.Domain.Aggregates.Collections.CollectionsAccountKindnoRestrict to organisations or individuals.
ownershipqueryEssence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderOwnershipnoRestrict to one ladder-ownership state.
ownerRefquerystringnoRestrict to one named owner.
heldOnlyquerybooleannoOnly accounts with a live collections hold.
pastEscalationWindowOnlyquerybooleannoOnly positions past the FR-14.197(c) AR window.
minimumOutstandingquerynumber (double)noOnly positions at or above this value.
segmentquerystringnoSegment label selecting the ageing bands to apply.

Request body

No request body.

Responses

200The book. Check `truncated` before treating the totals as complete. — Essence.Payment.Billing.Application.Queries.Receivables.ReceivablesAgeingSummary
GET/api/v1/receivables/performance

Collections performance per currency: DSO, recovery rate, write-off rate, the over-90 provision proxy, and the value sitting unposted in the approval queue.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
fromquerystring (date-time)noInclusive window start. Defaults to 90 days ago.
toquerystring (date-time)noExclusive window end. Defaults to now.

Request body

No request body.

Responses

200The figures. Ratios are null rather than zero when their base is zero. — Essence.Payment.Billing.Application.Queries.Receivables.CollectionsPerformance[]
400The window ends before it starts. — Microsoft.AspNetCore.Mvc.ProblemDetails
GET/api/v1/receivables/worklist

One page of the collections worklist, oldest-late first, with per-currency subtotals over the whole matching set rather than the page.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
bucketqueryEssence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucketnoRestrict to one band.
currencyquerystringnoRestrict to one ISO 4217 currency.
accountKindqueryEssence.Payment.Billing.Domain.Aggregates.Collections.CollectionsAccountKindnoRestrict to organisations or individuals.
ownershipqueryEssence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderOwnershipnoRestrict to one ladder-ownership state.
ownerRefquerystringnoRestrict to one named owner.
heldOnlyquerybooleannoOnly accounts with a live collections hold.
pastEscalationWindowOnlyquerybooleannoOnly positions past the FR-14.197(c) AR window.
minimumOutstandingquerynumber (double)noOnly positions at or above this value.
segmentquerystringnoSegment label selecting the ageing bands to apply.
skipqueryinteger (int32)noOffset into the matching set.
takequeryinteger (int32)noPage size, 1..500.

Request body

No request body.

Responses

400The page bounds are out of range. — Microsoft.AspNetCore.Mvc.ProblemDetails
GET/api/v1/receivables/write-offs

The write-off approval queue, oldest-requested first.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
statusqueryEssence.Payment.Billing.Domain.Aggregates.Collections.WriteOffProposalStatus[]noStatuses to include. Repeatable. Omitted means pending and approved.
limitqueryinteger (int32)noPage size, 1..500.

Request body

No request body.

Responses

POST/api/v1/receivables/write-offs

Propose a write-off. This raises a request; it does not remove anything from the ledger. The value determines how many signatures the proposal needs.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201The proposal, awaiting approval. — Essence.Payment.Billing.Application.DTOs.WriteOffProposalDto
400The invoices span accounts or currencies, or carry no balance. — Microsoft.AspNetCore.Mvc.ProblemDetails
404One of the invoices does not exist. — Microsoft.AspNetCore.Mvc.ProblemDetails
409An invoice is already inside an open proposal. — Microsoft.AspNetCore.Mvc.ProblemDetails
POST/api/v1/receivables/write-offs/{proposalId}/approve

Sign a pending proposal. Refused when the caller is the proposer, or has already signed — holding the grant is necessary and not sufficient.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
proposalIdpathstring (uuid)yesThe proposal.

Request body

Not marked as required in the document.

Responses

200The proposal and its chain so far. — Essence.Payment.Billing.Application.DTOs.WriteOffProposalDto
400The caller is the proposer, has already signed, or the proposal is not pending. — Microsoft.AspNetCore.Mvc.ProblemDetails
403The caller does not hold the write-off approval grant. — Microsoft.AspNetCore.Mvc.ProblemDetails
POST/api/v1/receivables/write-offs/{proposalId}/execute

Post a fully approved proposal. The named invoices become uncollectible and the decision record is emitted for EPIC 4 to anchor and EPIC 84 to dispose of.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
proposalIdpathstring (uuid)yesThe proposal.

Request body

No request body.

Responses

400The proposal is not fully approved. — Microsoft.AspNetCore.Mvc.ProblemDetails
403The caller does not hold the write-off approval grant. — Microsoft.AspNetCore.Mvc.ProblemDetails
POST/api/v1/receivables/write-offs/{proposalId}/reject

Refuse a proposal. The balance stays on the book and stays chaseable.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
proposalIdpathstring (uuid)yesThe proposal.

Request body

Not marked as required in the document.

Responses

400The caller is the proposer, or the proposal is already disposed of. — Microsoft.AspNetCore.Mvc.ProblemDetails
403The caller does not hold the write-off approval grant. — Microsoft.AspNetCore.Mvc.ProblemDetails

RenewalOutcome

POST/api/v1/subscriptions/{subscriptionRef}/renewal-outcome

Execute EPIC 85's concluded renewal request on subscriptionRef.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionRefpathstringyes—

Request body

Not marked as required in the document.

Responses

Reports

GET/api/v1/reports/activation-attribution

FR-14.063 — re-engagement-touch → activation attribution for a period: the funnel roll-up (activations per touch) plus the per-activation linkage rows the consent audit reads. Carries ids, an opaque touch token and billing metadata only — never PII.

The query, DTO, record, repository and migration have existed since debt-2026-07-03-236, but no action sent the query, so the linkage was recorded and unreadable (debt-2026-08-11-049, journey onboarding-abandoned-reengagement-to-activation). The CSV form of the same report is `GET export?type=activation-attribution`.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/reports/channel

Get channel partner revenue attribution — aggregate partner-level data only.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/reports/churn

Get churn analysis — voluntary vs involuntary churn for a period.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/reports/credit-liability

FR-14.172 — platform-wide outstanding credit liability: active + deferred balance, 30/60/90-day projected burn, and forward expiry buckets.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/reports/executive-dashboard

FR-14.105..106 — executive dashboard summary combining MRR/ARR, current-period revenue, top-N customer concentration, and gross margin (revenue − channel commissions).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
periodStartquerystring (date-time)no—
periodEndquerystring (date-time)no—
topCustomersqueryinteger (int32)no—

Request body

No request body.

Responses

GET/api/v1/reports/export

Export a financial report as a CSV file download.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
typequerystringnoReport type: mrr | revenue | churn | channel | sponsored | activation-attribution
dateFromquerystring (date-time)noPeriod start (optional)
dateToquerystring (date-time)noPeriod end (optional)

Request body

No request body.

Responses

200Success
GET/api/v1/reports/involuntary-churn

Get the finance-facing involuntary-churn / degradation report — billing-caused degradation only (payment failures, currently-degraded subscriptions, involuntary cancellations, time-in-dunning) for the failed-payment-dunning-to-reinstatement journey (debt-2026-06-11-071).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/reports/metered-sku-revenue

Per-metered-SKU billed revenue for one calendar month, platform-wide (journey `commercial-manager-metered-sku-margin-review` step 2; debt-2026-08-18-125).

The sibling reads answer adjacent questions and not this one: `usage/summary` is per-subscription and `revenue-by-stream` is by commercial stream, so a consumer asking "what did SKU X bill this period" would have to aggregate billing data it does not own. Rows cover the `USG-*` family; billed revenue that resolves to no metered SKU, and lines carrying no GBP figure, are reported in their own fields rather than folded in or dropped.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
periodquerystringno—

Request body

No request body.

Responses

GET/api/v1/reports/mrr

Get MRR/ARR breakdown across all active subscriptions.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
asOfquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/reports/mrr-by-stream

FR-14.104 — MRR / ARR across every recurring revenue stream: self-pay subscriptions, module subscriptions, agency-model channel orders, and sponsored subscriptions. One-shot revenue is excluded by definition.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
asOfquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/reports/mrr-history

FR-14.104 (financial-dashboard MRR trend) — monthly self-pay MRR/ARR series over the last months calendar months (default 8).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
monthsqueryinteger (int32)no—

Request body

No request body.

Responses

GET/api/v1/reports/revenue

Get revenue by tier, currency, and acquisition source for a period.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/reports/revenue-by-stream

FR-14.100 / FR-14.102 / FR-14.103 — revenue partitioned across all five commercial streams (self-pay subscription, module subscription, plugin purchase, sponsored invoice, channel partner order). Period defaults to the current calendar month if omitted.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
periodStartquerystring (date-time)no—
periodEndquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/reports/sponsored

Get sponsored entitlement revenue — aggregate counts only, no user identities.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

RetainerTrustFundings

GET/api/v1/billing/retainer-trust-fundings

Every funding the firm in `X-Organization-Id` holds against matterReference (organisation billing administrators only).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Organization-Idheaderstring (uuid)no—
matterReferencequerystringno—

Request body

No request body.

Responses

POST/api/v1/billing/retainer-trust-fundings

Starts funding a retainer into the named firm's client trust account. 201, awaiting clearance.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/billing/retainer-trust-fundings/mine

The caller's own retainer fundings, newest first.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/billing/retainer-trust-fundings/{id}

One funding, for its client, or for an administrator of its firm presenting the firm in `X-Organization-Id`. 404 for anyone else.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

POST/api/v1/billing/retainer-trust-fundings/{id}/clearance

Records the payment rails' clearing result for a funding awaiting clearance (FR-14.213): Cleared (with the tokenised payment's reference), Declined (with the decline reason) or TimedOut. A second outcome is refused.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/retainer-trust-fundings/{id}/refund

Returns the cleared trust funds to the client (the firm's administrators only; a reason is required). 409 `RETAINER_TRUST_NOT_CLEARED` before the funds have cleared.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
X-Organization-Idheaderstring (uuid)no—

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/retainer-trust-fundings/{id}/release

Opens the matter and allocates the cleared trust funds to it (the firm's administrators only). 409 `RETAINER_TRUST_NOT_CLEARED` before the funds have cleared.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
X-Organization-Idheaderstring (uuid)no—

Request body

No request body.

Responses

RevenueClassifications

GET/api/v1/revenue-classifications/exceptions

The open exception queue — tenants whose billing events are being refused into the revenue population because they have no classification.

This is the work list that makes the refusal actionable rather than merely safe: each entry names a tenant and counts the billing events already held out of revenue waiting on an answer.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/revenue-classifications/{tenantType}/{tenantId}

The tenant's classification history and the class in force as at a date.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
tenantTypepathEssence.Payment.Billing.Contracts.RevenueClassification.RevenueTenantTypeyes—
tenantIdpathstring (uuid)yes—
asOfquerystring (date-time)no—

Request body

No request body.

Responses

PUT/api/v1/revenue-classifications/{tenantType}/{tenantId}

Records how a tenant's money relates to group revenue, effective from a date.

<br> Appends to the tenant's history; nothing is overwritten. Backdating `effectiveFrom` is how an already-reported period is corrected, and how a tenant that pre-dates the register is brought into it without restating periods it was correctly reported in. <br> The classifying actor is taken from the bearer token, never from the request body: an attributable record that the caller can forge is not attributable.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
tenantTypepathEssence.Payment.Billing.Contracts.RevenueClassification.RevenueTenantTypeyes—
tenantIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

SandboxLicences

POST/api/v1/billing/sandbox-licences

Buys a sandbox licence. Idempotent on `purchaseId`: 201 when minted, 200 when this purchase had already minted it (`replay: true`).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/billing/sandbox-licences/context

The sandbox licences on offer to an organisation, and the ones it holds.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
audiencequerystringno`Organisation` (the default) or `Partner`.
organizationIdquerystring (uuid)noThe organisation asked about; absent ⇒ the caller's own.

Request body

No request body.

Responses

POST/api/v1/billing/sandbox-licences/sponsorships

P4-R25 — Essence sponsors a sandbox: a Premium or Enterprise sandbox licence at £0 for a defined period (≤ 90 days). Platform billing admin only. Idempotent on `grantId`: 201 when minted, 200 on a replay.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/sandbox-licences/{subscriptionId}/rollback

Takes back a sandbox licence whose environment could not be built: cancelled now, its unpaid first-period invoice voided. Only inside the rollback window and only when no money was received. Re-entrant: a second call answers as the first.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/sandbox-licences/{subscriptionId}/sponsorship/extend

P4-R25 — a billing admin moves a sponsorship's end later — to at most 90 days from NOW (P4-R44: never more than 90 days remaining); who, when and why are recorded.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

SeatDriftExposure

GET/api/v1/billing/seat-reconciliation/organizations/{organizationId}/exposure

Reads the organisation's daily seat-drift exposure over a window.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation.
fromquerystring (date-time)noFirst UTC day; omitted means the first day of the current calendar quarter.
toquerystring (date-time)noLast UTC day, inclusive; omitted means today. At most 366 days from from.

Request body

No request body.

Responses

SeatReconciliation

GET/api/v1/billing/seat-reconciliation/organizations/{organizationId}

Reads the organisation's seat-reconciliation position: synced headcount vs billed quota vs assigned seats, the divergence, and the costed delta.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation to reconcile.
toleranceSeatsqueryinteger (int32)noSeats of divergence tolerated before a drift is declared. Supplied by the caller until the org-level reconciliation policy store exists (EPIC 50); omitted means zero tolerance, i.e. report any divergence.

Request body

No request body.

Responses

POST/api/v1/billing/seat-reconciliation/organizations/{organizationId}/alerts/{alertId}/acknowledge

Takes ownership of an open drift episode so the queue shows who is on it.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation the episode belongs to.
alertIdpathstring (uuid)yesThe episode to acknowledge.

Request body

No request body.

Responses

GET/api/v1/billing/seat-reconciliation/organizations/{organizationId}/history

Reads the organisation's reconciliation history: every drift episode and every decision taken against one.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation.

Request body

No request body.

Responses

GET/api/v1/billing/seat-reconciliation/organizations/{organizationId}/preview

Prices a candidate resolution — moving billed seats to targetSeats — without changing anything. Lets the surface show the true-up path and the cap path side by side before the admin chooses.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation to price the change for.
targetSeatsqueryinteger (int32)noThe billed seat count the resolution would move to.

Request body

No request body.

Responses

POST/api/v1/billing/seat-reconciliation/organizations/{organizationId}/resolution

Records a resolution to the organisation's open seat-drift episode and opens its 24-hour undo window.

<b>Nothing is billed by this call.</b> The response's `undoWindowEndsAt` is when the seat change is actually applied; until then the delete below withdraws it with no billing consequence at all.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation to reconcile.

Request body

Not marked as required in the document.

Responses

DELETE/api/v1/billing/seat-reconciliation/organizations/{organizationId}/resolutions/{decisionId}

Withdraws a recorded resolution inside its undo window. Because the seat change has not been applied, this cancels rather than reverses — no credit note, no adjustment.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation the decision belongs to.
decisionIdpathstring (uuid)yesThe decision to withdraw.

Request body

No request body.

Responses

SeatTrueUp

GET/api/v1/billing/seat-true-up/organizations/{organizationId}

Reads one period's true-up: what was metered, the derivation that turns it into money, the governance around the charge, and the per-seat evidence behind it.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation to read.
periodquerystringnoThe quarter as `yyyy-Qn`. Omitted means the most recently <i>closed</i> quarter — the one a true-up is actually due for.

Request body

No request body.

Responses

GET/api/v1/billing/seat-true-up/organizations/{organizationId}/export

Downloads the reconciliation export: the period, the derivation line by line with its tax, the seat movements, the approval chain and the audit anchor.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation whose true-up to export.
periodquerystringnoThe quarter as `yyyy-Qn`; omitted means the most recently closed one.

Request body

No request body.

Responses

200Success
POST/api/v1/billing/seat-true-up/organizations/{organizationId}/open

Opens the review window for a metered period: strikes the derivation once, stores it, and fixes the review-close and charge dates the organisation is told about.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation to true up.

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/seat-true-up/organizations/{organizationId}/runs/{runId}/approve

Records one approval. When the chain satisfies the tier the amount requires, the run locks and the adjustment is published for invoicing.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation whose true-up it is.
runIdpathstring (uuid)yesThe run being approved.

Request body

Not marked as required in the document.

Responses

POST/api/v1/billing/seat-true-up/organizations/{organizationId}/runs/{runId}/holds

Disputes one seat during the review window, holding its contribution out of the charge until the dispute is resolved.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation whose true-up it is.
runIdpathstring (uuid)yesThe run to hold against.

Request body

Not marked as required in the document.

Responses

PUT/api/v1/billing/seat-true-up/organizations/{organizationId}/runs/{runId}/holds/{seatRef}

Resolves a seat dispute — upheld writes the held amount off, otherwise it returns to the charge.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation whose true-up it is.
runIdpathstring (uuid)yesThe run holding the seat.
seatRefpathstringyesThe disputed seat.

Request body

Not marked as required in the document.

Responses

Skus

GET/api/v1/Skus

List the SKU registry, optionally narrowed to one family or one lifecycle status (FR-14.130). Offset-paged; an unknown family or status is refused with HTTP 400.

The registry had a read by exact code and nothing else, so "which SKUs does Billing actually hold" was unanswerable through the API — which is how pricing plans came to declare codes that had never been seeded (#8755, OFM-001) with nobody able to see it. <br> The filters are parsed HERE and an unrecognised value is refused rather than ignored: a list endpoint that quietly drops a filter it does not understand answers a narrower question than the caller asked, and the empty result is indistinguishable from "there are none of those". Numeric input is refused too — `?status=0` is not a status a caller named, it is an enum's storage leaking into the wire contract.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
familyquerystringnoOne of `{PLT,MOD,CAP,MKT,ADD,USG,SVC,NET}` (FR-14.134), or omitted for all.
statusquerystringnoOne of `{Draft,Active,Deprecated,Withdrawn}`, or omitted for all.
pageNumberqueryinteger (int32)no1-based page number.
pageSizequeryinteger (int32)noRows per page, clamped to 1..200.

Request body

No request body.

Responses

POST/api/v1/Skus

Register a new SKU (FR-14.130). Validates `family ∈ {PLT,MOD,CAP,MKT,ADD,USG,SVC,NET}` (FR-14.134) and persists with `status=draft` by default.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

POST/api/v1/Skus/import

Import the master SKU register (deploy seeder path).

Billing seeded ONE SKU against 637 in the register, so `Sku.ListPrice` could not determine a charge for anything the platform sells. There was no bulk path and no upsert, so a per-SKU mirror would have failed on every duplicate code the second time the seeder ran. <br> Idempotent and additive: an existing SKU is left untouched, because an operator may have edited its entitlements through the admin API and this runs on every deploy. Rate-limited with the same default policy as the rest of the surface (SEC-004).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/Skus/{code}

Fetch a SKU by its canonical code (FR-14.130). 404 if unknown.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
codepathstringyes—

Request body

No request body.

Responses

POST/api/v1/Skus/{code}/transition

Transition a SKU through its FR-14.136 lifecycle (`Draft → Active → Deprecated → Withdrawn`). An illegal transition returns HTTP 400 (`INVALID_SKU_TRANSITION`); an unknown code 404.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
codepathstringyes—

Request body

Not marked as required in the document.

Responses

SlaCredits

GET/api/v1/billing/sla-credits/breaches/{breachId}

One breach, scoped to what the caller may see: the target missed, the uptime measured, the basis and window it was measured under, and the credit decision — including a not-eligible decision with its reason (journey Step 2 / branch B1).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
breachIdpathstring (uuid)yesEPIC 70's breach (SlaRecord) id.

Request body

No request body.

Responses

GET/api/v1/billing/sla-credits/me

The calling developer's SLA breaches and service credits (journey Step 5).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/billing/sla-credits/organizations/{organizationId}

The org-wide roll-up of breaches and credits across all the team's subscriptions (journey Step 5, org admin), optionally narrowed to a month.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation to report on.
monthquerystringnoOptional `yyyy-MM` reporting month.

Request body

No request body.

Responses

GET/api/v1/billing/sla-credits/organizations/{organizationId}/reconciliation.csv

The exportable breach → credit reconciliation report for an organisation (debt-2026-06-04-769): one CSV line per breach decision, keyed on the breach id, carrying measured-vs-target, the basis and window, the credit or the exception reason, and the ledger reference.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
organizationIdpathstring (uuid)yesThe organisation to report on.
monthquerystringnoOptional `yyyy-MM` reporting month.

Request body

No request body.

Responses

200Success
GET/api/v1/billing/sla-credits/terms

The contracted service-credit terms a breach is reconciled against — the target basis vocabulary, the credit ladder, and the recipient policy (debt-2026-06-05-802). Read-only: negotiating per-org targets is EPIC 8's terms contract (FR-08.054), not Billing's.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

SponsoredBilling

GET/api/v1/sponsored-billing

List all sponsorships for the authenticated sponsoring organisation.

Org-scoped: the sponsor is the caller's organisation, resolved by M:Essence.Payment.Billing.Api.Authorization.BillingPrincipalExtensions.GetOrganizationId(System.Security.Claims.ClaimsPrincipal) from the validated JWT (`org_id` / `organization_id` / `orgId`). Platform tokens carry `organization_id`; reading `orgId` alone 403'd every real sponsor (#9012).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/sponsored-billing/report

FR-14.065 / F5-T06: anonymous-aggregate sponsor report for the given [periodStart, periodEnd] window. Returns only aggregate counts and totals; never exposes sponsored-user identities (FR-14.064 / SR-1).

The period is validated by `GetSponsorReportQueryValidator` in the MediatR pipeline, never here: a missing bound is reported as required and a reversed one names `PeriodEnd`, both as a 400 ProblemDetails (API-002 / API-003). The bounds bind as nullable so that a missing one is not mistaken for System.DateTime.MinValue and reported as a reversal the caller never sent (#13250).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
periodStartquerystring (date-time)no—
periodEndquerystring (date-time)no—

Request body

No request body.

Responses

POST/api/v1/sponsored-billing/sponsorships/{sponsoredEntitlementId}/convert

FR-14.046 / FR-14.063 / F5-T04: convert the authenticated user from a Essence.Payment.Billing.Domain.Aggregates.SponsoredEntitlement.SponsoredEntitlement enrolment into a self-paid subscription. Transactional: sponsorship detach + new subscription creation + outbox event commit together. This is the single canonical convert-to-self-pay endpoint (per docs/delivery/state/decisions/14/D-8.md — debt-2026-05-11-265 + 268).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
sponsoredEntitlementIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/sponsored-billing/{sponsorshipId}

Get billing detail for a single sponsorship.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
sponsorshipIdpathstring (uuid)yesSponsorship identifier

Request body

No request body.

Responses

GET/api/v1/sponsored-billing/{sponsorshipId}/invoices

List invoices issued to the sponsoring organisation for a sponsorship.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
sponsorshipIdpathstring (uuid)yesSponsorship identifier

Request body

No request body.

Responses

GET/api/v1/sponsored-billing/{sponsorshipId}/users

Get the active sponsored user COUNT for a sponsorship. CRITICAL: Returns only an aggregate integer — no user identities are exposed.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
sponsorshipIdpathstring (uuid)yesSponsorship identifier

Request body

No request body.

Responses

200Success — unspecified

Sponsorships

GET/api/v1/sponsorships

Lists the sponsorship campaigns belonging to one organisation.

The `orgId` arrives as a query parameter, so it is guarded — never trusted — before anything is read. Registered with an EMPTY template so the collection root `/api/v1/sponsorships` itself resolves.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
orgIdquerystring (uuid)no—

Request body

No request body.

Responses

POST/api/v1/sponsorships

Opens a sponsorship campaign for the caller's own organisation.

Registered with an EMPTY template so `POST /api/v1/sponsorships` resolves. The sponsoring organisation comes from the caller's JWT claim and is `[JsonIgnore]` on the command — a body-supplied sponsor org would be a direct IDOR.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/sponsorships/{id}

Reads one sponsorship campaign.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

PATCH/api/v1/sponsorships/{id}/audience

Re-targets a live campaign's audience.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/sponsorships/{id}/audit

The identity-redacted lifecycle audit. Member-level rows are withheld while that cohort is below the k-anonymity floor, and an explicit request to enumerate them (eventType naming a member-level event) is refused with 403.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
pagequeryinteger (int32)no—
pageSizequeryinteger (int32)no—
eventTypequerystringno—

Request body

No request body.

Responses

POST/api/v1/sponsorships/{id}/cancel

Winds a campaign down and settles the real pro-rata.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/sponsorships/{id}/cancellation-preview

Previews the financial and privacy consequences of cancelling, so the wind-down is never a blind action.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/sponsorships/{id}/dispatch

Dispatches invitations to the recipients of a confirmed cold-outreach campaign (debt-2026-08-10-027, journey `wholesale-premium-invitation`).

<br> <b>Idempotent per recipient.</b> A retried or replayed request re-reports rather than re-sends: the campaign holds one dispatch record per contact hash, enforced by a unique index. That property is why a large list is safely paged through this endpoint. <br> <b>409 over-cap (FR-14.060a).</b> A request whose dispatchable rows would take the campaign past its sponsor-confirmed population is refused whole — never partially sent, never queued for later — because an invitation cannot be recalled. <br> <b>Volume is bounded by the campaign, not by a rate-limit policy.</b> This is the only action here that contacts people outside the platform, so a stricter limiter would be natural — but the platform currently defines a single policy (`essence-default`, which SEC-004 already applies), and naming a policy that is not registered fails the endpoint at startup. The real bound is the FR-14.060a cap: a campaign can never dispatch beyond the population its sponsor confirmed and priced, whatever the request rate.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/sponsorships/{id}/uptake

Privacy-preserving uptake aggregates. Every count is k-anonymous (floor 5) and derived from the campaign's own persisted lifecycle ledger.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

SubjectSubscription

GET/api/v1/billing/subjects/{subjectType}/{subjectId}/subscription

The subject's metering position: which subscription, and is it entitlement-active.

<br> Returns <b>200</b> with `entitlementActive: false` and a null subscription id for a subject who holds nothing. Never 404 for an unknown subject: a subject with no plan genuinely has none, and a 404 would make that indistinguishable from a missing route at the consumer — which would turn "this customer is on the free tier" into "billing is down". <br> <b>400, not a guess, on an unrecognised subject type.</b> The segment comes off the wire. Defaulting it to `user` would answer a different question than the caller asked and look like a plain answer while doing it.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subjectTypepathstringyes—
subjectIdpathstring (uuid)yes—

Request body

No request body.

Responses

SubjectVaultEntitlement

GET/api/v1/billing/subjects/{subjectType}/{subjectId}/entitlements/vault

The tier and storage allowance of the plan the subject is entitled under — their entitlement-active subscription's plan, else the no-charge Free plan.

<b>Never 404 for an unknown subject.</b> A subject with no subscription is answered with `entitlementActive: false` and the Free plan's figures, so a consumer can treat a 404 as what it is — a missing route — and fail rather than default.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subjectTypepathstringyes—
subjectIdpathstring (uuid)yes—

Request body

No request body.

Responses

Subledger

GET/api/v1/Subledger/billings

What the entity was billed during the period (FR-84.006).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
entityquerystringno—
periodquerystringno—
currencyquerystringno—

Request body

No request body.

Responses

503Server Error
GET/api/v1/Subledger/leakage-observations

Every input the revenue-leakage sweep inspects (FR-84.009).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
entityquerystringno—
periodquerystringno—
currencyquerystringno—

Request body

No request body.

Responses

503Server Error
GET/api/v1/Subledger/payments

Payments recorded against the period (FR-84.008 cash leg).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
entityquerystringno—
periodquerystringno—
currencyquerystringno—

Request body

No request body.

Responses

503Server Error
GET/api/v1/Subledger/receivables

Open receivables for the entity at the close of the period (FR-84.007).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
entityquerystringno—
periodquerystringno—
currencyquerystringno—

Request body

No request body.

Responses

503Server Error

SubscriptionLicenceSwitch

POST/api/v1/subscriptions/{id}/switch

Switch the licence to another plan of the same tier and cadence.

Authorised as every subscription change is (#11443): the owner of a personal licence; for an organisation's, its billing administrators (or a platform billing admin). Anyone else who cannot see it gets 404.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

Subscriptions

GET/api/v1/Subscriptions

List subscriptions scoped to the authenticated user or organisation.

Non-admin callers can only enumerate their own subscriptions: an explicit `userId` / `orgId` that does not match the JWT principal is rejected with 403. Admin callers may pass any `userId` / `orgId`; absent both, the caller's own user id is used.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
userIdquerystring (uuid)no—
orgIdquerystring (uuid)no—
pagequeryinteger (int32)no—
pageSizequeryinteger (int32)no—

Request body

No request body.

Responses

POST/api/v1/Subscriptions

Create a new subscription. The owning `UserId` and `OrganizationId` are derived from the JWT principal — any value supplied in the body is overwritten (debt-2026-05-11-163, A07).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/Subscriptions/active

The caller's OWN subscription position — whether they hold an entitlement-active subscription, which one, and its tier snapshot. The subject is the bearer JWT's principal; nothing on the request names it, so there is nothing a client can tamper to read another account's plan (debt-2026-06-03-1312).

<br> The person is asked first. When they hold nothing entitlement-active and the token names an organisation, the organisation's subscription is answered instead: an org-seat member's plan is held by the organisation (frequently under the BUYER's user id), so a user-only lookup would tell every seat holder they are on nothing. <br> Served for the mobile billing clients' `verifySubscription` step, which called this path for months while it fell into `GET {id}` and failed. The literal segment wins over the unconstrained `{id}` template, so the two do not collide.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/Subscriptions/billing-notices

Returns the caller's data-minimised billing-degradation notices — one per currently-PastDue subscription the caller owns or shares (via org). Carries no invoice id / amount / pay CTA (uxf-2026-06-11-086): the role-scoped, non-payer counterpart to the full invoice surface.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/Subscriptions/checkout-quote

The live retail price the caller is about to ask the purchaser to accept, and whether it has moved since an offer showed them one (FR-13.039(iii), debt-2026-08-25-115).

Call this immediately before presenting the acceptance step. When `requiresConfirmation` comes back true the client MUST re-display the returned `amount` and obtain an explicit confirmation, then send it back as `confirmedPrice` on the create; a create that omits it is refused with 409 `CHECKOUT_PRICE_CHANGED`.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
skuCodequerystringno—
offeredAmountquerynumber (double)no—
offeredCurrencyquerystringno—

Request body

No request body.

Responses

GET/api/v1/Subscriptions/erasure-obligations/{userId}

Data-minimised erasure-obligation summary for a data subject — the billing half of the EPIC 11 Art.17 erasure-eligibility check (FR-11.005).

<br> Authorised for the subject themselves, or for a caller holding Essence.Payment.Billing.Api.Authorization.BillingPolicies.ErasureObligationReadPermission (the compliance service's service-to-service principal) or the billing-admin role. Deliberately <b>not</b> gated on billing-admin alone: a DPO-initiated erasure is not made by the subject, and the compliance service must be able to ask about any subject without being handed authority over payouts and refunds. <br> Returns 200 with an empty obligation list when the subject holds nothing blocking — which is a materially different answer from the 403/5xx the consumer records as "could not ask". Never 404: an unknown subject genuinely holds no billing obligation, and answering 404 would make "no such customer" indistinguishable from "route missing" at the consumer.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
userIdpathstring (uuid)yes—

Request body

No request body.

Responses

GET/api/v1/Subscriptions/user/{userId}

Get all subscriptions for a user. Non-admin callers may only query their own user id.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
userIdpathstring (uuid)yes—

Request body

No request body.

Responses

GET/api/v1/Subscriptions/user/{userId}/plan-summary

Data-minimised plan summary for a subject — the billing half of the EPIC 48 PlatformAdmin user overview (FR-48.021).

<br> Authorised for the subject themselves, or for a caller who satisfies Essence.Payment.Billing.Api.Authorization.BillingPolicies.SubscriptionSummaryRead. Deliberately <b>not</b> gated on billing-admin alone, for the same reason as the erasure-obligation summary below: an operator answering "what plan is this customer on?" must be able to ask about <em>any</em> subject, and handing them full billing-admin to do so would give a support credential authority over payouts, refunds and pricing. The role `BillingAdmin` is in any case granted to nobody on this platform — `RoleClaims` has no billing role among its constants — so requiring it refused every operator who reached the overview. <br> <b>Why this route exists rather than a widened `GET user/{userId}`.</b> That action returns the whole Essence.Payment.Billing.Application.DTOs.SubscriptionDto — pricing-plan id, line items and their amounts, free-form metadata, trial dates, cancellation reason. A permission that unlocked it would not be narrower than billing-admin in any way that mattered. This one returns the subscription id, the organisation, the tier, the status and the current period, and nothing else, which is what makes the grant a genuinely smaller authority. <br> Returns 200 with an empty list for a subject who holds no subscription — a materially different answer from the 403/5xx a consumer records as "could not ask". Never 404: a subject with no plan genuinely has none, and answering 404 would make "no subscriptions" indistinguishable from "route missing" at the consumer, which is precisely the confusion fix round 6 was called in to clear up elsewhere in this composition. <br> WHICH subscription matters is left to the consumer, as on the full list route above: a subject may hold several, and deciding here which one is "the" plan would move a product judgement into a data-minimising projection.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
userIdpathstring (uuid)yes—

Request body

No request body.

Responses

GET/api/v1/Subscriptions/{id}

Get a subscription by ID.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

PUT/api/v1/Subscriptions/{id}

Update mutable subscription properties (payment method, metadata).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/Subscriptions/{id}/cadence

FR-14.003a — switch the subscription's billing cadence within the same tier (monthly↔annual).

Neither an upgrade nor a downgrade: the tier, the plan and every entitlement are unchanged and only the rhythm of billing moves. The unused remainder of the current period is credited pro-rata — netted against the charge going to annual, posted to the credit ledger going to monthly — the new cadence's full price is charged, and the renewal anchor resets to today.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/Subscriptions/{id}/cancel

Cancel a subscription at the end of the current billing period.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/Subscriptions/{id}/downgrade

Schedule a subscription downgrade to a lower-tier plan. The change takes effect at the end of the current billing period. A plan that costs more than the current one is 409 `not-a-downgrade` (use `upgrade`, #17854); the plan already held is 409 `same-plan` and keeps any pending change (#18050); a Family plan with members is 409 `family-has-members` (FR-14.188).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/Subscriptions/{id}/history

Get the state-change history for a subscription.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/Subscriptions/{id}/pause

Pause an active subscription for the specified number of days (1–90).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/Subscriptions/{id}/payments

Settle the outstanding payment for a subscription (the real checkout settlement path — §9a / B3, "the `ProcessPayment`-class path", not the create-intent/confirm flow used for SCA/3DS). Owning `UserId` and `SubjectEmail` are derived from the JWT principal — any value supplied in the body is overwritten (mirrors debt-2026-05-11-163, A07). SubjectEmail is what lets a reserved `@browsertest.essence.digital` test tenant settle through the guarded gateway bypass instead of a real charge.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

POST/api/v1/Subscriptions/{id}/payments/{paymentIntentId}/settle

Stripe payments B5 (spec §5.2) — after a 3DS challenge, settle the pay-now payment from what the gateway says happened. There is no request body: the browser's account of the challenge is never read. A payment that is not one we recorded for an invoice of this subscription is 404, with no gateway call.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
paymentIntentIdpathstringyes—

Request body

No request body.

Responses

502Server Error
POST/api/v1/Subscriptions/{id}/reactivate

Reactivate a cancelled subscription within the 7-day grace period.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/Subscriptions/{id}/renew

Renew a subscription, advancing its billing period.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/Subscriptions/{id}/resume

Resume a paused subscription immediately.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/Subscriptions/{id}/upgrade

Upgrade a subscription to a higher-tier plan immediately.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

GET/api/v1/Subscriptions/{id}/upgrade/preview

AC-pupes-05 (#17359) — what `POST {id}/upgrade` to newPricingPlanId would charge now: the incoming plan's remainder, the outgoing plan's credit, the net, its VAT and the total payable.

Nothing is raised, stored, voided or published. The upgrade handler answers it with its own refusals, proration and invoice build, so `totalPayable` is the `totalAmount` of the invoice the upgrade then raises, and a change the upgrade would refuse is refused here the same way. Authorised as the upgrade is: only someone who may make the change is told its price.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
newPricingPlanIdquerystring (uuid)no—

Request body

No request body.

Responses

SubscriptionSeats

PUT/api/v1/subscriptions/{id}/seats

Change how many seats the licence bills for.

Authorised as every subscription change is (#11443): for an organisation's licence, its billing administrators (or a platform billing admin). Anyone who cannot see the licence gets 404.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

Usage

GET/api/v1/usage/alerts

Get active threshold alerts: overages plus warning-level approach (default 80%).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdquerystring (uuid)no—
periodStartquerystring (date-time)no—
periodEndquerystring (date-time)no—
warningThresholdquerynumber (double)no—

Request body

No request body.

Responses

GET/api/v1/usage/cost-disclosure

Upfront cost disclosure for a prospective metered operation. Given a pricing plan, a usage metric and a projected quantity, returns what the operation would cost <em>before</em> it is incurred so a caller can show the user the cost up-front; the actual operation is then metered per-event via `POST /api/v1/usage/record` (EVT-003 usage path). This is plan-level pricing information (it discloses what a metered SKU costs under a plan and reads no tenant usage), so it is gated by the standard `[Authorize]` on the controller — no per-subscription resource-owner scope is required.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
pricingPlanIdquerystring (uuid)no—
metricTypequeryEssence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricTypeno—
projectedQuantityquerynumber (double)no—
includedQuantityquerynumber (double)no—

Request body

No request body.

Responses

POST/api/v1/usage/events

Record one metered operation against the CALLER's own subscription — the first-party client meter. Nothing on the request names a subscription or a principal: both are resolved from the bearer JWT (the person first, then their organisation), so a tampered request cannot meter another account (debt-2026-06-03-1312).

<br> <b>Effectively once.</b> A device retries a meter whose acknowledgement it lost, so the `X-Idempotency-Key` (or `Idempotency-Key`) header is required and is recorded in Billing's processed-events ledger scoped to the caller: a retry answers 200 with `replayed=true` and meters nothing. Plain `usage/record` has no such key, which is why it is not the client meter. Two copies of one key arriving concurrently can both pass the ledger read; the second mark then fails on the ledger's key and surfaces as an error the client retries into a replay. <br> <b>422 for a metric Billing does not meter.</b> A code outside `UsageMetricCatalog` has nothing to be recorded against, and no retry will change that, so it is answered with a non-retryable 422 (`reasonCode: metric-not-metered`) the client can stop re-queueing on — never a 5xx it would back off and retry forever.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
X-Idempotency-Keyheaderstringno—
Idempotency-Keyheaderstringno—

Request body

Not marked as required in the document.

Responses

GET/api/v1/usage/history

Get historical usage records for a subscription, optionally filtered by date range.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdquerystring (uuid)no—
startDatequerystring (date-time)no—
endDatequerystring (date-time)no—

Request body

No request body.

Responses

POST/api/v1/usage/quota/check

Answers whether the named subject may draw the requested units of a metric — the cross-service quota check `docs/epics/integration-registry.md` registers to EPIC 14 and that EPIC 90 (OpenID4VCI issuance) and EPIC 54 (signature envelopes) gate on.

Distinct from `GET quotas`, which reports a subscription's standing headroom for a dashboard. This answers a decision about one prospective operation, in the request and response shapes the consuming services already speak, and carries a machine-readable `reasonCode` so a refusal can be routed to the party who can act on it. Admits the subscription's owner (Essence.Payment.Billing.Api.Authorization.BillingPolicies.ResourceOwner) or an allowlisted metering service for a SKU it may meter (Essence.Payment.Billing.Api.Authorization.BillingPolicies.QuotaMeteringGrant — the IdP's OpenID4VCI issuance metering), as does `quota/reserve`.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

POST/api/v1/usage/quota/release

Returns a reservation's held units before it expires (WS-E): the caller reserved and then did not perform the operation. Conditional on the reservation still being held, so it never undoes a recorded usage, and a second release changes nothing. The key is the body's `idempotencyKey` or the `Idempotency-Key` header, as for the reservation.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstringno—

Request body

Not marked as required in the document.

Responses

POST/api/v1/usage/quota/reserve

Reserve-at-check (WS-E E4): answers as `quota/check` does and, when allowed, HOLDS the requested units until usage is recorded under the same idempotency key (sent as the usage event's `QuotaReservationKey`) or the reservation expires.

`quota/check` is unchanged and still answers without holding anything; it cannot stop N concurrent callers that all check before any records. A caller that must not overspend a hard-capped allowance reserves instead. Refusals are 200s with `allowed=false`, as for the check; a missing key is a 400 and a key reused for a different operation a 409 (RFC 7807 ProblemDetails).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstringno—

Request body

Not marked as required in the document.

Responses

GET/api/v1/usage/quotas

Get current quota status and remaining headroom for a subscription.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdquerystring (uuid)no—
metricTypequeryEssence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricTypeno—

Request body

No request body.

Responses

POST/api/v1/usage/record

Record a single usage event. With a `quotaReservationKey` (WS-E) the usage is recorded synchronously as the exercise of that reservation — once — and a key that holds no live reservation for this act is a 409 with nothing recorded; a retry of an already-recorded reservation is a 200 carrying the original row. Without one, returns 202 Accepted: the handler enqueues the record onto the in-process hot buffer and a background drainer persists batches asynchronously (FR-14.030 hot path — see debt-2026-05-11-280). The body still carries the canonical Essence.Payment.Billing.Application.DTOs.UsageRecordDto with the assigned Id so callers can read-back via `GET /api/v1/usage/history` once the drainer has flushed (typically < 1 s). A code Billing does not meter records nothing and answers 200 with `notMetered=true`, `reason=metric-not-catalogued` (#19797); a near miss of a metered code is a 400 naming the code it was probably meant to be.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

POST/api/v1/usage/record/bulk

Bulk record multiple usage events in a single call — the API gateway's Enterprise API-overage flush (FR-08.062).

<br> <b>Service-only (ADR-021 5h-R2, #13630):</b> Essence.Payment.Billing.Api.Authorization.BillingPolicies.UsageBulkRecord. The subscriptions in the batch are the platform's own attribution (the gateway's configured API-key → subscription map), never the caller's, so the per-subscription resource-owner check that a person's token needed does not apply — and a person's token is refused. <br> Every subscription named is resolved before anything is written: an unknown one rejects the whole batch with 404, so a partially-metered batch never leaves the ledger disagreeing with the request that produced it.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

GET/api/v1/usage/summary

Get usage summary for a subscription. Defaults to the subscription's current period when periodStart / periodEnd are omitted.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
subscriptionIdquerystring (uuid)no—
periodStartquerystring (date-time)no—
periodEndquerystring (date-time)no—

Request body

No request body.

Responses

VerificationCheckUsage

GET/api/v1/usage/verification-checks

The verification checks metered for one request or one property, in the order they ran.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
requestIdquerystringnoThe request id the metering module put in `metadata.requestId`.
propertyIdquerystringnoInstead of requestId: the property id the metering module put in `metadata.propertyId` (#15016) — a letting agent's per-property reconciliation of the checks that succeeded against the checks it is billed for.
subscriptionIdquerystring (uuid)noOptional: a subscription the caller administers; the caller's own when omitted.

Request body

No request body.

Responses

Webhooks

POST/api/v1/webhooks/adyen

Adyen webhook endpoint

Configure this URL in your Adyen Customer Area: Developers → Webhooks Events to listen for: - AUTHORISATION (payment authorized) - AUTHORISATION_ADJUSTMENT (authorization amount changed) - CAPTURE (payment captured) - CAPTURE_FAILED (capture failed) - REFUND (payment refunded) - REFUND_FAILED (refund failed) - CANCELLATION (payment cancelled) - CHARGEBACK (chargeback initiated) - CHARGEBACK_REVERSED (dispute won) - SECOND_CHARGEBACK (dispute lost after defence)

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

200Success
POST/api/v1/webhooks/stripe

Stripe webhook endpoint

Configure this URL in your Stripe Dashboard: Developers → Webhooks Events to listen for: - payment_intent.succeeded - payment_intent.payment_failed - payment_intent.canceled - charge.refunded - customer.subscription.created - customer.subscription.updated - customer.subscription.deleted - invoice.paid - invoice.payment_failed - charge.dispute.created - charge.dispute.closed

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

200Success

Schemas

Essence.Payment.Billing.Api.Controllers.AddPaymentMethodRequest

Request body for adding a new payment method token.

PropertyTypeRequiredDescription
brandstring | nullno—
expiryMonthinteger (int32) | nullno—
expiryYearinteger (int32) | nullno—
gatewaystring | nullno—
gatewayMethodIdstring | nullno—
lastFourstring | nullno—
setAsDefaultbooleanno—
typestring | nullno—

Essence.Payment.Billing.Api.Controllers.AddPaymentPageScriptRequest

Body of `POST …/scripts`.

PropertyTypeRequiredDescription
businessJustificationstring | nullno—
changeRecordstring | nullnoThe change-management reference that authorises proposing this script.
scriptUrlstring | nullno—
subresourceIntegrityHashstring | nullno—
vendorstring | nullno—

Essence.Payment.Billing.Api.Controllers.AdminNetTermsRefundsController.NetTermsRefundRequest

The POST body. The refunding identity is the caller, never the body.

PropertyTypeRequiredDescription
amountnumber (double) | nullno—
reasonstring | nullno—
referencestring | nullno—

Essence.Payment.Billing.Api.Controllers.AdminOrganisationCommercialProfileController.ApproveInvoiceCollectionRequest

The approval PUT body: the terms (days) and why. The approver is the caller, never the body.

PropertyTypeRequiredDescription
paymentTermsDaysinteger (int32) | nullno—
reasonstring | nullno—

Essence.Payment.Billing.Api.Controllers.AdminOrganisationCommercialProfileController.SetPaymentTermsRequest

The PUT body: the only writable fields. Anything else in the body (a route, a payer) is ignored.

PropertyTypeRequiredDescription
daysinteger (int32) | nullno—
reasonstring | nullno—

Essence.Payment.Billing.Api.Controllers.AdminRefundQueueController.ResolveRefundRequest

The POST body. The resolving identity is the caller, never the body.

PropertyTypeRequiredDescription
notestring | nullno—
outcomestring | nullno—
referencestring | nullno—

Essence.Payment.Billing.Api.Controllers.AdminReprovisionEntitlementsRequest

Request body for M:Essence.Payment.Billing.Api.Controllers.AdminSubscriptionsController.ReprovisionEntitlements(Essence.Payment.Billing.Api.Controllers.AdminReprovisionEntitlementsRequest,System.Threading.CancellationToken).

PropertyTypeRequiredDescription
afterSubscriptionIdstring (uuid) | nullnoKeyset cursor from a previous page's `nextCursor`.
batchSizeinteger (int32) | nullnoPage size (default 100, max 500).
dryRunbooleannoReport what would change and publish nothing.
pricingPlanIdstring (uuid) | nullnoRestrict the walk to one pricing plan.
reasonstring | nullnoWhy this is being run. Required — it lands on the published event's audit trail.
recordBaselineOnlybooleannoRecord each subscription's resolved grant as already held; publish nothing.
republishUnchangedbooleannoPublish the complete grant even for subscriptions that already hold it (engine-repair escape hatch). By default a subscription that would gain nothing publishes nothing.
subscriptionIdstring (uuid) | nullnoRe-provision exactly this subscription instead of walking the active population.

Essence.Payment.Billing.Api.Controllers.AdminSeedSubscriptionRequest

Request body for M:Essence.Payment.Billing.Api.Controllers.AdminSubscriptionsController.SeedSubscription(Essence.Payment.Billing.Api.Controllers.AdminSeedSubscriptionRequest,System.Threading.CancellationToken).

PropertyTypeRequiredDescription
currencystring | nullno—
organizationIdstring (uuid) | nullno—
overrideTrialDaysinteger (int32) | nullno—
pricingPlanIdstring (uuid)no—
subscriptionClassEssence.Payment.Billing.Domain.Aggregates.Subscription.SubscriptionClassno—
targetUserIdstring (uuid)no—

Essence.Payment.Billing.Api.Controllers.AdminTaxPendingQueueController.DetermineTaxRequest

The POST body. The determining identity is the caller, never the body.

PropertyTypeRequiredDescription
ratePercentnumber (double) | nullnoThe rate as a PERCENTAGE (20 = 20%), 0..100. Omitted is rejected rather than defaulted — a missing rate must never read as 0%, which is the one outcome FR-14.023a forbids outright.
reasonstring | nullnoFinance's grounds for the rate.

Essence.Payment.Billing.Api.Controllers.AdminVoidStrandedOnboardingRequest

Request body for M:Essence.Payment.Billing.Api.Controllers.AdminOnboardingRecoveryController.VoidStranded(Essence.Payment.Billing.Api.Controllers.AdminVoidStrandedOnboardingRequest,System.Threading.CancellationToken).

PropertyTypeRequiredDescription
applicationsstring[] | nullnoApplication references (`ESS-1A2B-3C4D`) or onboarding session ids.
dryRunboolean | nullnoReport only (the default). Pass `false` to void.
reasonstring | nullnoWhy this is being run. Required — it is the audit line's reason.

Essence.Payment.Billing.Api.Controllers.ApplyGrandfatherPriceLockRequest

Request body for applying a grandfather price lock (#23327).

PropertyTypeRequiredDescription
currencyCodestring | nullnoISO-4217 code of both amounts, e.g. `GBP`.
listAmountAtLocknumber (double)noThe list price in force now — what the subscriber would pay without the lock.
lockedAmountnumber (double)noThe price the subscriber is held on. May be zero; never above Essence.Payment.Billing.Api.Controllers.ApplyGrandfatherPriceLockRequest.ListAmountAtLock.
lockedUntilstring (date-time)noWhen the lock stops being in force. Must be in the future.
supersedeReferencestring | nullnoThe upstream EPIC 79 commercial-manager supersede decision this lock implements.

Essence.Payment.Billing.Api.Controllers.ApplyPackageVersionMigrationDeltaRequest

Body of `POST api/v1/billing/package-version-migrations/{id}/apply`.

PropertyTypeRequiredDescription
documentIdstring (uuid) | nullnoThe billing document's id, when the caller knows it. Optional.
documentReferencestring | nullnoThe invoice or credit-note reference that carried the delta.

Essence.Payment.Billing.Api.Controllers.ApprenticeshipCompletionRequest

The qualification EPIC 29 issued on completion.

PropertyTypeRequiredDescription
anchorReferencestring | nullnoThe EPIC 4 anchor for the completion, when one exists.
completedAtIsostring | nullnoISO-8601 instant of completion. Omit for "now".
credentialIdstring | nullnoThe EPIC 29 credential issued to the apprentice's own vault.
gradestring | nullnoWire form: `pass` | `merit` | `distinction`.

Essence.Payment.Billing.Api.Controllers.AppRevenueReassignmentRequest

What EPIC 25 tells EPIC 14 about a transfer's money.

PropertyTypeRequiredDescription
appIdstring | nullnoThe application changing hands.
effectiveAtstring (date-time)noThe ledger cut. The same instant as the controller change, never re-derived here.
fromOrgIdstring (uuid)noThe outgoing owner's partner id.
toOrgIdstring (uuid)noThe incoming owner's partner id.
transferIdstring (uuid)noThe transfer — EPIC 25's key, and this reassignment's idempotency key.

Essence.Payment.Billing.Api.Controllers.AppRevenueReassignmentResponse

What EPIC 14 says about a prepared or executed reassignment.

PropertyTypeRequiredDescription
completedbooleannoTrue only when the reassignment did, or can, actually run.
currencystring | nullnoThe currency of OutstandingAmount.
incomingDestinationBoundbooleannoTrue only when the receiving organisation has a usable payout destination — a method AND an account id. EPIC 25's dry-run treats false as a blocker.
outstandingAmountnumber (double)noWhat the outgoing owner is owed for this app at the cut.
reasonstring | nullnoPlain-language explanation. Never blank.
settledCommissionCountinteger (int32)noHow many commission rows the settlement covered.
settlementReferencestring | nullnoThe settlement payout's id, or null when nothing was owed.
unattributedCommissionCountinteger (int32)noHow many of the outgoing owner's pending rows could not be attributed to any app, and were therefore NOT swept into this settlement.

Essence.Payment.Billing.Api.Controllers.ApproveSeatTrueUpRequest

Body for the approve route.

PropertyTypeRequiredDescription
rolestring | nullno`billing-admin`, `finance-approver` or `cfo`.

Essence.Payment.Billing.Api.Controllers.ApproveWriteOffRequest

Sign a proposal.

PropertyTypeRequiredDescription
roleEssence.Payment.Billing.Domain.Aggregates.Collections.WriteOffApproverRoleno—

Essence.Payment.Billing.Api.Controllers.AssignSeatHolderRequest

Payload for assigning a seat.

PropertyTypeRequiredDescription
holderRefstring (uuid)noThe incoming holder (opaque org-user reference).

Essence.Payment.Billing.Api.Controllers.AssignSeatRequest

Body for the assign route.

PropertyTypeRequiredDescription
newHolderRefstring (uuid)noThe incoming holder (opaque org-user reference).

Essence.Payment.Billing.Api.Controllers.BulkReclaimSeatsRequest

Body for the bulk-reclaim route.

PropertyTypeRequiredDescription
consentDispositionstring | nullnoThe consent disposition applied to every row.
handoverRoutestring | nullnoThe handover route applied to every row.
rowsEssence.Payment.Billing.Api.Controllers.BulkReclaimSeatsRowRequest[] | nullnoThe rows, from multi-select or an uploaded CSV.
scopestring | nullnoThe scope applied to every row. Bulk offboard is refused — see the handler.

Essence.Payment.Billing.Api.Controllers.BulkReclaimSeatsRowRequest

One row of a bulk reclaim body.

PropertyTypeRequiredDescription
leaverRefstring (uuid)noThe departing holder.
newHolderRefstring (uuid) | nullnoThe incoming holder, when the row is a leaver→new-hire mapping.
seatRefstring | nullnoThe seat reference, when the organisation has one.

Essence.Payment.Billing.Api.Controllers.CancelSubscriptionRequest

PropertyTypeRequiredDescription
reasonstring | nullno—

Essence.Payment.Billing.Api.Controllers.ChangeLicensedSeatsRequest

The body of `PUT …/subscriptions/{id}/seats`.

PropertyTypeRequiredDescription
seatsinteger (int32)no—

Essence.Payment.Billing.Api.Controllers.ChangeSubscriptionCadenceRequest

FR-14.003a — a same-tier billing-cadence switch. NewCadence is `MONTHLY` or `ANNUALLY`; NewCadencePrice is the price the customer was quoted for the new cadence, because a plan holds one `BasePrice` and no second-cadence figure for the handler to look up.

PropertyTypeRequiredDescription
newCadencestring | nullno—
newCadencePricenumber (double)no—

Essence.Payment.Billing.Api.Controllers.ClassifyTenantRequest

Body of a classification request. The actor comes from the token, not from here.

PropertyTypeRequiredDescription
classstring | nullnoOne of `customer`, `intercompany`, `internal`, `trial-non-revenue`.
effectiveFromstring (date-time)noWhen the class takes effect. May be backdated.
reasonstring | nullnoWhy this tenant is classified this way.

Essence.Payment.Billing.Api.Controllers.CloudMarketplaceSettlementsController.DispositionRequest

A disposition finance records on a break.

PropertyTypeRequiredDescription
dispositionstring | nullno`accepted`, `written_off` or `re_tied`.
reasonstring | nullnoWhy — required.
subscriptionIdstring (uuid) | nullnoFor `re_tied` only: the subscription the line belongs to.

Essence.Payment.Billing.Api.Controllers.CloudMarketplaceSettlementsController.ImportSettlementRequest

The period a settlement import asks the marketplace for.

PropertyTypeRequiredDescription
periodEndUtcstring (date-time)noExclusive end (UTC).
periodStartUtcstring (date-time)noInclusive start (UTC).

Essence.Payment.Billing.Api.Controllers.CloudMarketplaceSettlementsController.ReassignOwnerRequest

A new owner for an open break.

PropertyTypeRequiredDescription
ownerstring | nullnoWho works the break from now on.
reasonstring | nullnoWhy — required.

Essence.Payment.Billing.Api.Controllers.CommitSeatResolutionRequest

Body of a commit-resolution request.

PropertyTypeRequiredDescription
authoritativeSourcestring | nullnoWhich seat figure the admin declared authoritative: `synced`, `billed`, `assigned` or `manual`. Required, and rejected when unrecognised — the audit trail must not claim the admin believed a figure they never named.
notestring | nullnoOptional free-text note recorded with the decision.
targetSeatsinteger (int32)noThe billed seat count the resolution moves to.

Essence.Payment.Billing.Api.Controllers.ConfigureGroupSchemeBillingRequest

Body of `PUT api/v1/billing/group-schemes/{schemeId}/billing-configuration`.

PropertyTypeRequiredDescription
billingContactUserIdstring (uuid) | nullnoWhom an aggregated invoice is addressed to. Required when `invoicingParty` is `org`: an invoice addressed to a guess is a debt the wrong party is chased for.
invoicingPartystring | nullno`org` — the scheme's premiums are aggregated onto one invoice to the administering organisation; or `individual` — each member is invoiced directly and the scheme supplies only roster and eligibility. Fixed on the first call.
paymentTermsDaysinteger (int32) | nullnoDays from issue to due date on the aggregated invoice. Defaults to 30.

Essence.Payment.Billing.Api.Controllers.ConfirmPaymentIntentRequest

PropertyTypeRequiredDescription
paymentGatewaystring | nullno—
paymentMethodIdstring | nullno—

Essence.Payment.Billing.Api.Controllers.DecideDeveloperApiPlanUpgradeRequest

Wire body of the approver's decision.

PropertyTypeRequiredDescription
decisionstring | nullno`approve` | `decline`.

Essence.Payment.Billing.Api.Controllers.DeclarePartnerWithholdingRequest

Body of `PUT /api/v1/payouts/settings/withholding`.

PropertyTypeRequiredDescription
claimsTreatyBenefitsboolean | nullnoWhether treaty relief is claimed; absent means no.
entityTypestring | nullnoOne of `company, partnership, sole-trader, individual, other`.
taxResidenceCountrystring | nullnoISO 3166-1 alpha-2, such as `GB`.
treatyArticlestring | nullnoThe article relied on, at most 64 characters; only with a claim.
treatyRatePercentnumber (double) | nullnoThe rate claimed, 0–100, at most two decimals; only with a claim.

Essence.Payment.Billing.Api.Controllers.DowngradeSubscriptionRequest

PropertyTypeRequiredDescription
newPricingPlanIdstring (uuid)no—

Essence.Payment.Billing.Api.Controllers.EarlyLeaverRequest

An apprentice who left before completing.

PropertyTypeRequiredDescription
leftAtIsostring | nullnoISO-8601 instant they left. Omit for "now".
reasonstring | nullnoWire form: `withdrew` | `left-employment` | `transferred` | `other`.

Essence.Payment.Billing.Api.Controllers.EnrolSeatRegisterRequest

Enrolment payload.

PropertyTypeRequiredDescription
seatsEssence.Payment.Billing.Api.Controllers.SeatRegistrationEntryRequest[] | nullnoSeats to create at enrolment; may be empty or absent.

Essence.Payment.Billing.Api.Controllers.HoldSeatTrueUpRequest

Body for the hold route.

PropertyTypeRequiredDescription
reasonstring | nullnoThe organisation's stated reason — required, so the hold can be reviewed.
seatRefstring | nullnoThe disputed seat's opaque reference.

Essence.Payment.Billing.Api.Controllers.InitiateCoolingOffCancellationRequest

Body of `POST api/v1/billing/cooling-off-settlements`.

PropertyTypeRequiredDescription
coolingOffDaysinteger (int32) | nullnoThe window length in days, 1–30; 14 when omitted.
currencyCodestring | nullnoISO-4217; defaults to GBP.
customerUserIdstring (uuid)noThe customer exercising the right: the party the refund returns to.
noticeReceivedAtstring (date-time) | nullnoWhen the customer's notice was received; now when omitted.
pricenumber (double)noThe price or premium paid.
purchaseReferencestring | nullnoThe original purchase or policy reference.
purchasedAtstring (date-time) | nullnoWhen the purchase was made or the policy incepted. The window runs from here.
serviceStartedAtstring (date-time) | nullnoWhen the service or cover began; omit when none was used, so nothing is deducted.
serviceTermDaysinteger (int32) | nullnoThe pro-rata denominator in days (e.g. 365 for annual cover); the window length when omitted.

Essence.Payment.Billing.Api.Controllers.InitiateRetainerTrustFundingRequest

Body of `POST api/v1/billing/retainer-trust-fundings`.

PropertyTypeRequiredDescription
amountnumber (double)no—
currencyCodestring | nullnoISO-4217; defaults to GBP.
feeBasisEssence.Payment.Billing.Domain.Aggregates.RetainerTrustFunding.RetainerFeeBasisno—
lawFirmOrganizationIdstring (uuid)noThe law firm whose client trust account will hold the funds.
matterReferencestring | nullnoThe matter the funds are held against.

Essence.Payment.Billing.Api.Controllers.LevyAllocationRequest

What the employer console sends to commit levy funds. Mirrors `AllocationRequest` in `apps/frontend/web/org-portal/src/features/levy-account/api/levyAccountApi.ts`.

PropertyTypeRequiredDescription
placesinteger (int32)no—
providerOrganizationIdstring (uuid)no—
sourceReferencestring | nullnoOptional idempotency key. The portal sends none and the server derives a stable one from the commitment's own shape; EPIC 17's `LevyAllocated` consumer will send the event's allocation reference so a redelivery cannot commit the pot twice.
standardIdstring | nullno—

Essence.Payment.Billing.Api.Controllers.LevyMovementRequest

A movement delivered onto an employer's levy ledger under service authority.

PropertyTypeRequiredDescription
allocationIdstring (uuid) | nullnoRequired for a drawdown or a clawback.
amountPenceinteger (int64)noSigned minor units: credits positive, debits negative.
apprenticeshipIdstring | nullno—
descriptionstring | nullno—
kindstring | nullnoWire form: `payroll-accrual` | `government-top-up` | `drawdown` | `expiry` | `clawback`.
occurredAtIsostring | nullnoISO-8601 instant the movement occurred. Omit for "now".
sourceReferencestring | nullnoThe originating system's own reference. Idempotency key.

Essence.Payment.Billing.Api.Controllers.MarketplaceFulfilmentController.ActivateMarketplacePurchaseRequest

Request body of M:Essence.Payment.Billing.Api.Controllers.MarketplaceFulfilmentController.Activate(System.String,Essence.Payment.Billing.Api.Controllers.MarketplaceFulfilmentController.ActivateMarketplacePurchaseRequest,System.Threading.CancellationToken).

PropertyTypeRequiredDescription
purchaseTokenstring | nullnoThe token the marketplace put on the landing-page URL, verbatim.

Essence.Payment.Billing.Api.Controllers.MilestoneAchievementRequest

An achievement EPIC 29 has evidenced.

PropertyTypeRequiredDescription
achievedAtIsostring | nullnoISO-8601 instant it was achieved. Omit for "now".
evidenceEntryIdstring | nullnoThe EPIC 29 evidence entry id it was signed off against. An id, never content.

Essence.Payment.Billing.Api.Controllers.MilestoneDrawdownRequest

A release of levy funds against an evidenced milestone.

PropertyTypeRequiredDescription
actorLabelstring | nullnoWho is releasing it — the person the payment is accounted to at audit.
actorRolestring | nullnoThe role they release it in.
amountPenceinteger (int64)noThe positive amount to release, in pence.
sourceReferencestring | nullnoOptional idempotency key; one is derived from the rung when none is sent.

Essence.Payment.Billing.Api.Controllers.ModuleSubscriptionQuoteRequestDto

FR-14.050a — request body for a pre-purchase module quote.

PropertyTypeRequiredDescription
offeringIdstring (uuid)noThe marketplace offering to price.
seatCountinteger (int32)noSeats to quote for. One for an org-wide install.

Essence.Payment.Billing.Api.Controllers.ModuleSubscriptionSummaryDto

Summary DTO for a module subscription.

PropertyTypeRequiredDescription
alignedToOrgPeriodbooleannoFR-14.050a — whether the module renews on the organisation's own renewal day.
billingCyclestring | nullno—
canceledAtstring (date-time) | nullno—
cancellationTermsEssence.Payment.Billing.Application.DTOs.ModuleCancellationTermsDtono—
currencystring | nullno—
firstChargeAmountnumber (double) | nullnoFR-14.050a — what was charged at provisioning; `null` when hidden (P5-R24).
idstring (uuid)no—
isBaseModulebooleanno—
nextBillingDatestring (date-time) | nullnoFR-14.050a — the next date money is taken, derived from the frozen anchor. `null` when nothing renews: a base module, a one-time purchase, a cancelled module, or one already pending mid-cycle deprovision (FR-14.052a).
offeringIdstring (uuid)no—
offeringNamestring | nullno—
pricenumber (double) | nullnoThe per-seat price; `null` for an organisation shown no Essence figure (routed or route unknown, P5-R24).
prorationEssence.Payment.Billing.Application.DTOs.ModuleProrationLineDtono—
provisionedAtstring (date-time)no—
recurringTotalnumber (double) | nullnoFR-14.050a — the full-period commitment: Essence.Payment.Billing.Api.Controllers.ModuleSubscriptionSummaryDto.Price × Essence.Payment.Billing.Api.Controllers.ModuleSubscriptionSummaryDto.SeatCount; `null` when hidden (P5-R24).
seatCountinteger (int32)noFR-14.050a — seats this module is billed for. One for an org-wide install.
statusstring | nullno—

Essence.Payment.Billing.Api.Controllers.OpenPremiumFinancePlanRequest

Request body for opening a premium-finance plan.

PropertyTypeRequiredDescription
agreementIdstring | nullnoThe insurer's agreement identifier. Opaque to Billing.
creditAgreementReferencestring | nullnoThe lender's credit-agreement reference.
currencystring | nullnoISO currency code the whole plan is denominated in.
mandateReferencestring | nullnoThe mandate instalments are collected against. A reference, never an account number.
policyReferencestring | nullnoThe policy the premium belongs to. Opaque to Billing.
policyholderUserIdstring (uuid)noThe policyholder repaying the credit agreement.
scheduleEssence.Payment.Billing.Application.Commands.PremiumFinance.ScheduledInstalmentInput[] | nullnoThe agreed schedule, in due order. Fixed at signing; it cannot be added to later.

Essence.Payment.Billing.Api.Controllers.OpenSeatTrueUpRequest

Body for `POST /billing/seat-true-up/organizations/{id}/open`.

PropertyTypeRequiredDescription
periodstring | nullnoThe quarter as `yyyy-Qn`; null means the most recently closed one.

Essence.Payment.Billing.Api.Controllers.PackageVersionMigrationDeltaRequest

Body of `POST api/v1/billing/package-version-migrations` and of its `preview`. Identical, so what the subscriber was shown is what gets recorded.

PropertyTypeRequiredDescription
currencyCodestring | nullnoISO-4217; defaults to GBP.
currentPeriodEndstring (date-time) | nullnoThe day the current version's billing period ends.
currentPeriodStartstring (date-time) | nullnoFirst day of the current version's billing period.
currentVersionPricenumber (double)noThe current version's price for a whole billing period.
fromVersionstring | nullnoThe version being left, e.g. `v3.2`.
migrationEffectiveAtstring (date-time) | nullnoThe migration's effective date. Must fall inside the current billing period.
newVersionPricenumber (double)noThe new version's price for a whole billing period.
packageCodestring | nullnoThe commercial package, e.g. `PKG-PROF`.
subscriberUserIdstring (uuid)noThe subscriber who reads the preview.
subscriptionIdstring (uuid)noThe subscription the migration applies to.
termDaysinteger (int32) | nullnoThe pro-rata denominator in days; the current period's own length when omitted. Supply it where the billing term and the invoiced period differ.
toVersionstring | nullnoThe version being renewed onto, e.g. `v4.0`.

Essence.Payment.Billing.Api.Controllers.PauseSubscriptionRequest

PropertyTypeRequiredDescription
pauseDurationDaysinteger (int32)no—

Essence.Payment.Billing.Api.Controllers.PayArrearsRequest

Request body for an arrears payment.

PropertyTypeRequiredDescription
amountMinorinteger (int64)noAmount paid, in minor units. May not exceed the arrears outstanding.
currencystring | nullnoISO currency code. Must match the plan's.
paymentReferencestring | nullnoThe reference for the payment already taken on the payment rails.

Essence.Payment.Billing.Api.Controllers.PaymentPageScriptChangeRequest

Body of a status change: the change-management reference that authorises it.

PropertyTypeRequiredDescription
changeRecordstring | nullno—

Essence.Payment.Billing.Api.Controllers.PlaceHoldRequest

Place a bounded collections hold.

PropertyTypeRequiredDescription
arrangementNotestring | nullnoAn optional recorded arrangement.
currentLadderStageinteger (int32)noThe stage the ladder resumes at when the hold lifts.
pausedUntilstring (date-time)noMandatory expiry. Must be in the future and within the configured maximum.
reasonstring | nullnoWhy. Required.

Essence.Payment.Billing.Api.Controllers.PluginPurchaseSummaryDto

Summary DTO for a plugin purchase.

PropertyTypeRequiredDescription
canceledAtstring (date-time) | nullno—
currencystring | nullno—
idstring (uuid)no—
offeringIdstring (uuid)no—
offeringNamestring | nullno—
pricenumber (double)no—
pricingModelstring | nullno—
purchasedAtstring (date-time)no—
statusstring | nullno—

Essence.Payment.Billing.Api.Controllers.PostGroupPremiumAccrualsRequest

Body of `POST …/accruals`.

PropertyTypeRequiredDescription
accrualsEssence.Payment.Billing.Application.Commands.GroupPremium.GroupPremiumAccrualInput[] | nullno—

Essence.Payment.Billing.Api.Controllers.ProcessPaymentRequest

PropertyTypeRequiredDescription
gatewayPaymentIdstring | nullno—

Essence.Payment.Billing.Api.Controllers.ProcessSubscriptionPaymentRequest

Pay-now (spec §6.2). With an InvoiceId the charge is that invoice's balance: PaymentMethodId is Billing's saved PaymentMethod id and ExpectedAmount is what the customer was shown (409 if it is no longer the balance). Amount is the legacy invoiceless charge; with an invoice it is never charged.

PropertyTypeRequiredDescription
amountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
expectedAmountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
invoiceIdstring (uuid) | nullno—
paymentGatewaystring | nullno—
paymentMethodIdstring | nullno—

Essence.Payment.Billing.Api.Controllers.ProposeWriteOffRequest

Raise a write-off proposal.

PropertyTypeRequiredDescription
accountKeystring | nullnoThe account, as `org:{guid}` or `user:{guid}`.
invoiceIds(string (uuid))[] | nullnoThe invoices to dispose of. All must belong to the account and share a currency.
justificationstring | nullnoSupporting narrative. Required.
reasonCodeEssence.Payment.Billing.Domain.Aggregates.Collections.WriteOffReasonCodeno—

Essence.Payment.Billing.Api.Controllers.ProviderPaymentRequest

Funds that have reached the provider for a milestone already drawn.

PropertyTypeRequiredDescription
amountPenceinteger (int64)noThe positive amount that reached the provider, in pence.

Essence.Payment.Billing.Api.Controllers.ProvisionSeatRequest

Payload for adding one seat.

PropertyTypeRequiredDescription
planLabelstring | nullnoThe plan/tier the seat carries.
seatRefstring | nullnoThe seat's stable reference.
subscriptionRefstring | nullnoThe subscription the seat is billed under.

Essence.Payment.Billing.Api.Controllers.RaiseCommissionLineQueryRequest

Body of `POST /api/v1/channel-commissions/{commissionId}/queries`.

PropertyTypeRequiredDescription
currencystring | nullnoThe line's ISO currency code.
expectednumber (double) | nullnoThe figure the partner expected, signed, in the line's currency.
notestring | nullnoOptional, at most 2,000 characters.
reasonstring | nullnoOne of `rate, base, clawback, seat-change, rebate-band, missing-line, other`.

Essence.Payment.Billing.Api.Controllers.ReasonOnlyRequest

A request that carries only a reason.

PropertyTypeRequiredDescription
reasonstring | nullnoWhy. Required.

Essence.Payment.Billing.Api.Controllers.ReclaimSeatRequest

Body for `POST /billing/seat-lifecycle/organizations/{id}/reclaim`.

PropertyTypeRequiredDescription
consentDispositionstring | nullno`revoke_all`, `transfer_to_new_holder`, `per_grant` or `undecided`.
consentGrantsAffectedinteger (int32) | nullnoHow many outstanding grants the disposition covers, as read from the consent service. Null means they could not be read, which blocks an offboard.
handoverManagerRefstring (uuid) | nullnoThe manager the org-owned work goes to, when the route names one.
handoverRoutestring | nullno`new_holder`, `manager`, `org_vault` or `undecided`.
leaverRefstring (uuid)noThe departing holder (opaque org-user reference).
planLabelstring | nullnoThe plan/tier the seat carries.
scopestring | nullno`seat_only` or `reclaim_and_offboard`.
seatRefstring | nullnoThe seat reference, when the organisation has one; null lets Billing mint it.
subscriptionRefstring | nullnoThe subscription the seat is billed under (audit context).

Essence.Payment.Billing.Api.Controllers.RecordAccessToWorkAwardRequest

An approved award delivered by the Access to Work scheme.

PropertyTypeRequiredDescription
adjustmentIdstring | nullno—
approvedAmountMinorinteger (int64)no—
approvedAtstring | nullnoISO-8601. Stored verbatim.
awardIdstring | nullno—
costsEligibleFromstring | nullnoISO-8601 date, or null when the scheme stated no eligibility window.
currencystring | nullno—
fundingCategorystring | nullnoWire form: `equipment` | `software` | `support-hours` | `travel` | `workplace-alteration`.
schemeReferencestring | nullno—
withdrawnAtstring | nullnoISO-8601, present only when delivering a withdrawal.

Essence.Payment.Billing.Api.Controllers.RecordCisAnchorRequest

EPIC 4's anchor reference for a bound payment.

PropertyTypeRequiredDescription
anchorReferencestring | nullno—

Essence.Payment.Billing.Api.Controllers.RecordCisVerificationRequest

A CIS status check delivered by the verification service.

PropertyTypeRequiredDescription
checkedAtstring | nullnoISO-8601. Stored verbatim, because the anchored hash is taken over it.
organizationIdstring (uuid)no—
providerReferencestring | nullno—
ratePercentnumber (double)no—
sourcestring | nullno—
statusstring | nullnoWire form: `gross` | `registered` | `unmatched`.
subcontractorIdstring | nullno—
verificationIdstring | nullno—

Essence.Payment.Billing.Api.Controllers.RecordCollectionAttemptRequest

Request body for recording one collection attempt.

PropertyTypeRequiredDescription
failureCodestring | nullnoThe scheme's refusal code when it did not. A short code — not a place to describe the policyholder's circumstances.
paymentReferencestring | nullnoThe payment reference when it did.
succeededbooleannoTrue when the mandate paid.

Essence.Payment.Billing.Api.Controllers.RecordReimbursementDecisionRequest

The scheme's ruling on a submitted claim.

PropertyTypeRequiredDescription
decisionstring | nullnoWire form: `approve` | `reject`.
rejectionReasonstring | nullnoRequired when rejecting.

Essence.Payment.Billing.Api.Controllers.RecordReimbursementDisbursementRequest

The reference under which the money moved to the employer.

PropertyTypeRequiredDescription
disbursementRefstring | nullno—

Essence.Payment.Billing.Api.Controllers.RecordRetainerClearanceRequest

Body of `POST api/v1/billing/retainer-trust-fundings/{id}/clearance`.

PropertyTypeRequiredDescription
outcomeEssence.Payment.Billing.Application.Commands.RetainerTrust.RetainerClearanceOutcomeno—
paymentReferencestring | nullno—
reasonstring | nullno—

Essence.Payment.Billing.Api.Controllers.RefundPaymentRequest

Request body for a refund operation.

PropertyTypeRequiredDescription
amountnumber (double) | nullnoRefund amount in the payment's currency; null is a full refund.
businessJustificationstring | nullnoFR-14.015b: the written justification an aged (> 90-day) refund needs; recorded with the refund's authorisation chain.
reasonstring | nullnoHuman-readable reason for the refund.

Essence.Payment.Billing.Api.Controllers.RefundRetainerTrustFundingRequest

Body of `POST api/v1/billing/retainer-trust-fundings/{id}/refund`.

PropertyTypeRequiredDescription
reasonstring | nullno—

Essence.Payment.Billing.Api.Controllers.RegisterApprovedProviderRequest

An approved training provider as the register published them.

PropertyTypeRequiredDescription
namestring | nullno—
providerOrganizationIdstring (uuid)no—
registerReferencestring | nullno—
withdrawnAtIsostring | nullnoISO-8601, present only when approval has been withdrawn.

Essence.Payment.Billing.Api.Controllers.RegisterFundedStandardRequest

A funded standard as the scheme published it.

PropertyTypeRequiredDescription
coInvestmentPercentinteger (int32)no—
fundingBandCapPenceinteger (int64)no—
standardIdstring | nullno—
titlestring | nullno—
withdrawnAtIsostring | nullnoISO-8601, present only when funding has been withdrawn.

Essence.Payment.Billing.Api.Controllers.RegisterPartnerMetricRequest

FR-14.313 — the registration body.

PropertyTypeRequiredDescription
metricCodestring | nullnoThe code a use will be metered under.
offeringIdstring (uuid)noThe listing the metric belongs to.
partnerIdstring (uuid) | nullnoThe builder. Honoured ONLY for a billing admin acting on a builder's behalf; a partner caller's own id is resolved from its standing and a mismatch here is refused.
unitstring | nullnoWhat one unit measures — "tiles", "lookups", "renders".
unitPriceGbpnumber (double)noThe builder's price for one unit, in GBP.

Essence.Payment.Billing.Api.Controllers.ReleaseCisPaymentRequest

What the surface sends to release a payment. Mirrors `ReleaseCisPaymentInput` in `modules/business/src/ui/api/cisPayRunClient.ts`.

PropertyTypeRequiredDescription
labourPenceinteger (int64)no—
materialsPenceinteger (int64)no—
overrideReasonstring | nullnoPresent only when releasing over a stale-but-valid check.
payRunIdstring | nullno—
subcontractorIdstring | nullno—
vatPenceinteger (int64)no—
verificationIdstring | nullnoThe EPIC 53 verification being bound.

Essence.Payment.Billing.Api.Controllers.ReleaseCoolingOffRefundRequest

Body of `POST api/v1/billing/cooling-off-settlements/{id}/release`.

PropertyTypeRequiredDescription
refundReferencestring | nullnoThe provider's reference for the money returned to the customer.

Essence.Payment.Billing.Api.Controllers.ReleaseGrandfatherPriceLockRequest

Request body for withdrawing a grandfather price lock (#23327).

PropertyTypeRequiredDescription
reasonstring | nullnoWhy the lock is being withdrawn. Required — a price rise with no stated reason is not auditable.

Essence.Payment.Billing.Api.Controllers.RenewalOutcomeRequest

EPIC 85's renewal-outcome request body (`HttpBillingSignalAdapter.ExecuteRenewalOutcomeAsync`).

PropertyTypeRequiredDescription
authorisationReferencestring | nullnoThe deal-desk approval of a retention concession, if any.
currencystring | nullnoISO-4217 currency of Value.
outcomestring | nullno`Renew`, `Expand`, `Contract` or `Churn`.
valuenumber (double)noThe annualised value the renewal concluded at.

Essence.Payment.Billing.Api.Controllers.RequestDeveloperApiPlanUpgradeRequest

Wire body of `POST /api/v1/subscriptions/developer-api/upgrade-requests`.

PropertyTypeRequiredDescription
developerIdstring (uuid)no—
keyIdstring (uuid) | nullno—
reasonstring | nullno—
toTierCodestring | nullno—

Essence.Payment.Billing.Api.Controllers.ResolveSeatTrueUpHoldRequest

Body for the hold-resolution route.

PropertyTypeRequiredDescription
reasonstring | nullnoThe resolution reason, recorded on the line.
upheldbooleannoWhether the dispute is upheld (the held amount is written off).

Essence.Payment.Billing.Api.Controllers.SaveCisContractorPolicyRequest

An organisation's CIS settings.

PropertyTypeRequiredDescription
citbLevyEnabledbooleanno—
citbLevyRatePercentnumber (double)no—
deductOnLabourOnlybooleanno—
makerCheckerEnabledbooleanno—
reverifyAfterDaysinteger (int32)no—
reverseChargeVatbooleanno—
staleVerificationPosturestring | nullnoWire form: `block` | `warn-and-allow`.

Essence.Payment.Billing.Api.Controllers.ScheduleMilestonesRequest

An apprentice's funding schedule as the scheme or the provider agreement states it.

PropertyTypeRequiredDescription
allocationIdstring (uuid)noThe allocation whose committed places fund this apprenticeship.
apprenticeReferencestring | nullnoThe opaque reference the employer's surfaces show in place of a name.
milestonesEssence.Payment.Billing.Application.Commands.LevyAccount.ApprenticeshipMilestoneInput[] | nullno—
standardIdstring | nullno—

Essence.Payment.Billing.Api.Controllers.SeatReclaimPolicyRequest

Body for the policy route.

PropertyTypeRequiredDescription
defaultHandoverRoutestring | nullnoThe pre-selected handover route.
defaultScopestring | nullno`seat_only` or `reclaim_and_offboard`.

Essence.Payment.Billing.Api.Controllers.SeatRegistrationEntryRequest

One seat in an enrolment payload.

PropertyTypeRequiredDescription
holderRefstring (uuid) | nullnoThe holder to record, or null to add the seat unheld.
planLabelstring | nullnoThe plan/tier the seat carries.
seatRefstring | nullnoThe seat's stable reference.
subscriptionRefstring | nullnoThe subscription the seat is billed under.

Essence.Payment.Billing.Api.Controllers.SetOrganizationBillingDetailsRequest

Body of `PUT api/v1/billing/organization-details`.

PropertyTypeRequiredDescription
addressLine1string | nullno—
addressLine2string | nullno—
citystring | nullno—
countryCodestring | nullnoISO-3166 alpha-2, e.g. "GB".
postalCodestring | nullnoOptional: not every country has postal codes.
stateOrRegionstring | nullno—
taxIdstring | nullnoOptional VAT / tax identification number.

Essence.Payment.Billing.Api.Controllers.SetPriceBookStateRequest

PropertyTypeRequiredDescription
endPilotbooleanno—
isAuthorityboolean | nullno—
isPublicSectorProviderboolean | nullno—
pilotEndsAtstring (date-time) | nullno—
pilotStartsAtstring (date-time) | nullno—
procurementFrameworkCodestring | nullno—
reasonstring | nullno—

Essence.Payment.Billing.Api.Controllers.StartPaymentMethodSetupRequest

Request body for starting a card-collection flow. Every field is optional — an empty body collects a personal card on the primary gateway.

PropertyTypeRequiredDescription
emailstring | nullno—
gatewaystring | nullno—
namestring | nullno—
onboardingSessionIdstring (uuid) | nullno—
organizationIdstring (uuid) | nullno—
paymentMethodTypesstring[] | nullno—

Essence.Payment.Billing.Api.Controllers.StopGroupPremiumAccrualRequest

Body of `POST …/members/{memberRef}/stop-accrual`.

PropertyTypeRequiredDescription
effectiveFromstring | nullno`yyyy-MM-dd` — the first day not covered (cover end + 1).

Essence.Payment.Billing.Api.Controllers.SubmitReimbursementClaimRequest

What the employer console sends to claim reimbursement. Mirrors `ReimbursementClaimRequest` in `apps/frontend/web/org-portal/src/features/adjustment-console/types.ts`.

PropertyTypeRequiredDescription
adjustmentIdstring | nullno—
claimedAmountMinorinteger (int64)noWhat the employer actually spent, in minor units. May be under the award.
currencystring | nullno—
employerReferencestring | nullnoThe employer's own invoice/PO reference, for their reconciliation.
incurredOnstring | nullnoISO-8601 date the cost was incurred.

Essence.Payment.Billing.Api.Controllers.SwitchSubscriptionLicenceRequest

The body of `POST …/subscriptions/{id}/switch`.

PropertyTypeRequiredDescription
newPricingPlanIdstring (uuid)no—

Essence.Payment.Billing.Api.Controllers.TakeOwnershipRequest

Claim an account onto a named owner.

PropertyTypeRequiredDescription
ownershipEssence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderOwnershipno—
reasonstring | nullnoWhy. Required.

Essence.Payment.Billing.Api.Controllers.UpdateSubscriptionRequest

PropertyTypeRequiredDescription
metadatamap<string, string> | nullno—
paymentMethodIdstring | nullno—

Essence.Payment.Billing.Api.Controllers.UpgradeDeveloperApiPlanRequest

Wire body of `POST /api/v1/subscriptions/developer-api/upgrade`.

PropertyTypeRequiredDescription
breachedDimensionstring | nullno—
developerIdstring (uuid)no—
keyIdstring (uuid) | nullno—
toTierCodestring | nullno—

Essence.Payment.Billing.Api.Controllers.UpgradeSubscriptionRequest

PropertyTypeRequiredDescription
newPricingPlanIdstring (uuid)no—

Essence.Payment.Billing.Api.Controllers.UpholdCommissionLineQueryRequest

Body of `POST /api/v1/commission-queries/{id}/uphold`.

PropertyTypeRequiredDescription
reasonstring | nullno—

Essence.Payment.Billing.Api.Controllers.VoidInvoiceRequest

Body for M:Essence.Payment.Billing.Api.Controllers.InvoicesController.VoidInvoice(System.Guid,Essence.Payment.Billing.Api.Controllers.VoidInvoiceRequest,System.Threading.CancellationToken). The reason is recorded in the invoice metadata and the InvoiceVoidedEvent for audit (debt-2026-06-21-121).

PropertyTypeRequiredDescription
reasonstring | nullno—

Essence.Payment.Billing.Application.Commands.ChainParticipants.RegisterChainParticipantCommand

PropertyTypeRequiredDescription
invoicingPartyNamestring | nullno—
orgIdstring (uuid)no—
parentParticipantIdstring (uuid) | nullno—
partnerTierstring | nullno—
rolestring | nullno—

Essence.Payment.Billing.Application.Commands.ChainParticipants.SetChainParticipantCommercialContactCommand

PropertyTypeRequiredDescription
clearInvoicingPartyNamebooleanno—
clearRelationshipManagerbooleanno—
invoicingPartyNamestring | nullno—
participantIdstring (uuid)no—
relationshipManagerEmailstring | nullno—
relationshipManagerNamestring | nullno—

Essence.Payment.Billing.Application.Commands.ConsumerRemedies.ApplyUseWearDeductionCommand

PropertyTypeRequiredDescription
amountnumber (double)no—
appliedByPartyIdstring (uuid)no—
jurisdictionstring | nullno—
legalBasisstring | nullno—
sellerStatedReasonstring | nullno—
settlementIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.ConsumerRemedies.ReconcileRemedyOwnershipCommand

PropertyTypeRequiredDescription
priorTransferFoundbooleanno—
rightfulHolderUserIdstring (uuid)no—
settlementIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.ConsumerRemedies.RecordConsumerRemedyCommand

PropertyTypeRequiredDescription
claimReferencestring | nullno—
claimantUserIdstring (uuid)no—
currencyCodestring | nullno—
organizationIdstring (uuid) | nullno—
originalReceiptReferencestring | nullno—
remedyAgreedAtstring (date-time)no—
remedyAmountnumber (double)no—
remedyTypeEssence.Payment.Billing.Domain.Aggregates.ConsumerRemedySettlement.ConsumerRemedyTypeno—

Essence.Payment.Billing.Application.Commands.ConsumerRemedies.ReviewUseWearDeductionCommand

PropertyTypeRequiredDescription
acceptbooleanno—
disputeReasonstring | nullno—
settlementIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Enterprise.ActivateEnterpriseContractCommand

PropertyTypeRequiredDescription
contractIdstring (uuid)no—
secondApproverIdstring (uuid) | nullno—

Essence.Payment.Billing.Application.Commands.Enterprise.AdvanceEnterpriseDunningCommand

PropertyTypeRequiredDescription
asOfstring (date-time) | nullno—
contractIdstring (uuid)no—
invoiceDueDatestring (date-time)no—
invoiceIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Enterprise.AmendEnterpriseContractCommand

PropertyTypeRequiredDescription
additionalCommitmentnumber (double)no—
additionalSeatsinteger (int32)no—
contractIdstring (uuid)no—
currencystring | nullno—
descriptionstring | nullno—
effectiveDatestring (date-time)no—

Essence.Payment.Billing.Application.Commands.Enterprise.CreateEnterpriseContractCommand

PropertyTypeRequiredDescription
autoRenewbooleanno—
committedSeatsinteger (int32)no—
contractEndstring (date-time)no—
contractStartstring (date-time)no—
currencystring | nullno—
customPricenumber (double)no—
invoiceCadencestring | nullno—
organizationIdstring (uuid)no—
originatedBystring (uuid)no—
overageSeatRatenumber (double)no—
paymentTermsDaysinteger (int32)no—
subscriptionIdstring (uuid) | nullno—

Essence.Payment.Billing.Application.Commands.Family.AcceptFamilyInviteCommand

PropertyTypeRequiredDescription
memberIdstring (uuid)no—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Family.InviteFamilyMemberCommand

PropertyTypeRequiredDescription
emailstring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Family.OpenFamilyRosterCommand

PropertyTypeRequiredDescription
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.GroupPremium.GroupPremiumAccrualInput

PropertyTypeRequiredDescription
basisstring | nullno—
coveredDaysinteger (int32)no—
currencystring | nullno—
grossMinorinteger (int64)no—
memberRefstring | nullno—
periodFromstring | nullno—
periodTostring | nullno—

Essence.Payment.Billing.Application.Commands.Invoices.CreateInvoiceCommand

PropertyTypeRequiredDescription
dueDatestring (date-time)no—
lineItemsEssence.Payment.Billing.Application.Commands.Invoices.CreateInvoiceLineItemDto[] | nullno—
metadatamap<string, string> | nullno—
organizationIdstring (uuid) | nullno—
subscriptionIdstring (uuid) | nullno—
typestring | nullno—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Invoices.CreateInvoiceLineItemDto

PropertyTypeRequiredDescription
descriptionstring | nullno—
periodEndstring (date-time) | nullno—
periodStartstring (date-time) | nullno—
quantitynumber (double)no—
taxInclusivebooleanno—
taxRatenumber (double)no—
unitPriceEssence.Payment.Billing.Application.DTOs.MoneyDtono—

Essence.Payment.Billing.Application.Commands.Invoices.GenerateUsageInvoiceCommand

PropertyTypeRequiredDescription
dueDatestring (date-time) | nullno—
includeOverageChargesbooleanno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
subscriptionIdstring (uuid)no—
taxRatenumber (double)no—
useConsolidatedLineItemsbooleanno—

Essence.Payment.Billing.Application.Commands.LevyAccount.ApprenticeshipMilestoneInput

PropertyTypeRequiredDescription
isCompletionPaymentbooleanno—
milestoneCodestring | nullno—
milestoneTitlestring | nullno—
plannedPenceinteger (int64)no—

Essence.Payment.Billing.Application.Commands.LevyAccount.ApprovedProviderDto

PropertyTypeRequiredDescription
namestring | nullno—
organizationIdstring (uuid)no—
registerReferencestring | nullno—
withdrawnAtIsostring | nullno—

Essence.Payment.Billing.Application.Commands.LevyAccount.FundedStandardDto

PropertyTypeRequiredDescription
coInvestmentPercentinteger (int32)no—
fundingBandCapPenceinteger (int64)no—
standardIdstring | nullno—
titlestring | nullno—
withdrawnAtIsostring | nullno—

Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementImportDto

PropertyTypeRequiredDescription
exceptionCountinteger (int32)no—
importIdstring (uuid) | nullno—
lineCountinteger (int32)no—
linesEssence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementLineDto[] | nullno—
marketplaceCodestring | nullno—
matchedCountinteger (int32)no—
openExceptionCountinteger (int32)no—
outcomestring | nullno—
reportReferencestring | nullno—
totalsEssence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementTotalDto[] | nullno—

Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementLineDto

PropertyTypeRequiredDescription
adjustmentAmountnumber (double)no—
currencyCodestring | nullno—
distributorMarginAmountnumber (double)no—
distributorMarginPercentnumber (double) | nullno—
exceptionCodestring | nullno—
exceptionDetailstring | nullno—
exceptionOwnerstring | nullno—
grossAmountnumber (double)no—
isOpenbooleanno—
lineIdstring (uuid)no—
marketplaceLineReferencestring | nullno—
marketplaceSubscriptionIdstring | nullno—
netAmountnumber (double)no—
periodEndUtcstring (date-time)no—
periodStartUtcstring (date-time)no—
positioninteger (int32)no—
reportedUsageQuantitynumber (double) | nullno—
resolutionstring | nullno—
resolvedAtUtcstring (date-time) | nullno—
retiedSubscriptionIdstring (uuid) | nullno—
statusstring | nullno—
subscriptionIdstring (uuid) | nullno—
trailEssence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementTrailEntryDto[] | nullno—

Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementTotalDto

PropertyTypeRequiredDescription
adjustmentAmountnumber (double)no—
currencyCodestring | nullno—
distributorMarginAmountnumber (double)no—
grossAmountnumber (double)no—
netAmountnumber (double)no—

Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementTrailEntryDto

PropertyTypeRequiredDescription
actionstring | nullno—
actorstring | nullno—
ownerstring | nullno—
previousOwnerstring | nullno—
reasonstring | nullno—
recordedAtUtcstring (date-time)no—
sequenceinteger (int32)no—
subscriptionIdstring (uuid) | nullno—

Essence.Payment.Billing.Application.Commands.Marketplace.MarketplaceActivationResultDto

PropertyTypeRequiredDescription
marketplaceActivatedbooleanno—
marketplaceCodestring | nullno—
marketplaceFailureCodestring | nullno—
marketplaceSubscriptionIdstring | nullno—
replayedbooleanno—
subscriptionEssence.Payment.Billing.Application.DTOs.SubscriptionDtono—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Marketplace.MarketplaceLifecycleResultDto

PropertyTypeRequiredDescription
changestring | nullno—
eventIdstring | nullno—
outcomestring | nullno—
statusstring | nullno—
subscriptionIdstring (uuid) | nullno—

Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderPayoutStatusDto

PropertyTypeRequiredDescription
clawedBackGbpnumber (double)no—
paidGbpnumber (double)no—
pendingGbpnumber (double)no—
refundedGbpnumber (double)no—
reversedGbpnumber (double)no—
statusstring | nullno—
voidedGbpnumber (double)no—

Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementDto

PropertyTypeRequiredDescription
exchangeTakePercentnumber (double)no—
offeringsEssence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementOfferingDto[] | nullno—
partnerIdstring (uuid)no—
periodstring | nullno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
totalsEssence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMoneyDtono—

Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMetricDto

PropertyTypeRequiredDescription
metricCodestring | nullno—
moneyEssence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMoneyDtono—
statusstring | nullno—
unitstring | nullno—
unitPriceGbpnumber (double) | nullno—
unitsUsednumber (double)no—
usesinteger (int32)no—

Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMoneyDto

PropertyTypeRequiredDescription
payoutEssence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderPayoutStatusDtono—
ratedGbpnumber (double)no—
ratedLinesinteger (int32)no—
shareGbpnumber (double)no—
takeGbpnumber (double)no—
unitsRatednumber (double)no—

Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementOfferingDto

PropertyTypeRequiredDescription
metricsEssence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMetricDto[] | nullno—
offeringIdstring (uuid)no—
totalsEssence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMoneyDtono—

Essence.Payment.Billing.Application.Commands.PartnerMetrics.PartnerMetricDto

PropertyTypeRequiredDescription
exchangeTakePercentnumber (double)no—
idstring (uuid)no—
metricCodestring | nullno—
offeringIdstring (uuid)no—
partnerIdstring (uuid)no—
statusstring | nullno—
unitstring | nullno—
unitPriceGbpnumber (double)no—

Essence.Payment.Billing.Application.Commands.Payments.CreatePaymentCommand

PropertyTypeRequiredDescription
amountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
invoiceIdstring (uuid) | nullno—
metadatamap<string, string> | nullno—
paymentGatewaystring | nullno—
paymentMethodstring | nullno—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Payments.CreatePaymentIntentCommand

PropertyTypeRequiredDescription
amountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
captureImmediatelybooleanno—
confirmImmediatelybooleanno—
customerIdstring | nullno—
descriptionstring | nullno—
invoiceIdstring (uuid) | nullno—
metadatamap<string, string> | nullno—
paymentGatewaystring | nullno—
paymentMethodIdstring | nullno—
require3DSecurebooleanno—
returnUrlstring | nullno—
statementDescriptorstring | nullno—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Payouts.CreatePayoutCommand

PropertyTypeRequiredDescription
commissionRatenumber (double)no—
currencystring | nullno—
partnerIdstring (uuid)no—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
totalRevenuenumber (double)no—

Essence.Payment.Billing.Application.Commands.Payouts.ProcessPayoutCommand

PropertyTypeRequiredDescription
payoutIdstring (uuid)no—
transactionIdstring | nullno—

Essence.Payment.Billing.Application.Commands.Payouts.RecordPayoutDisbursementFailureCommand

PropertyTypeRequiredDescription
failureReasonstring | nullno—
payoutIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Payouts.ReissuePayoutManuallyCommand

PropertyTypeRequiredDescription
manualReferencestring | nullno—
payoutIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.PremiumFinance.ScheduledInstalmentInput

PropertyTypeRequiredDescription
amountMinorinteger (int64)no—
dueOnstring | nullno—

Essence.Payment.Billing.Application.Commands.PriceBook.OrganizationPriceBookStateDto

PropertyTypeRequiredDescription
isAuthoritybooleanno—
isPublicSectorProviderbooleanno—
organizationIdstring (uuid)no—
pilotActivebooleanno—
pilotEndsAtstring (date-time) | nullno—
pilotStartsAtstring (date-time) | nullno—
procurementFrameworkCodestring | nullno—
reasonstring | nullno—
setAtstring (date-time)no—
setBystring | nullno—

Essence.Payment.Billing.Application.Commands.PricingPlans.CreatePricingPlanCommand

PropertyTypeRequiredDescription
basePriceEssence.Payment.Billing.Application.DTOs.MoneyDtono—
billingPeriodEssence.Payment.Billing.Application.DTOs.BillingPeriodDtono—
descriptionstring | nullno—
featuresmap<string, unspecified> | nullno—
metadatamap<string, string> | nullno—
namestring | nullno—
tierstring | nullno—
trialDaysinteger (int32)no—

Essence.Payment.Billing.Application.Commands.PricingPlans.UpdatePricingPlanCommand

PropertyTypeRequiredDescription
basePriceEssence.Payment.Billing.Application.DTOs.MoneyDtono—
boundOrganizationIdstring (uuid) | nullno—
descriptionstring | nullno—
featuresmap<string, unspecified> | nullno—
idstring (uuid)no—
isPubliclyListedboolean | nullno—
metadatamap<string, string> | nullno—
namestring | nullno—
releaseOrganizationBindingbooleanno—
skuCodesstring[] | nullno—
trialDaysinteger (int32) | nullno—

Essence.Payment.Billing.Application.Commands.RenewalOutcomes.RenewalOutcomeResponse

PropertyTypeRequiredDescription
executedbooleanno—
executionReferencestring | nullno—
reasonstring | nullno—

Essence.Payment.Billing.Application.Commands.RetainerTrust.RetainerClearanceOutcome

0 | 1 | 2 with no declared properties.

Essence.Payment.Billing.Application.Commands.Skus.CreateSkuCommand

PropertyTypeRequiredDescription
codestring | nullno—
entitlementsmap<string, integer (int32) | null> | nullno—
familystring | nullno—
listPriceEssence.Payment.Billing.Application.DTOs.MoneyDtono—
namestring | nullno—
prerequisitesstring[] | nullno—

Essence.Payment.Billing.Application.Commands.Skus.ImportSkuRegistryCommand

PropertyTypeRequiredDescription
skusEssence.Payment.Billing.Application.Commands.Skus.SkuRegistryItem[] | nullno—
sourceRefstring | nullno—

Essence.Payment.Billing.Application.Commands.Skus.SkuRegistryImportResult

PropertyTypeRequiredDescription
createdinteger (int32)no—
deprecatedinteger (int32)no—
errorsstring[] | nullno—
grantsAddedinteger (int32)no—
grantsRemovedinteger (int32)no—
metricCodesAddedinteger (int32)no—
skippedinteger (int32)no—
unchangedinteger (int32)no—
withdrawninteger (int32)no—

Essence.Payment.Billing.Application.Commands.Skus.SkuRegistryItem

PropertyTypeRequiredDescription
aliasOfstring | nullno—
codestring | nullno—
displayNamestring | nullno—
dispositionstring | nullno—
entitlementsmap<string, integer (int32)> | nullno—
familystring | nullno—
includesUsersinteger (int32) | nullno—
licenceTierinteger (int32) | nullno—
maxPerOwnerinteger (int32) | nullno—
metricCodesstring[] | nullno—
minimumInstanceTierinteger (int32) | nullno—
minimumTermMonthsinteger (int32) | nullno—
namestring | nullno—
prerequisitesstring[] | nullno—
pricenumber (double) | nullno—
priceUnitSizeinteger (int32) | nullno—
ratifiedBystring | nullno—
requiresInstanceTierAtLeastinteger (int32) | nullno—
requiresPartnerStandingboolean | nullno—
subnamestring | nullno—
successorstring | nullno—
whostring | nullno—

Essence.Payment.Billing.Application.Commands.Skus.TransitionSkuStatusCommand

PropertyTypeRequiredDescription
codestring | nullno—
successorSkuCodestring | nullno—
targetStatusstring | nullno—

Essence.Payment.Billing.Application.Commands.SponsoredBilling.ConvertSponsoredEntitlementToSelfPayCommand

PropertyTypeRequiredDescription
paymentMethodIdstring | nullno—
sponsoredEntitlementIdstring (uuid)no—
targetPricingPlanIdstring (uuid)no—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Sponsorships.AudienceSelectorRequest

PropertyTypeRequiredDescription
autoEnrolbooleanno—
csvRefstring | nullno—
segmentIdsstring[] | nullno—
typestring | nullno—

Essence.Payment.Billing.Application.Commands.Sponsorships.CancelSponsorshipCommand

PropertyTypeRequiredDescription
attestationAcceptedbooleanno—
reasonstring | nullno—

Essence.Payment.Billing.Application.Commands.Sponsorships.CreateSponsorshipCommand

PropertyTypeRequiredDescription
audienceEssence.Payment.Billing.Application.Commands.Sponsorships.AudienceSelectorRequestno—
budgetCapMinorinteger (int64)no—
currencystring | nullno—
expiresAtstring (date-time) | nullno—
lawfulBasisEssence.Payment.Billing.Application.Commands.Sponsorships.LawfulBasisAttestationRequestno—
moduleIdstring | nullno—
moduleNamestring | nullno—
recipientResolutionEssence.Payment.Billing.Application.Commands.Sponsorships.RecipientResolutionSummaryRequestno—
sponsorDisplayNamestring | nullno—

Essence.Payment.Billing.Application.Commands.Sponsorships.DispatchRecipientRequest

PropertyTypeRequiredDescription
contactHashstring | nullno—
destinationEmailstring | nullno—
destinationPhonestring | nullno—

Essence.Payment.Billing.Application.Commands.Sponsorships.DispatchSponsorshipInvitesCommand

PropertyTypeRequiredDescription
recipientsEssence.Payment.Billing.Application.Commands.Sponsorships.DispatchRecipientRequest[] | nullno—

Essence.Payment.Billing.Application.Commands.Sponsorships.LawfulBasisAttestationRequest

PropertyTypeRequiredDescription
attestedbooleanno—
authoriserstring | nullno—
basisstring | nullno—

Essence.Payment.Billing.Application.Commands.Sponsorships.RecipientResolutionSummaryRequest

PropertyTypeRequiredDescription
csvRefstring | nullno—
dispatchableinteger (int32)no—
duplicatesinteger (int32)no—
existingUsersinteger (int32)no—
invalidinteger (int32)no—
newContactsinteger (int32)no—
suppressedinteger (int32)no—
totalRowsinteger (int32)no—

Essence.Payment.Billing.Application.Commands.Sponsorships.UpdateSponsorshipAudienceCommand

PropertyTypeRequiredDescription
autoEnrolbooleanno—
csvRefstring | nullno—
recipientResolutionEssence.Payment.Billing.Application.Commands.Sponsorships.RecipientResolutionSummaryRequestno—
segmentIdsstring[] | nullno—
typestring | nullno—

Essence.Payment.Billing.Application.Commands.Subscriptions.ChannelRouteDto

PropertyTypeRequiredDescription
channelPartnerIdstring (uuid) | nullno—
dealRegistrationIdstring (uuid) | nullno—
hostingSovereignInstanceIdstring (uuid) | nullno—
operatorOrganizationIdstring (uuid) | nullno—
routestring | nullno—

Essence.Payment.Billing.Application.Commands.Subscriptions.CreateSubscriptionCommand

PropertyTypeRequiredDescription
channelRouteEssence.Payment.Billing.Application.Commands.Subscriptions.ChannelRouteDtono—
collectionMethodEssence.Payment.Billing.Domain.Aggregates.Subscription.CollectionMethodno—
confirmedPriceEssence.Payment.Billing.Application.DTOs.CheckoutPriceDtono—
currencystring | nullno—
dealAuthorisationReferencestring | nullno—
isBaseSubscriptionbooleanno—
itemsEssence.Payment.Billing.Application.Commands.Subscriptions.CreateSubscriptionItemDto[] | nullno—
licensedSeatsinteger (int32)no—
metadatamap<string, string> | nullno—
offeredPriceEssence.Payment.Billing.Application.DTOs.CheckoutPriceDtono—
organizationIdstring (uuid) | nullno—
overrideTrialDaysinteger (int32) | nullno—
pricingPlanIdstring (uuid)no—
providerInstancePriceEssence.Payment.Billing.Application.Commands.Subscriptions.ProviderInstancePriceDtono—
reEngagementTouchIdstring | nullno—
skuCodestring | nullno—
startDatestring (date-time) | nullno—
subscriptionClassEssence.Payment.Billing.Domain.Aggregates.Subscription.SubscriptionClassno—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Subscriptions.CreateSubscriptionItemDto

PropertyTypeRequiredDescription
pricingPlanIdstring (uuid)no—
quantityinteger (int32)no—

Essence.Payment.Billing.Application.Commands.Subscriptions.ProviderInstancePriceDto

PropertyTypeRequiredDescription
amountnumber (double)no—
currencystring | nullno—
hostingOfferIdstring (uuid)no—
priceSourcestring | nullno—
resolvedAtUtcstring (date-time)no—
sovereignInstanceIdstring (uuid)no—

Essence.Payment.Billing.Application.Commands.Usage.CreateUsageRecordCommand

PropertyTypeRequiredDescription
actionDigeststring | nullno—
metadatamap<string, unspecified> | nullno—
metricNamestring | nullno—
metricValuenumber (double)no—
quotaReservationKeystring | nullno—
subscriptionIdstring (uuid)no—
timestampstring (date-time)no—
unitstring | nullno—

Essence.Payment.Billing.Application.Commands.Usage.QuotaReservationReleaseResponseDto

PropertyTypeRequiredDescription
idempotencyKeystring | nullno—
outcomestring | nullno—
releasedbooleanno—

Essence.Payment.Billing.Application.DTOs.AccessToWorkAwardDto

PropertyTypeRequiredDescription
adjustmentIdstring | nullno—
approvedAmountMinorinteger (int64)no—
approvedAtstring | nullno—
awardIdstring | nullno—
costsEligibleFromstring | nullno—
currencystring | nullno—
fundingCategorystring | nullno—
schemeReferencestring | nullno—
withdrawnAtstring | nullno—

Essence.Payment.Billing.Application.DTOs.AccountCollectionsStateDto

PropertyTypeRequiredDescription
accountIdstring (uuid)no—
accountKeystring | nullno—
accountKindstring | nullno—
arrangementNotestring | nullno—
automationPausedUntilstring (date-time) | nullno—
automationSuppressedbooleanno—
holdCountinteger (int32)no—
holdPlacedAtstring (date-time) | nullno—
holdPlacedByRefstring | nullno—
holdReasonstring | nullno—
ladderStageAtHoldinteger (int32)no—
ownerRefstring | nullno—
ownershipstring | nullno—
ownershipReasonstring | nullno—
ownershipTakenAtstring (date-time) | nullno—
suppressionReasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.ActivationAttributionByTouchDto

PropertyTypeRequiredDescription
attributedActivationCountinteger (int32)no—
firstActivationAtstring (date-time)no—
lastActivationAtstring (date-time)no—
reEngagementTouchIdstring | nullno—

Essence.Payment.Billing.Application.DTOs.ActivationAttributionLinkageDto

PropertyTypeRequiredDescription
activatedAtstring (date-time)no—
eventPairEmittedbooleanno—
organizationIdstring (uuid) | nullno—
planstring | nullno—
reEngagementTouchIdstring | nullno—
subscriptionIdstring (uuid)no—
tierstring | nullno—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.ActivationAttributionReportDto

PropertyTypeRequiredDescription
byTouchEssence.Payment.Billing.Application.DTOs.ActivationAttributionByTouchDto[] | nullno—
distinctTouchesinteger (int32)no—
linkagesEssence.Payment.Billing.Application.DTOs.ActivationAttributionLinkageDto[] | nullno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
totalAttributedActivationsinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.ApprovedDealTermsDto

PropertyTypeRequiredDescription
accountIdstring (uuid)no—
appliedAtstring (date-time) | nullno—
appliedToSubscriptionIdstring (uuid) | nullno—
approvalLevelstring | nullno—
approvedAtstring (date-time)no—
approvedBystring | nullno—
approvedCurrencyCodestring | nullno—
approvedValuenumber (double)no—
authorisationReferencestring | nullno—
caseIdstring (uuid)no—
isAppliedbooleanno—
opportunityIdstring (uuid)no—
reasonstring | nullno—
requestedBystring | nullno—

Essence.Payment.Billing.Application.DTOs.ArrearsEpisodeDto

PropertyTypeRequiredDescription
closedAtstring (date-time) | nullno—
closureReasonstring | nullno—
episodeNumberinteger (int32)no—
isOpenbooleanno—
openedAtstring (date-time)no—
openedByInstalmentSequenceinteger (int32)no—
openingArrearsMinorinteger (int64)no—

Essence.Payment.Billing.Application.DTOs.ArrearsPaymentDto

PropertyTypeRequiredDescription
amountMinorinteger (int64)no—
arrearsClearedbooleanno—
outstandingAfterMinorinteger (int64)no—
paidAtstring (date-time)no—
paymentReferencestring | nullno—

Essence.Payment.Billing.Application.DTOs.ArrearsPaymentResultDto

PropertyTypeRequiredDescription
acceptedbooleanno—
arrearsClearedbooleanno—
currencystring | nullno—
outstandingArrearsMinorinteger (int64)no—
paymentReferencestring | nullno—
replayedbooleanno—

Essence.Payment.Billing.Application.DTOs.AttributedActorDto

PropertyTypeRequiredDescription
actorLabelstring | nullno—
rolestring | nullno—

Essence.Payment.Billing.Application.DTOs.AudienceSelectorDto

PropertyTypeRequiredDescription
autoEnrolbooleanno—
csvRefstring | nullno—
estimatedReachEssence.Payment.Billing.Domain.ValueObjects.KAnonCountno—
segmentIdsstring[] | nullno—
typestring | nullno—

Essence.Payment.Billing.Application.DTOs.BillingActualsDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
contractVersionstring | nullno—
currencystring | nullno—
freshnessBudgetHoursinteger (int32)no—
isStalebooleanno—
lastActualAtstring (date-time) | nullno—
organizationIdstring (uuid)no—
paidInvoiceCountinteger (int32)no—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
realisedSubtotalnumber (double)no—
realisedTaxnumber (double)no—
realisedTotalnumber (double)no—

Essence.Payment.Billing.Application.DTOs.BillingDegradationNoticeDto

PropertyTypeRequiredDescription
billedThroughDisplayNamestring | nullno—
causestring | nullno—
consequenceAtUtcstring (date-time) | nullno—
messagestring | nullno—
noticeKindstring | nullno—
payerActionRequiredbooleanno—
readOnlyFromUtcstring (date-time) | nullno—
readOnlySinceUtcstring (date-time) | nullno—
reinstatementByUtcstring (date-time) | nullno—
statestring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.BillingPeriodDto

PropertyTypeRequiredDescription
intervalstring | nullno—
intervalCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.BulkSeatReclaimOutcomeDto

PropertyTypeRequiredDescription
failureReasonstring | nullno—
leaverRefstring (uuid)no—
seatReassignmentIdstring (uuid) | nullno—
succeededbooleanno—

Essence.Payment.Billing.Application.DTOs.CancellationPreviewDto

PropertyTypeRequiredDescription
affectedReachEssence.Payment.Billing.Domain.ValueObjects.KAnonCountno—
currencystring | nullno—
invoiceLinesEssence.Payment.Billing.Application.DTOs.ProRataInvoiceLineDto[] | nullno—
nextInvoiceAtstring (date-time) | nullno—
proRataChargeMinorinteger (int64)no—
proRataCreditMinorinteger (int64)no—
requiresAttestationbooleanno—
sponsorshipIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.ChainParticipantDto

PropertyTypeRequiredDescription
idstring (uuid)no—
invoicingPartyNamestring | nullno—
orgIdstring (uuid)no—
parentParticipantIdstring (uuid) | nullno—
partnerTierstring | nullno—
relationshipManagerEmailstring | nullno—
relationshipManagerNamestring | nullno—
rolestring | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.ChannelCommissionDto

PropertyTypeRequiredDescription
amountnumber (double)no—
calculatedAtstring (date-time)no—
currencystring | nullno—
dealIdstring | nullno—
idstring (uuid)no—
isClawbackbooleanno—
modelstring | nullno—
paidAtstring (date-time) | nullno—
partnerIdstring | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.ChannelCommissionStatementDto

PropertyTypeRequiredDescription
commissionsEssence.Payment.Billing.Application.DTOs.ChannelCommissionDto[] | nullno—
partnerIdstring | nullno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
totalPaidnumber (double)no—
totalPendingnumber (double)no—

Essence.Payment.Billing.Application.DTOs.ChannelOrderDto

PropertyTypeRequiredDescription
attributionChainstring | nullno—
buyPricenumber (double) | nullno—
commercialModelstring | nullno—
commissionRatenumber (double) | nullno—
currencystring | nullno—
customerOrgIdstring | nullno—
dealIdstring | nullno—
idstring (uuid)no—
orderValuenumber (double)no—
partnerIdstring | nullno—
referralFeenumber (double) | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.ChannelPartnerRevenueDto

PropertyTypeRequiredDescription
commissionnumber (double)no—
orderCountinteger (int32)no—
partnerIdstring | nullno—
partnerNamestring | nullno—
revenuenumber (double)no—

Essence.Payment.Billing.Application.DTOs.ChannelReportDto

PropertyTypeRequiredDescription
byPartnerEssence.Payment.Billing.Application.DTOs.ChannelPartnerRevenueDto[] | nullno—
totalChannelCommissionsnumber (double)no—
totalChannelPayoutsnumber (double)no—
totalChannelRevenuenumber (double)no—

Essence.Payment.Billing.Application.DTOs.ChannelTrueUpLineDto

PropertyTypeRequiredDescription
amountnumber (double)no—
commissionIdstring (uuid)no—
currencystring | nullno—
dealIdstring | nullno—
earnedAtstring (date-time)no—
kindstring | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.ChannelTrueUpOrderDto

PropertyTypeRequiredDescription
acknowledgedAtstring (date-time) | nullno—
actualValuenumber (double)no—
adjustmentAmountnumber (double)no—
adjustmentInvoiceIdstring (uuid) | nullno—
channelOrderIdstring (uuid)no—
dealIdstring | nullno—
orderedValuenumber (double)no—
reconciledAtstring (date-time)no—
trueUpIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.ChannelTrueUpPeriodDto

PropertyTypeRequiredDescription
linesEssence.Payment.Billing.Application.DTOs.ChannelTrueUpLineDto[] | nullno—
ordersEssence.Payment.Billing.Application.DTOs.ChannelTrueUpOrderDto[] | nullno—
periodstring | nullno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
statusstring | nullno—
totalsEssence.Payment.Billing.Application.DTOs.ChannelTrueUpTotalDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.ChannelTrueUpTotalDto

PropertyTypeRequiredDescription
accruednumber (double)no—
currencystring | nullno—
deltanumber (double) | nullno—
trueUpAdjustmentnumber (double)no—
truedUpnumber (double) | nullno—

Essence.Payment.Billing.Application.DTOs.CheckoutPriceDto

PropertyTypeRequiredDescription
amountnumber (double)no—
currencystring | nullno—

Essence.Payment.Billing.Application.DTOs.CheckoutPriceQuoteDto

PropertyTypeRequiredDescription
amountnumber (double) | nullno—
currencystring | nullno—
offeredAmountnumber (double) | nullno—
offeredCurrencystring | nullno—
priceChangedbooleanno—
purchasablebooleanno—
requiresConfirmationbooleanno—
skuCodestring | nullno—
statusstring | nullno—
unavailableReasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.ChurnReportDto

PropertyTypeRequiredDescription
churnRatenumber (double)no—
involuntaryChurninteger (int32)no—
netChurninteger (int32)no—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
voluntaryChurninteger (int32)no—

Essence.Payment.Billing.Application.DTOs.CisContractorPolicyDto

PropertyTypeRequiredDescription
citbLevyEnabledbooleanno—
citbLevyRatePercentnumber (double)no—
deductOnLabourOnlybooleanno—
isStatutoryDefaultbooleanno—
makerCheckerEnabledbooleanno—
organizationIdstring | nullno—
reverifyAfterDaysinteger (int32)no—
reverseChargeVatbooleanno—
staleVerificationPosturestring | nullno—

Essence.Payment.Billing.Application.DTOs.CisDeductionBreakdownDto

PropertyTypeRequiredDescription
citbLevyPenceinteger (int64)no—
deductionBasePenceinteger (int64)no—
deductionPenceinteger (int64)no—
grossPenceinteger (int64)no—
labourPenceinteger (int64)no—
materialsPenceinteger (int64)no—
netPenceinteger (int64)no—
ratePercentnumber (double)no—
reverseChargeAppliedbooleanno—
statusstring | nullno—
vatPenceinteger (int64)no—

Essence.Payment.Billing.Application.DTOs.CisDeductionStatementDto

PropertyTypeRequiredDescription
breakdownEssence.Payment.Billing.Application.DTOs.CisDeductionBreakdownDtono—
contentHashstring | nullno—
contractorNamestring | nullno—
contractorOrganizationIdstring | nullno—
dueBystring | nullno—
issuedAtstring | nullno—
paymentDatestring | nullno—
paymentIdstring | nullno—
statementIdstring | nullno—
subcontractorIdstring | nullno—
subcontractorNamestring | nullno—
taxMonthEndingstring | nullno—
verificationEssence.Payment.Billing.Application.DTOs.CisVerificationBindingDtono—

Essence.Payment.Billing.Application.DTOs.CisDisbursementDto

PropertyTypeRequiredDescription
anchorReferencestring | nullno—
bindingEssence.Payment.Billing.Application.DTOs.CisVerificationBindingDtono—
deductionPenceinteger (int64)no—
netPenceinteger (int64)no—
paidAtstring | nullno—
payRunIdstring | nullno—
paymentIdstring | nullno—
statementEssence.Payment.Billing.Application.DTOs.CisDeductionStatementDtono—

Essence.Payment.Billing.Application.DTOs.CisFreshnessOverrideDto

PropertyTypeRequiredDescription
ageDaysnumber (double)no—
overriddenAtstring | nullno—
overriddenBystring | nullno—
reasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.CisVerificationBindingDto

PropertyTypeRequiredDescription
boundAtstring | nullno—
canonicalFormstring | nullno—
checkedAtstring | nullno—
contentHashstring | nullno—
contractVersionstring | nullno—
overrideEssence.Payment.Billing.Application.DTOs.CisFreshnessOverrideDtono—
paymentIdstring | nullno—
providerReferencestring | nullno—
ratePercentnumber (double)no—
sourcestring | nullno—
statusstring | nullno—
subcontractorIdstring | nullno—
verificationIdstring | nullno—

Essence.Payment.Billing.Application.DTOs.CisVerificationRecordDto

PropertyTypeRequiredDescription
checkedAtstring | nullno—
organizationIdstring | nullno—
providerReferencestring | nullno—
ratePercentnumber (double)no—
recordedAtstring | nullno—
relianceEndsAtstring | nullno—
sourcestring | nullno—
statusstring | nullno—
subcontractorIdstring | nullno—
taxYearstring | nullno—
verificationIdstring | nullno—

Essence.Payment.Billing.Application.DTOs.CommissionLineQueryDto

PropertyTypeRequiredDescription
ageDaysinteger (int32)no—
closedAtstring (date-time) | nullno—
commissionIdstring (uuid)no—
currencystring | nullno—
decisionReasonstring | nullno—
differencenumber (double)no—
expectednumber (double)no—
heldnumber (double)no—
idstring (uuid)no—
isClawbackLinebooleanno—
ledgernumber (double)no—
notestring | nullno—
partnerIdstring (uuid)no—
raisedAtstring (date-time)no—
reasonstring | nullno—
statusstring | nullno—
trailEssence.Payment.Billing.Application.DTOs.CommissionLineQueryEventDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.CommissionLineQueryEventDto

PropertyTypeRequiredDescription
actorRolestring | nullno—
amountnumber (double) | nullno—
detailstring | nullno—
kindstring | nullno—
occurredAtstring (date-time)no—
sequenceinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.CompletionAuditJoinDto

PropertyTypeRequiredDescription
anchorReferencestring | nullno—
apprenticeReferencestring | nullno—
apprenticeshipIdstring | nullno—
completedAtIsostring | nullno—
credentialIdstring | nullno—
evidenceEntryIdsstring[] | nullno—
gradestring | nullno—
reconciliationLineIdsstring[] | nullno—
standardIdstring | nullno—

Essence.Payment.Billing.Application.DTOs.ConsumerRemedySettlementDto

PropertyTypeRequiredDescription
claimReferencestring | nullno—
claimantUserIdstring (uuid)no—
currencyCodestring | nullno—
deductionEssence.Payment.Billing.Application.DTOs.UseWearDeductionDtono—
idstring (uuid)no—
isBlockedByDeductionReviewbooleanno—
netReleasedAmountnumber (double) | nullno—
organizationIdstring (uuid) | nullno—
originalReceiptReferencestring | nullno—
ownershipReconciledAtstring (date-time) | nullno—
priorTransferFoundbooleanno—
proposedNetAmountnumber (double)no—
remedyAgreedAtstring (date-time)no—
remedyAmountnumber (double)no—
remedyTypestring | nullno—
rightfulHolderUserIdstring (uuid) | nullno—
settledAtstring (date-time) | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.CoolingOffCancellationSettlementDto

PropertyTypeRequiredDescription
coolingOffEndsAtstring (date-time)no—
createdAtstring (date-time)no—
currencyCodestring | nullno—
customerUserIdstring (uuid)no—
daysElapsedinteger (int32)no—
deductionnumber (double)no—
idstring (uuid)no—
noticeReceivedAtstring (date-time)no—
pricenumber (double)no—
providerOrganizationIdstring (uuid)no—
purchaseReferencestring | nullno—
purchasedAtstring (date-time)no—
refundAmountnumber (double)no—
refundReferencestring | nullno—
refundSettledAtstring (date-time) | nullno—
serviceStartedAtstring (date-time) | nullno—
serviceTermDaysinteger (int32)no—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.CreditLiabilityReportDto

PropertyTypeRequiredDescription
activeBalancenumber (double)no—
asOfstring (date-time)no—
currencystring | nullno—
deferredBalancenumber (double)no—
expiringWithin30Daysnumber (double)no—
expiringWithin60Daysnumber (double)no—
expiringWithin90Daysnumber (double)no—
projected30DayBurnnumber (double)no—
projected60DayBurnnumber (double)no—
projected90DayBurnnumber (double)no—

Essence.Payment.Billing.Application.DTOs.CreditNoteDto

PropertyTypeRequiredDescription
currencystring | nullno—
idstring (uuid)no—
issuedAtstring (date-time)no—
linesEssence.Payment.Billing.Application.DTOs.CreditNoteLineDto[] | nullno—
numberstring | nullno—
organizationIdstring (uuid) | nullno—
originalInvoiceIdstring (uuid)no—
originalInvoiceNumberstring | nullno—
reasonstring | nullno—
subscriptionIdstring (uuid) | nullno—
subtotalnumber (double)no—
taxAmountnumber (double)no—
totalnumber (double)no—
userIdstring (uuid)no—
vatInclusivebooleanno—

Essence.Payment.Billing.Application.DTOs.CreditNoteLineDto

PropertyTypeRequiredDescription
descriptionstring | nullno—
grossnumber (double)no—
netnumber (double)no—
quantitynumber (double)no—
taxnumber (double)no—
taxInclusivebooleanno—
taxRatePercentnumber (double)no—

Essence.Payment.Billing.Application.DTOs.DegradedSubscriptionLineDto

PropertyTypeRequiredDescription
degradationAgeHoursnumber (double)no—
degradedSinceUtcstring (date-time)no—
organizationIdstring (uuid) | nullno—
paymentFailureCountinteger (int32)no—
subscriptionIdstring (uuid)no—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.DeveloperApiPlanCheckoutDto

PropertyTypeRequiredDescription
chargeReferencestring | nullno—
correlationIdstring | nullno—
previousTierCodestring | nullno—
subscriptionIdstring | nullno—
tierCodestring | nullno—

Essence.Payment.Billing.Application.DTOs.DeveloperApiPlanTierDto

PropertyTypeRequiredDescription
codestring | nullno—
currencystring | nullno—
isPurchasablebooleanno—
isSellableNowbooleanno—
listPricenumber (double) | nullno—
namestring | nullno—
planSkuCodestring | nullno—
requiresSalesContactbooleanno—

Essence.Payment.Billing.Application.DTOs.DeveloperApiUpgradeRequestDto

PropertyTypeRequiredDescription
approverEmailstring | nullno—
requestIdstring | nullno—
requestedAtstring (date-time)no—
statusstring | nullno—
toTierCodestring | nullno—

Essence.Payment.Billing.Application.DTOs.EarlyLeaverDto

PropertyTypeRequiredDescription
apprenticeReferencestring | nullno—
apprenticeshipIdstring | nullno—
lastAchievedMilestoneCodestring | nullno—
leftAtIsostring | nullno—
reasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.EnterpriseAgreementOverviewDto

PropertyTypeRequiredDescription
actualSpendEssence.Payment.Billing.Application.DTOs.MoneyFigureDtono—
asOfstring (date-time)no—
autoRenewboolean | nullno—
committedSpendnumber (double) | nullno—
contractVersionstring | nullno—
currencystring | nullno—
eaActivebooleanno—
organizationIdstring (uuid)no—
seatPositionstring | nullno—
seatPositionLabelstring | nullno—
seatsAssignedEssence.Payment.Billing.Application.DTOs.SeatFigureDtono—
seatsCommittedinteger (int32) | nullno—
statusstring | nullno—
termEndstring (date-time) | nullno—
termStartstring (date-time) | nullno—

Essence.Payment.Billing.Application.DTOs.EnterpriseContractDto

PropertyTypeRequiredDescription
activatedAtstring (date-time) | nullno—
autoRenewbooleanno—
committedSeatsinteger (int32)no—
contractEndstring (date-time)no—
contractStartstring (date-time)no—
currencystring | nullno—
customPricenumber (double)no—
dunningInvoiceDueDatestring (date-time) | nullno—
dunningInvoiceIdstring (uuid) | nullno—
dunningStepstring | nullno—
firstInvoiceAmountnumber (double)no—
idstring (uuid)no—
invoiceCadencestring | nullno—
organizationIdstring (uuid)no—
overageSeatRatenumber (double)no—
paymentTermsDaysinteger (int32)no—
requiresSecondApprovalbooleanno—
secondApproverIdstring (uuid) | nullno—
statusstring | nullno—
subscriptionIdstring (uuid) | nullno—
suspendedAtstring (date-time) | nullno—

Essence.Payment.Billing.Application.DTOs.ExecutiveDashboardDto

PropertyTypeRequiredDescription
arrnumber (double)no—
currencystring | nullno—
generatedAtstring (date-time)no—
grossMarginPercentnumber (double)no—
mrrnumber (double)no—
periodChannelCommissionsnumber (double)no—
periodEndstring (date-time)no—
periodGrossMarginnumber (double)no—
periodRevenuenumber (double)no—
periodStartstring (date-time)no—
revenueByStreamEssence.Payment.Billing.Application.DTOs.RevenueStreamLineDto[] | nullno—
topCustomersEssence.Payment.Billing.Application.DTOs.TopCustomerRevenueDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.ExtendSandboxSponsorshipRequest

PropertyTypeRequiredDescription
reasonstring | nullno—
sponsoredUntilstring (date-time)no—

Essence.Payment.Billing.Application.DTOs.FamilyInviteForUserDto

PropertyTypeRequiredDescription
expiresAtstring (date-time)no—
invitedAtstring (date-time)no—
memberIdstring (uuid)no—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.FamilyMemberDto

PropertyTypeRequiredDescription
acceptedAtstring (date-time) | nullno—
emailstring | nullno—
expiresAtstring (date-time)no—
idstring (uuid)no—
invitedAtstring (date-time)no—
occupiesSeatbooleanno—
releasedAtstring (date-time) | nullno—
statusstring | nullno—
userIdstring (uuid) | nullno—

Essence.Payment.Billing.Application.DTOs.FamilyMembershipDto

PropertyTypeRequiredDescription
availableSeatsinteger (int32)no—
idstring (uuid)no—
maxSeatsinteger (int32)no—
membersEssence.Payment.Billing.Application.DTOs.FamilyMemberDto[] | nullno—
occupiedSeatsinteger (int32)no—
ownerUserIdstring (uuid)no—
statusstring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.FamilyRosterForUserDto

PropertyTypeRequiredDescription
availableSeatsinteger (int32)no—
foundbooleanno—
maxSeatsinteger (int32)no—
occupiedSeatsinteger (int32)no—
rolestring | nullno—
rosterIdstring (uuid) | nullno—
subscriptionIdstring (uuid) | nullno—

Essence.Payment.Billing.Application.DTOs.GrandfatheredCohortDto

PropertyTypeRequiredDescription
assumedChurnRateOnExpirynumber (double)no—
currencyCodestring | nullno—
deferredRevenueToLockEndnumber (double)no—
foregoneToDatenumber (double)no—
lockedSubscriberCountinteger (int32)no—
locksExcludedForUnknownPeriodinteger (int32)no—
locksNoLongerInForceinteger (int32)no—
locksWithDeltaFromLockRecordinteger (int32)no—
locksWithMeasuredDeltainteger (int32)no—
monthsEssence.Payment.Billing.Application.DTOs.GrandfatheredCohortMonthDto[] | nullno—
periodDeferredRevenuenumber (double)no—
projectedAnnualUpliftOnExpirynumber (double)no—
supersedeReferencestring | nullno—

Essence.Payment.Billing.Application.DTOs.GrandfatheredCohortFinanceReportDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
assumedChurnRateOnExpirynumber (double)no—
cohortsEssence.Payment.Billing.Application.DTOs.GrandfatheredCohortDto[] | nullno—
resolutionRowsReadinteger (int32)no—
supersedeReferencestring | nullno—
truncatedbooleanno—

Essence.Payment.Billing.Application.DTOs.GrandfatheredCohortMonthDto

PropertyTypeRequiredDescription
deferredRevenueToLockEndnumber (double)no—
expiringWithinNinetyDaysbooleanno—
listPricenumber (double) | nullno—
lockExpiryMonthstring | nullno—
lockedPricenumber (double) | nullno—
lockedSubscriberCountinteger (int32)no—
periodDeferredRevenuenumber (double)no—
pricesVarybooleanno—
projectedAnnualUpliftOnExpirynumber (double)no—

Essence.Payment.Billing.Application.DTOs.GrandfatherPriceLockDto

PropertyTypeRequiredDescription
appliedBystring (uuid)no—
createdAtstring (date-time)no—
currencyCodestring | nullno—
idstring (uuid)no—
inForcebooleanno—
listAmountAtLocknumber (double)no—
lockedAmountnumber (double)no—
lockedUntilstring (date-time)no—
organizationIdstring (uuid) | nullno—
preExpiryNoticeDuebooleanno—
preExpiryNoticeIssuedAtstring (date-time) | nullno—
releaseReasonstring | nullno—
releasedAtstring (date-time) | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—
supersedeReferencestring | nullno—

Essence.Payment.Billing.Application.DTOs.GrantSandboxSponsorshipRequest

PropertyTypeRequiredDescription
grantIdstring (uuid)no—
organizationIdstring (uuid)no—
purposestring | nullno—
referencestring | nullno—
skuCodestring | nullno—
sponsoredUntilstring (date-time)no—

Essence.Payment.Billing.Application.DTOs.GroupPremiumAccrualDto

PropertyTypeRequiredDescription
basisstring | nullno—
coveredDaysinteger (int32)no—
currencystring | nullno—
grossMinorinteger (int64)no—
memberRefstring | nullno—
periodDaysinteger (int32)no—
periodFromstring | nullno—
periodTostring | nullno—
postedAtstring (date-time)no—
postingReferencestring | nullno—
revisioninteger (int32)no—
schemeIdstring | nullno—
statusstring | nullno—
voidReasonstring | nullno—
voidedAtstring (date-time) | nullno—

Essence.Payment.Billing.Application.DTOs.GroupPremiumPostingResultDto

PropertyTypeRequiredDescription
accrualsEssence.Payment.Billing.Application.DTOs.GroupPremiumAccrualDto[] | nullno—
postedinteger (int32)no—
postingReferencestring | nullno—
revisedinteger (int32)no—
unchangedinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.GroupPremiumSchemeLedgerDto

PropertyTypeRequiredDescription
accrualsEssence.Payment.Billing.Application.DTOs.GroupPremiumAccrualDto[] | nullno—
accruedCountinteger (int32)no—
accruedTotalMinorinteger (int64)no—
currencystring | nullno—
fromstring | nullno—
schemeIdstring | nullno—
stopsEssence.Payment.Billing.Application.DTOs.GroupPremiumStopDto[] | nullno—
tostring | nullno—
voidedCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.GroupPremiumStopDto

PropertyTypeRequiredDescription
effectiveFromstring | nullno—
memberRefstring | nullno—
schemeIdstring | nullno—
stoppedAtstring (date-time)no—
voidedAccrualsEssence.Payment.Billing.Application.DTOs.GroupPremiumAccrualDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.GroupSchemeAggregationResultDto

PropertyTypeRequiredDescription
billingModelstring | nullno—
chargedMinorinteger (int64)no—
creditNoteIdstring (uuid) | nullno—
creditNoteNumberstring | nullno—
creditedMinorinteger (int64)no—
currencystring | nullno—
invoiceIdstring (uuid) | nullno—
invoiceNumberstring | nullno—
linesEssence.Payment.Billing.Application.DTOs.GroupSchemeInvoicedLineDto[] | nullno—
memberCountinteger (int32)no—
organizationIdstring (uuid)no—
runReferencestring | nullno—
schemeIdstring | nullno—

Essence.Payment.Billing.Application.DTOs.GroupSchemeBillingConfigurationDto

PropertyTypeRequiredDescription
billingContactUserIdstring (uuid) | nullno—
billingModelstring | nullno—
configuredAtstring (date-time)no—
invoicingPartystring | nullno—
organizationIdstring (uuid)no—
paymentTermsDaysinteger (int32)no—
schemeIdstring | nullno—

Essence.Payment.Billing.Application.DTOs.GroupSchemeBillingLedgerDto

PropertyTypeRequiredDescription
billedMinorinteger (int64)no—
currencystring | nullno—
invoicingPartystring | nullno—
linesEssence.Payment.Billing.Application.DTOs.GroupSchemeInvoicedLineDto[] | nullno—
organizationIdstring (uuid)no—
pendingMinorinteger (int64)no—
schemeIdstring | nullno—

Essence.Payment.Billing.Application.DTOs.GroupSchemeInvoicedLineDto

PropertyTypeRequiredDescription
accrualIdstring (uuid)no—
accrualRevisioninteger (int32)no—
amountMinorinteger (int64)no—
currencystring | nullno—
invoiceIdstring (uuid)no—
invoiceNumberstring | nullno—
memberRefstring | nullno—
periodFromstring | nullno—
periodTostring | nullno—

Essence.Payment.Billing.Application.DTOs.HeldLicenceDto

PropertyTypeRequiredDescription
licenceFamilystring | nullno—
licenceTierinteger (int32) | nullno—
skuCodestring | nullno—
sponsoredbooleanno—
sponsoredUntilstring (date-time) | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—
termCommitmentEndUtcstring (date-time) | nullno—

Essence.Payment.Billing.Application.DTOs.HeldSandboxLicenceDto

PropertyTypeRequiredDescription
createdAtstring (date-time)no—
currentPeriodEndstring (date-time)no—
licenceStatusstring | nullno—
reusablebooleanno—
skuCodestring | nullno—
sponsoredbooleanno—
sponsoredUntilstring (date-time) | nullno—
sponsorshipPurposestring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.InstalmentAttemptDto

PropertyTypeRequiredDescription
attemptNumberinteger (int32)no—
attemptedAtstring (date-time)no—
failureCodestring | nullno—
outcomestring | nullno—
paymentReferencestring | nullno—

Essence.Payment.Billing.Application.DTOs.InvoiceDto

PropertyTypeRequiredDescription
blobReferencestring | nullno—
createdAtstring (date-time)no—
dueDatestring (date-time)no—
idstring (uuid)no—
invoiceNumberstring | nullno—
lineItemsEssence.Payment.Billing.Application.DTOs.InvoiceLineItemDto[] | nullno—
metadatamap<string, string> | nullno—
organizationIdstring (uuid) | nullno—
paidDatestring (date-time) | nullno—
statusstring | nullno—
subscriptionIdstring (uuid) | nullno—
subtotalEssence.Payment.Billing.Application.DTOs.MoneyDtono—
taxAmountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
totalAmountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
typestring | nullno—
updatedAtstring (date-time)no—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.InvoiceLineItemDto

PropertyTypeRequiredDescription
amountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
createdAtstring (date-time)no—
descriptionstring | nullno—
idstring (uuid)no—
invoiceIdstring (uuid)no—
metadatamap<string, string> | nullno—
periodEndstring (date-time) | nullno—
periodStartstring (date-time) | nullno—
quantitynumber (double)no—
taxAmountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
taxRatenumber (double)no—
unitPriceEssence.Payment.Billing.Application.DTOs.MoneyDtono—
updatedAtstring (date-time)no—

Essence.Payment.Billing.Application.DTOs.InvoluntaryChurnReportDto

PropertyTypeRequiredDescription
affectedEntitlementsCountinteger (int32)no—
averageDegradationAgeHoursnumber (double)no—
currentlyDegradedCountinteger (int32)no—
degradedSubscriptionsEssence.Payment.Billing.Application.DTOs.DegradedSubscriptionLineDto[] | nullno—
involuntarilyCanceledCountinteger (int32)no—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
reasonstring | nullno—
totalPaymentFailuresinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.LawfulBasisRecordDto

PropertyTypeRequiredDescription
attestedbooleanno—
attestedAtstring (date-time)no—
attestedBystring | nullno—
authoriserstring | nullno—
basisstring | nullno—

Essence.Payment.Billing.Application.DTOs.LevyAccountDto

PropertyTypeRequiredDescription
allocationsEssence.Payment.Billing.Application.DTOs.LevyAllocationDto[] | nullno—
availablePenceinteger (int64)no—
committedPenceinteger (int64)no—
entriesEssence.Payment.Billing.Application.DTOs.LevyLedgerEntryDto[] | nullno—
lastReconciledAtIsostring | nullno—
organizationIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.LevyAllocationDto

PropertyTypeRequiredDescription
allocationIdstring | nullno—
coInvestmentPercentinteger (int32)no—
committedPenceinteger (int64)no—
createdAtIsostring | nullno—
drawnPenceinteger (int64)no—
fundingBandCapPenceinteger (int64)no—
placesinteger (int32)no—
providerEssence.Payment.Billing.Application.DTOs.LevyProviderDtono—
standardIdstring | nullno—
standardTitlestring | nullno—

Essence.Payment.Billing.Application.DTOs.LevyLedgerEntryDto

PropertyTypeRequiredDescription
allocationIdstring | nullno—
amountPenceinteger (int64)no—
apprenticeshipIdstring | nullno—
descriptionstring | nullno—
entryIdstring | nullno—
expiresAtIsostring | nullno—
kindstring | nullno—
occurredAtIsostring | nullno—

Essence.Payment.Billing.Application.DTOs.LevyProviderDto

PropertyTypeRequiredDescription
namestring | nullno—
organizationIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.MarketplacePayoutSettlementDto

PropertyTypeRequiredDescription
amountnumber (double)no—
currencystring | nullno—
gatewayPayoutIdstring | nullno—
linesEssence.Payment.Billing.Application.DTOs.MarketplacePayoutSettlementLineDto[] | nullno—
netAmountnumber (double)no—
payoutDatestring (date-time) | nullno—
payoutIdstring (uuid)no—
reconcilesbooleanno—
settledTotalnumber (double)no—
taxWithheldnumber (double)no—
transactionIds(string (uuid))[] | nullno—
unattributedLineCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.MarketplacePayoutSettlementLineDto

PropertyTypeRequiredDescription
amountnumber (double)no—
commissionIdstring (uuid)no—
isClawbackbooleanno—
productTypestring | nullno—
transactionAmountnumber (double)no—
transactionDatestring (date-time)no—
transactionIdstring (uuid) | nullno—

Essence.Payment.Billing.Application.DTOs.MarketplacePayoutSettlementsDto

PropertyTypeRequiredDescription
fromstring (date-time)no—
partnerIdstring (uuid)no—
payoutsEssence.Payment.Billing.Application.DTOs.MarketplacePayoutSettlementDto[] | nullno—
tostring (date-time)no—

Essence.Payment.Billing.Application.DTOs.MemberBillingRehomeDto

PropertyTypeRequiredDescription
alreadyAppliedbooleanno—
billingRehomedbooleanno—
currencystring | nullno—
newSelfPaySubscriptionIdstring (uuid)no—
outcomestring | nullno—
prorationCreditMinorUnitsinteger (int64)no—
prorationCreditedbooleanno—
rehomeIdstring (uuid)no—
rehomeRequestIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.MergeDispositionDto

PropertyTypeRequiredDescription
combinedEntitlementsstring[] | nullno—
currencystring | nullno—
mergeSessionIdstring (uuid)no—
noDoubleChargebooleanno—
orgSeatMemberbooleanno—
refundMinorUnitsinteger (int64)no—
retiredPlanstring | nullno—
settledbooleanno—
survivorAccountIdstring (uuid)no—
survivorPlanstring | nullno—

Essence.Payment.Billing.Application.DTOs.MeteredSkuRevenueReportDto

PropertyTypeRequiredDescription
baseCurrencystring | nullno—
periodstring | nullno—
rowsEssence.Payment.Billing.Application.DTOs.MeteredSkuRevenueRowDto[] | nullno—
unattributedBilledUnitsinteger (int64)no—
unattributedRevenuenumber (double)no—
unconvertibleLineCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.MeteredSkuRevenueRowDto

PropertyTypeRequiredDescription
billedUnitsinteger (int64)no—
displayNamestring | nullno—
revenuenumber (double)no—
skuCodestring | nullno—

Essence.Payment.Billing.Application.DTOs.MetricUsageSummary

PropertyTypeRequiredDescription
billableUsagenumber (double)no—
estimatedCostnumber (double)no—
firstUsageTimestampstring (date-time) | nullno—
includedQuantitynumber (double)no—
isOveragebooleanno—
isUnlimitedbooleanno—
latestUsageTimestampstring (date-time) | nullno—
limitnumber (double)no—
metricTypeEssence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricTypeno—
overageAmountnumber (double)no—
recordCountinteger (int32)no—
remainingQuotanumber (double)no—
totalUsagenumber (double)no—
unitstring | nullno—
usagePercentagenumber (double)no—

Essence.Payment.Billing.Application.DTOs.ModuleAddOnPricingDto

PropertyTypeRequiredDescription
cadencestring | nullno—
currencystring | nullno—
labelstring | nullno—
pricenumber (double)no—
skustring | nullno—

Essence.Payment.Billing.Application.DTOs.ModuleCancellationTermsDto

PropertyTypeRequiredDescription
entitlementEndsAtstring (date-time) | nullno—
noticeDaysinteger (int32)no—
policystring | nullno—
refundsUnusedPeriodbooleanno—
summarystring | nullno—

Essence.Payment.Billing.Application.DTOs.ModuleMeteredItemPricingDto

PropertyTypeRequiredDescription
currencystring | nullno—
labelstring | nullno—
pricenumber (double)no—
skustring | nullno—

Essence.Payment.Billing.Application.DTOs.ModulePlanFeatureDto

PropertyTypeRequiredDescription
featureCodestring | nullno—
quotainteger (int32) | nullno—

Essence.Payment.Billing.Application.DTOs.ModulePlanPricingDto

PropertyTypeRequiredDescription
basePricenumber (double)no—
cadencestring | nullno—
currencystring | nullno—
featuresEssence.Payment.Billing.Application.DTOs.ModulePlanFeatureDto[] | nullno—
namestring | nullno—
skustring | nullno—
tierstring | nullno—

Essence.Payment.Billing.Application.DTOs.ModulePricingDto

PropertyTypeRequiredDescription
addOnsEssence.Payment.Billing.Application.DTOs.ModuleAddOnPricingDto[] | nullno—
meteredItemsEssence.Payment.Billing.Application.DTOs.ModuleMeteredItemPricingDto[] | nullno—
moduleIdstring | nullno—
plansEssence.Payment.Billing.Application.DTOs.ModulePlanPricingDto[] | nullno—
pricingPublishedbooleanno—
skuProductTokenstring | nullno—

Essence.Payment.Billing.Application.DTOs.ModuleProrationLineDto

PropertyTypeRequiredDescription
basisDaysinteger (int32)no—
descriptionstring | nullno—
isProratedbooleanno—
proratedDaysinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.ModuleSubscriptionQuoteDto

PropertyTypeRequiredDescription
alignedToOrgPeriodbooleanno—
billingCyclestring | nullno—
cancellationTermsEssence.Payment.Billing.Application.DTOs.ModuleCancellationTermsDtono—
currencystring | nullno—
firstChargeAmountnumber (double)no—
firstPeriodStartstring (date-time)no—
isBaseModulebooleanno—
isRecurringbooleanno—
nextBillingDatestring (date-time) | nullno—
offeringIdstring (uuid)no—
offeringNamestring | nullno—
prorationEssence.Payment.Billing.Application.DTOs.ModuleProrationLineDtono—
recurringTotalnumber (double)no—
seatCountinteger (int32)no—
unitPricenumber (double)no—

Essence.Payment.Billing.Application.DTOs.MoneyDto

PropertyTypeRequiredDescription
amountnumber (double)no—
currencystring | nullno—

Essence.Payment.Billing.Application.DTOs.MoneyFigureDto

PropertyTypeRequiredDescription
amountnumber (double) | nullno—
availablebooleanno—
currencystring | nullno—
unavailableReasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.MonthlyRevenueDto

PropertyTypeRequiredDescription
commissionEssence.Payment.Billing.Application.DTOs.MoneyDtono—
monthstring | nullno—
revenueEssence.Payment.Billing.Application.DTOs.MoneyDtono—
subscriptionCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.MrrBySourceDto

PropertyTypeRequiredDescription
mrrnumber (double)no—
sourcestring | nullno—

Essence.Payment.Billing.Application.DTOs.MrrByStreamLineDto

PropertyTypeRequiredDescription
arrnumber (double)no—
contributingRecordsinteger (int32)no—
descriptionstring | nullno—
mrrnumber (double)no—
streamstring | nullno—

Essence.Payment.Billing.Application.DTOs.MrrByStreamReportDto

PropertyTypeRequiredDescription
currencystring | nullno—
reportedAtstring (date-time)no—
streamsEssence.Payment.Billing.Application.DTOs.MrrByStreamLineDto[] | nullno—
totalArrnumber (double)no—
totalMrrnumber (double)no—

Essence.Payment.Billing.Application.DTOs.MrrByTierDto

PropertyTypeRequiredDescription
mrrnumber (double)no—
subscriptionCountinteger (int32)no—
tierstring | nullno—

Essence.Payment.Billing.Application.DTOs.MrrHistoryDto

PropertyTypeRequiredDescription
currencystring | nullno—
pointsEssence.Payment.Billing.Application.DTOs.MrrHistoryPointDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.MrrHistoryPointDto

PropertyTypeRequiredDescription
arrnumber (double)no—
basisstring | nullno—
labelstring | nullno—
monthstring | nullno—
mrrnumber (double)no—

Essence.Payment.Billing.Application.DTOs.MrrReportDto

PropertyTypeRequiredDescription
bySourceEssence.Payment.Billing.Application.DTOs.MrrBySourceDto[] | nullno—
byTierEssence.Payment.Billing.Application.DTOs.MrrByTierDto[] | nullno—
exclusionsEssence.Payment.Billing.Application.DTOs.RevenueExclusionDisclosureDtono—
reportedAtstring (date-time)no—
totalArrnumber (double)no—
totalMrrnumber (double)no—

Essence.Payment.Billing.Application.DTOs.MyFamilyMembershipDto

PropertyTypeRequiredDescription
pendingInvitesEssence.Payment.Billing.Application.DTOs.FamilyInviteForUserDto[] | nullno—
pendingInvitesWithheldstring | nullno—
rosterEssence.Payment.Billing.Application.DTOs.FamilyRosterForUserDtono—

Essence.Payment.Billing.Application.DTOs.NetTermsRefundDto

PropertyTypeRequiredDescription
alreadyRefundedbooleanno—
amountnumber (double)no—
authorizationstring | nullno—
creditNoteIdstring (uuid)no—
creditNoteNumberstring | nullno—
currencystring | nullno—
dispositionstring | nullno—
invoiceIdstring (uuid)no—
ledgerCreditIdstring (uuid)no—
ledgerCreditStatusstring | nullno—
organizationIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.OrganisationCommercialProfileDto

PropertyTypeRequiredDescription
channelPartnerIdstring (uuid) | nullno—
dealRegistrationIdstring (uuid) | nullno—
effectivePaymentTermsDaysinteger (int32)no—
hostingSovereignInstanceIdstring (uuid) | nullno—
invoiceCollectionApprovalReasonstring | nullno—
invoiceCollectionApprovedbooleanno—
invoiceCollectionApprovedAtstring (date-time) | nullno—
invoiceCollectionApprovedBystring | nullno—
invoiceCollectionRevokedAtstring (date-time) | nullno—
invoiceCollectionRevokedBystring | nullno—
organizationDisplayNamestring | nullno—
organizationIdstring (uuid)no—
payerDisplayNamestring | nullno—
payerOrganizationIdstring (uuid) | nullno—
paymentTermsDaysOverrideinteger (int32) | nullno—
paymentTermsOverriddenAtstring (date-time) | nullno—
paymentTermsOverriddenBystring | nullno—
paymentTermsOverrideReasonstring | nullno—
routestring | nullno—
setAtstring (date-time)no—
setBystring | nullno—

Essence.Payment.Billing.Application.DTOs.OrganisationLicenceContextDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
commercialRoutestring | nullno—
heldEssence.Payment.Billing.Application.DTOs.HeldLicenceDto[] | nullno—
highestHeldInstanceTierinteger (int32) | nullno—
organizationIdstring (uuid)no—
partnerStandingstring | nullno—

Essence.Payment.Billing.Application.DTOs.OrganizationBillingDetailsDto

PropertyTypeRequiredDescription
addressLine1string | nullno—
addressLine2string | nullno—
citystring | nullno—
countryCodestring | nullno—
organizationIdstring (uuid)no—
postalCodestring | nullno—
recordedbooleanno—
stateOrRegionstring | nullno—
taxIdstring | nullno—
updatedAtstring (date-time) | nullno—

Essence.Payment.Billing.Application.DTOs.OrganizationWholesaleRateDto

PropertyTypeRequiredDescription
currencyCodestring | nullno—
isAuthoritativebooleanno—
moduleIdstring | nullno—
organizationIdstring (uuid)no—
perSeatPricenumber (double) | nullno—

Essence.Payment.Billing.Application.DTOs.OrgConsumptionMeterDto

PropertyTypeRequiredDescription
includednumber (double) | nullno—
metricstring | nullno—
metricLabelstring | nullno—
unitLabelstring | nullno—
usednumber (double)no—
warningThresholdnumber (double) | nullno—

Essence.Payment.Billing.Application.DTOs.OrgConsumptionSnapshotDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
currencystring | nullno—
metersEssence.Payment.Billing.Application.DTOs.OrgConsumptionMeterDto[] | nullno—
projectedMonthlyCostnumber (double) | nullno—
projectedMonthlyCostUnavailableReasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgCreditBalanceDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
balancenumber (double)no—
currencystring | nullno—
earnedThisMonthnumber (double)no—
expiringWithin90Daysnumber (double)no—

Essence.Payment.Billing.Application.DTOs.OrgDunningBlastRadiusDto

PropertyTypeRequiredDescription
billedSeatsinteger (int32) | nullno—
modulesEssence.Payment.Billing.Application.DTOs.OrgDunningModuleDto[] | nullno—
seatsProvenancestring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgDunningModuleDto

PropertyTypeRequiredDescription
degradesAtUtcstring (date-time) | nullno—
moduleSubscriptionIdstring (uuid)no—
namestring | nullno—
statestring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgDunningPositionDto

PropertyTypeRequiredDescription
asOfUtcstring (date-time)no—
blastRadiusEssence.Payment.Billing.Application.DTOs.OrgDunningBlastRadiusDtono—
pastDueEssence.Payment.Billing.Application.DTOs.OrgDunningSubscriptionDto[] | nullno—
restorationEssence.Payment.Billing.Application.DTOs.OrgDunningRestorationDtono—
statestring | nullno—
timelineEssence.Payment.Billing.Application.DTOs.OrgDunningTimelineEntryDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.OrgDunningRestorationDto

PropertyTypeRequiredDescription
modulesReEntitledinteger (int32)no—
notYetRestoredEssence.Payment.Billing.Application.DTOs.OrgDunningUnrestoredDto[] | nullno—
restoredAtUtcstring (date-time)no—
subscriptionsRestoredinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.OrgDunningRetryDto

PropertyTypeRequiredDescription
attemptinteger (int32)no—
dayOffsetinteger (int32)no—
scheduledUtcstring (date-time)no—
statestring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgDunningSubscriptionDto

PropertyTypeRequiredDescription
amountDuenumber (double) | nullno—
billedThroughDisplayNamestring | nullno—
consequencestring | nullno—
consequenceAtUtcstring (date-time) | nullno—
currencystring | nullno—
failureCountinteger (int32)no—
gracePeriodEndsUtcstring (date-time)no—
invoiceIdstring (uuid) | nullno—
invoiceNumberstring | nullno—
pastDueSinceUtcstring (date-time)no—
planNamestring | nullno—
retryScheduleEssence.Payment.Billing.Application.DTOs.OrgDunningRetryDto[] | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.OrgDunningTimelineEntryDto

PropertyTypeRequiredDescription
atUtcstring (date-time)no—
detailstring | nullno—
kindstring | nullno—
labelstring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.OrgDunningUnrestoredDto

PropertyTypeRequiredDescription
idstring | nullno—
kindstring | nullno—
namestring | nullno—
reasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgHeldSkuDto

PropertyTypeRequiredDescription
familystring | nullno—
namestring | nullno—
skuIdstring | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—
subscriptionStatusstring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgHeldSkuSetDto

PropertyTypeRequiredDescription
availablebooleanno—
heldEssence.Payment.Billing.Application.DTOs.OrgHeldSkuDto[] | nullno—
unavailableReasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgInvoiceChainContextDto

PropertyTypeRequiredDescription
invoicingPartyNamestring | nullno—
invoicingPartyOrgIdstring (uuid)no—
invoicingPartyRolestring | nullno—
relationshipManagerEmailstring | nullno—
relationshipManagerNamestring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgInvoiceDto

PropertyTypeRequiredDescription
amountnumber (double) | nullno—
currencystring | nullno—
invoiceIdstring (uuid)no—
numberstring | nullno—
raisedAtstring (date-time)no—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgInvoiceListDto

PropertyTypeRequiredDescription
chainContextEssence.Payment.Billing.Application.DTOs.OrgInvoiceChainContextDtono—
hasMorebooleanno—
invoicesEssence.Payment.Billing.Application.DTOs.OrgInvoiceDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.OrgModuleLineDto

PropertyTypeRequiredDescription
cancelAtPeriodEndbooleanno—
cancelBlockedReasonstring | nullno—
cancelEffectiveAtstring (date-time) | nullno—
cancelableAtPeriodEndbooleanno—
entitlementEndsAtstring (date-time) | nullno—
isBaseModulebooleanno—
namestring | nullno—
offeringIdstring (uuid)no—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgSeatRegisterDto

PropertyTypeRequiredDescription
assignedSeatsinteger (int32) | nullno—
enrolledbooleanno—
enrolledAtstring (date-time) | nullno—
organizationIdstring (uuid)no—
registeredSeatsinteger (int32) | nullno—
seatsEssence.Payment.Billing.Application.DTOs.RegisteredSeatDto[] | nullno—
unavailableReasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgSubscriptionLineDto

PropertyTypeRequiredDescription
commercialRoutestring | nullno—
endsAtstring (date-time) | nullno—
isBaseSubscriptionbooleanno—
licenceFamilystring | nullno—
licenceTierinteger (int32) | nullno—
licensedSeatsinteger (int32) | nullno—
minimumSeatsinteger (int32) | nullno—
minimumTermMonthsinteger (int32) | nullno—
payerOrganizationIdstring (uuid) | nullno—
periodAmountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
planNamestring | nullno—
primarySkuCodestring | nullno—
renewalDatestring (date-time) | nullno—
skusEssence.Payment.Billing.Application.DTOs.OrgHeldSkuDto[] | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—
termCommitmentEndUtcstring (date-time) | nullno—
tierstring | nullno—

Essence.Payment.Billing.Application.DTOs.OrgSubscriptionSummaryDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
billedThroughDisplayNamestring | nullno—
commercialRoutestring | nullno—
entitlementActivebooleanno—
modulesEssence.Payment.Billing.Application.DTOs.OrgModuleLineDto[] | nullno—
paymentTermsDaysinteger (int32) | nullno—
pricesHiddenbooleanno—
privilegesEssence.Payment.Billing.Application.DTOs.PlanPrivilegeDto[] | nullno—
privilegesFromPlanNamestring | nullno—
seatsAssignedEssence.Payment.Billing.Application.DTOs.SeatFigureDtono—
seatsBilledEssence.Payment.Billing.Application.DTOs.SeatFigureDtono—
skusEssence.Payment.Billing.Application.DTOs.OrgHeldSkuSetDtono—
subscriptionsEssence.Payment.Billing.Application.DTOs.OrgSubscriptionLineDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.OverageDetectionResultDto

PropertyTypeRequiredDescription
hasOveragesbooleanno—
hasWarningsbooleanno—
overagesEssence.Payment.Billing.Application.DTOs.OverageDto[] | nullno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
subscriptionIdstring (uuid)no—
totalIssuesinteger (int32)no—
userIdstring (uuid)no—
warningsEssence.Payment.Billing.Application.DTOs.UsageWarningDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.OverageDto

PropertyTypeRequiredDescription
currentUsagenumber (double)no—
estimatedCostnumber (double)no—
limitnumber (double)no—
metricTypeEssence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricTypeno—
overageAmountnumber (double)no—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
unitstring | nullno—

Essence.Payment.Billing.Application.DTOs.PackageVersionMigrationDeltaDto

PropertyTypeRequiredDescription
appliedAtstring (date-time) | nullno—
appliedDocumentIdstring (uuid) | nullno—
appliedDocumentReferencestring | nullno—
chargeAmountnumber (double)no—
createdAtstring (date-time) | nullno—
creditAmountnumber (double)no—
currencyCodestring | nullno—
currentPeriodEndstring (date-time)no—
currentPeriodStartstring (date-time)no—
currentVersionPricenumber (double)no—
fromVersionstring | nullno—
idstring (uuid) | nullno—
lineTypestring | nullno—
migrationEffectiveAtstring (date-time)no—
netAmountnumber (double)no—
newVersionPricenumber (double)no—
organizationIdstring (uuid)no—
packageCodestring | nullno—
remainingDaysinteger (int32)no—
statusstring | nullno—
subscriberUserIdstring (uuid)no—
subscriptionIdstring (uuid)no—
termDaysinteger (int32)no—
toVersionstring | nullno—

Essence.Payment.Billing.Application.DTOs.PartnerAnalyticsDto

PropertyTypeRequiredDescription
activeSubscriptionsinteger (int32)no—
averageCustomerLifetimeValueEssence.Payment.Billing.Application.DTOs.MoneyDtono—
averageTransactionValueEssence.Payment.Billing.Application.DTOs.MoneyDtono—
canceledSubscriptionsinteger (int32)no—
commissionRatenumber (double)no—
failedPaymentsinteger (int32)no—
monthlyRevenueEssence.Payment.Billing.Application.DTOs.MonthlyRevenueDto[] | nullno—
partnerIdstring (uuid)no—
partnerNamestring | nullno—
paymentSuccessRatenumber (double)no—
pendingCommissionEssence.Payment.Billing.Application.DTOs.MoneyDtono—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
revenueGrowthRatenumber (double) | nullno—
successfulPaymentsinteger (int32)no—
topPlansEssence.Payment.Billing.Application.DTOs.PlanPerformanceDto[] | nullno—
totalCommissionEssence.Payment.Billing.Application.DTOs.MoneyDtono—
totalCommissionPaidOutEssence.Payment.Billing.Application.DTOs.MoneyDtono—
totalPaymentsinteger (int32)no—
totalRevenueEssence.Payment.Billing.Application.DTOs.MoneyDtono—
totalSubscriptionsinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.PartnerCommissionLineQueriesDto

PropertyTypeRequiredDescription
itemsEssence.Payment.Billing.Application.DTOs.CommissionLineQueryDto[] | nullno—
openCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.PartnerDashboardSummaryDto

PropertyTypeRequiredDescription
activeSubscriptionCountinteger (int32)no—
commissionRatenumber (double)no—
currentMonthCommissionEssence.Payment.Billing.Application.DTOs.MoneyDtono—
currentMonthRevenueEssence.Payment.Billing.Application.DTOs.MoneyDtono—
lifetimeCommissionEssence.Payment.Billing.Application.DTOs.MoneyDtono—
lifetimeRevenueEssence.Payment.Billing.Application.DTOs.MoneyDtono—
partnerIdstring (uuid)no—
partnerNamestring | nullno—
paymentSuccessRatenumber (double)no—
statusstring | nullno—
totalCustomerCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.PartnerPayoutDestinationDto

PropertyTypeRequiredDescription
accountReferencestring | nullno—
currencystring | nullno—
methodstring | nullno—
minimumPayoutAmountnumber (double)no—
onFilebooleanno—
partnerStatusstring | nullno—
readyToBePaidbooleanno—

Essence.Payment.Billing.Application.DTOs.PartnerPayoutSettingsDto

PropertyTypeRequiredDescription
destinationEssence.Payment.Billing.Application.DTOs.PartnerPayoutDestinationDtono—
partnerIdstring (uuid)no—
withholdingEssence.Payment.Billing.Application.DTOs.PartnerWithholdingDeclarationDtono—
withholdingCalculationstring | nullno—

Essence.Payment.Billing.Application.DTOs.PartnerWithholdingDeclarationDto

PropertyTypeRequiredDescription
claimsTreatyBenefitsbooleanno—
declaredAtstring (date-time)no—
entityTypestring | nullno—
idstring (uuid)no—
revisioninteger (int32)no—
taxResidenceCountrystring | nullno—
treatyArticlestring | nullno—
treatyRatePercentnumber (double) | nullno—

Essence.Payment.Billing.Application.DTOs.PaymentDto

PropertyTypeRequiredDescription
amountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
createdAtstring (date-time)no—
failureReasonstring | nullno—
gatewayPaymentIdstring | nullno—
gatewayResponsestring | nullno—
idstring (uuid)no—
invoiceIdstring (uuid) | nullno—
metadatamap<string, string> | nullno—
paymentGatewaystring | nullno—
paymentMethodstring | nullno—
processedAtstring (date-time) | nullno—
retryCountinteger (int32)no—
statusstring | nullno—
updatedAtstring (date-time)no—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.PaymentIntentDto

PropertyTypeRequiredDescription
amountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
clientSecretstring | nullno—
createdAtstring (date-time)no—
customerIdstring | nullno—
declineCodestring | nullno—
errorCodestring | nullno—
errorMessagestring | nullno—
invoiceIdstring (uuid) | nullno—
invoiceStatusstring | nullno—
isTestModebooleanno—
metadatamap<string, string | null> | nullno—
nextActionstring | nullno—
outcomestring | nullno—
paymentIdstring (uuid) | nullno—
paymentIntentIdstring | nullno—
paymentMethodIdstring | nullno—
requiresActionbooleanno—
statusstring | nullno—
threeDSecureUrlstring | nullno—

Essence.Payment.Billing.Application.DTOs.PaymentMethodDto

PropertyTypeRequiredDescription
brandstring | nullno—
createdAtstring (date-time)no—
expiryMonthinteger (int32) | nullno—
expiryYearinteger (int32) | nullno—
gatewaystring | nullno—
idstring (uuid)no—
isDefaultbooleanno—
lastFourstring | nullno—
overdueSettlementstring | nullno—
typestring | nullno—

Essence.Payment.Billing.Application.DTOs.PaymentMethodSetupDto

PropertyTypeRequiredDescription
clientSdkUrlstring | nullno—
clientSecretstring | nullno—
customerIdstring | nullno—
environmentstring | nullno—
gatewaystring | nullno—
paymentMethodTypesstring[] | nullno—
publishableKeystring | nullno—
setupIntentIdstring | nullno—

Essence.Payment.Billing.Application.DTOs.PaymentPageScriptDto

PropertyTypeRequiredDescription
authorisingChangeRecordstring | nullno—
businessJustificationstring | nullno—
createdAtstring (date-time)no—
idstring (uuid)no—
lastVerifiedAtstring (date-time) | nullno—
scriptUrlstring | nullno—
statusstring | nullno—
subresourceIntegrityHashstring | nullno—
vendorstring | nullno—

Essence.Payment.Billing.Application.DTOs.PaymentPageScriptRegisterDto

PropertyTypeRequiredDescription
environmentKeystring | nullno—
historyEssence.Payment.Billing.Application.DTOs.PaymentPageScriptStatusChangeDto[] | nullno—
idstring (uuid)no—
scriptsEssence.Payment.Billing.Application.DTOs.PaymentPageScriptDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.PaymentPageScriptStatusChangeDto

PropertyTypeRequiredDescription
changeRecordstring | nullno—
changedAtstring (date-time)no—
changedBystring | nullno—
idstring (uuid)no—
newStatusstring | nullno—
previousStatusstring | nullno—
scriptIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.PayoutDto

PropertyTypeRequiredDescription
amountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
approvalValueGbpnumber (double) | nullno—
approvedAtstring (date-time) | nullno—
approvedBystring | nullno—
awaitingApprovalbooleanno—
batchIdstring | nullno—
createdAtstring (date-time)no—
failureCountinteger (int32)no—
failureReasonstring | nullno—
firstFailedAtstring (date-time) | nullno—
gatewayPayoutIdstring | nullno—
idstring (uuid)no—
itemsEssence.Payment.Billing.Application.DTOs.PayoutItemDto[] | nullno—
metadatamap<string, string> | nullno—
netAmountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
nextRetryAtstring (date-time) | nullno—
partnerIdstring (uuid)no—
payoutDatestring (date-time) | nullno—
payoutMethodstring | nullno—
requiresApprovalbooleanno—
statementEssence.Payment.Billing.Application.DTOs.PayoutStatementDtono—
statusstring | nullno—
taxWithheldEssence.Payment.Billing.Application.DTOs.MoneyDtono—
updatedAtstring (date-time)no—

Essence.Payment.Billing.Application.DTOs.PayoutItemDto

PropertyTypeRequiredDescription
baseAmountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
commissionAmountEssence.Payment.Billing.Application.DTOs.MoneyDtono—
commissionRatenumber (double)no—
createdAtstring (date-time)no—
idstring (uuid)no—
metadatamap<string, string> | nullno—
payoutIdstring (uuid)no—
transactionIdstring (uuid)no—
transactionTypestring | nullno—
updatedAtstring (date-time)no—

Essence.Payment.Billing.Application.DTOs.PayoutManualReissueTaskDto

PropertyTypeRequiredDescription
amountnumber (double)no—
currencystring | nullno—
failureReasonstring | nullno—
idstring (uuid)no—
manualReferencestring | nullno—
partnerIdstring (uuid)no—
payoutIdstring (uuid)no—
raisedAtstring (date-time)no—
resolvedAtstring (date-time) | nullno—
retriesAttemptedinteger (int32)no—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.PayoutStatementDto

PropertyTypeRequiredDescription
archivedAtstring (date-time) | nullno—
availablebooleanno—

Essence.Payment.Billing.Application.DTOs.PayoutStreamLineDto

PropertyTypeRequiredDescription
commissionCountinteger (int32)no—
commissionsTotalnumber (double)no—
gapsstring[] | nullno—
kindstring | nullno—
payoutCountinteger (int32)no—
payoutsTotalnumber (double)no—
pendingTotalnumber (double)no—
taxWithheldTotalnumber (double)no—

Essence.Payment.Billing.Application.DTOs.PayoutStreamReconciliationDto

PropertyTypeRequiredDescription
channelEssence.Payment.Billing.Application.DTOs.PayoutStreamLineDtono—
gapsstring[] | nullno—
isBalancedbooleanno—
marketplaceEssence.Payment.Billing.Application.DTOs.PayoutStreamLineDtono—
partnerIdstring (uuid)no—
periodEndstring (date-time)no—
periodStartstring (date-time)no—

Essence.Payment.Billing.Application.DTOs.PlanPerformanceDto

PropertyTypeRequiredDescription
commissionEssence.Payment.Billing.Application.DTOs.MoneyDtono—
planIdstring (uuid)no—
planNamestring | nullno—
revenueEssence.Payment.Billing.Application.DTOs.MoneyDtono—
subscriptionCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.PlanPrivilegeDto

PropertyTypeRequiredDescription
codestring | nullno—
descriptionstring | nullno—
groupstring | nullno—
labelstring | nullno—

Essence.Payment.Billing.Application.DTOs.PremiumFinanceInstalmentDto

PropertyTypeRequiredDescription
amountMinorinteger (int64)no—
amountPaidMinorinteger (int64)no—
attemptsEssence.Payment.Billing.Application.DTOs.InstalmentAttemptDto[] | nullno—
dueOnstring | nullno—
lastFailureCodestring | nullno—
sequenceinteger (int32)no—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.PremiumFinancePlanDto

PropertyTypeRequiredDescription
agreementIdstring | nullno—
arrearsEpisodesEssence.Payment.Billing.Application.DTOs.ArrearsEpisodeDto[] | nullno—
arrearsPaymentsEssence.Payment.Billing.Application.DTOs.ArrearsPaymentDto[] | nullno—
asOfstring (date-time)no—
creditAgreementReferencestring | nullno—
currencystring | nullno—
financedAmountMinorinteger (int64)no—
instalmentsEssence.Payment.Billing.Application.DTOs.PremiumFinanceInstalmentDto[] | nullno—
insurerOrganizationIdstring (uuid)no—
mandateReferencestring | nullno—
outstandingArrearsMinorinteger (int64)no—
policyReferencestring | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.PremiumFinancePositionDto

PropertyTypeRequiredDescription
agreementIdstring | nullno—
arrearsEpisodeNumberinteger (int32) | nullno—
arrearsSincestring (date-time) | nullno—
asOfstring (date-time)no—
currencystring | nullno—
inArrearsbooleanno—
instalmentCountinteger (int32)no—
instalmentsCollectedinteger (int32)no—
instalmentsInArrearsinteger (int32)no—
nextInstalmentEssence.Payment.Billing.Application.DTOs.PremiumFinanceInstalmentDtono—
outstandingArrearsMinorinteger (int64)no—
planStatusstring | nullno—

Essence.Payment.Billing.Application.DTOs.PricingPlanDto

PropertyTypeRequiredDescription
additionalPrivilegesEssence.Payment.Billing.Application.DTOs.PlanPrivilegeDto[] | nullno—
audiencestring | nullno—
basePriceEssence.Payment.Billing.Application.DTOs.MoneyDtono—
billingPeriodEssence.Payment.Billing.Application.DTOs.BillingPeriodDtono—
billingUnitstring | nullno—
createdAtstring (date-time)no—
descriptionstring | nullno—
featuresmap<string, unspecified> | nullno—
idstring (uuid)no—
includesEverythingFromstring | nullno—
isActivebooleanno—
licenceFamilystring | nullno—
licenceTierinteger (int32) | nullno—
metadatamap<string, string> | nullno—
minimumSeatsinteger (int32) | nullno—
minimumTermMonthsinteger (int32) | nullno—
namestring | nullno—
privilegesEssence.Payment.Billing.Application.DTOs.PlanPrivilegeDto[] | nullno—
skuCodesstring[] | nullno—
tierstring | nullno—
trialDaysinteger (int32)no—
updatedAtstring (date-time)no—
versioninteger (int32)no—

Essence.Payment.Billing.Application.DTOs.ProRataInvoiceLineDto

PropertyTypeRequiredDescription
amountMinorinteger (int64)no—
descriptionstring | nullno—

Essence.Payment.Billing.Application.DTOs.PurchaseSandboxLicenceRequest

PropertyTypeRequiredDescription
convertsSponsoredSubscriptionIdstring (uuid) | nullno—
organizationIdstring (uuid) | nullno—
purchaseIdstring (uuid)no—
skuCodestring | nullno—

Essence.Payment.Billing.Application.DTOs.QuotaCheckRequestDto

PropertyTypeRequiredDescription
metricCodestring | nullno—
organisationIdstring | nullno—
organizationIdstring | nullno—
requestedUnitsnumber (double) | nullno—
skustring | nullno—
subjectIdstring | nullno—
subscriptionIdstring | nullno—
unitsnumber (double) | nullno—
usagenumber (double) | nullno—

Essence.Payment.Billing.Application.DTOs.QuotaCheckResponseDto

PropertyTypeRequiredDescription
allowedbooleanno—
limitinteger (int64) | nullno—
limitExactnumber (double) | nullno—
messagestring | nullno—
reasonstring | nullno—
reasonCodestring | nullno—
remainingnumber (double) | nullno—
requiredActionstring | nullno—
retryAfterSecondsinteger (int32) | nullno—
subscriptionIdstring (uuid) | nullno—
usedinteger (int64) | nullno—
usedExactnumber (double) | nullno—
withinLimitbooleanno—

Essence.Payment.Billing.Application.DTOs.QuotaInfoDto

PropertyTypeRequiredDescription
currentUsagenumber (double)no—
isNearLimitbooleanno—
isOverLimitbooleanno—
limitnumber (double)no—
metricTypeEssence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricTypeno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
remainingnumber (double)no—
subscriptionIdstring (uuid)no—
unitstring | nullno—
usagePercentagenumber (double)no—

Essence.Payment.Billing.Application.DTOs.QuotaLeaseRequestDto

PropertyTypeRequiredDescription
blockUnitsinteger (int32) | nullno—
idempotencyKeystring | nullno—
metricCodestring | nullno—
organisationIdstring | nullno—
organizationIdstring | nullno—
requestedUnitsnumber (double) | nullno—
skustring | nullno—
subjectIdstring | nullno—
subscriptionIdstring | nullno—
ttlSecondsinteger (int32) | nullno—
unitsnumber (double) | nullno—
usagenumber (double) | nullno—

Essence.Payment.Billing.Application.DTOs.QuotaLeaseResponseDto

PropertyTypeRequiredDescription
allowedbooleanno—
expiresAtstring (date-time) | nullno—
grantedUnitsinteger (int32)no—
idempotencyKeystring | nullno—
leaseIdstring (uuid) | nullno—
leaseKeystring | nullno—
limitinteger (int64) | nullno—
limitExactnumber (double) | nullno—
messagestring | nullno—
outstandingHeldnumber (double) | nullno—
overageUnitsnumber (double) | nullno—
reasonstring | nullno—
reasonCodestring | nullno—
remainingnumber (double) | nullno—
replayedbooleanno—
requiredActionstring | nullno—
retryAfterSecondsinteger (int32) | nullno—
subscriptionIdstring (uuid) | nullno—
ttlSecondsinteger (int32) | nullno—
usedinteger (int64) | nullno—
usedExactnumber (double) | nullno—
withinLimitbooleanno—

Essence.Payment.Billing.Application.DTOs.QuotaLeaseSettleRequestDto

PropertyTypeRequiredDescription
sequenceinteger (int64) | nullno—
usedUnitsnumber (double) | nullno—

Essence.Payment.Billing.Application.DTOs.QuotaLeaseSettleResponseDto

PropertyTypeRequiredDescription
grantedUnitsnumber (double)no—
leaseIdstring (uuid)no—
outcomestring | nullno—
recordedUnitsnumber (double)no—
replayedbooleanno—
returnedUnitsnumber (double)no—
sequenceinteger (int64)no—
usedUnitsnumber (double)no—

Essence.Payment.Billing.Application.DTOs.QuotaReservationReleaseRequestDto

PropertyTypeRequiredDescription
idempotencyKeystring | nullno—
metricCodestring | nullno—
organisationIdstring | nullno—
organizationIdstring | nullno—
requestedUnitsnumber (double) | nullno—
skustring | nullno—
subjectIdstring | nullno—
subscriptionIdstring | nullno—
unitsnumber (double) | nullno—
usagenumber (double) | nullno—

Essence.Payment.Billing.Application.DTOs.QuotaReservationRequestDto

PropertyTypeRequiredDescription
actionDigeststring | nullno—
idempotencyKeystring | nullno—
metricCodestring | nullno—
organisationIdstring | nullno—
organizationIdstring | nullno—
requestedUnitsnumber (double) | nullno—
skustring | nullno—
subjectIdstring | nullno—
subscriptionIdstring | nullno—
unitsnumber (double) | nullno—
usagenumber (double) | nullno—

Essence.Payment.Billing.Application.DTOs.QuotaReservationResponseDto

PropertyTypeRequiredDescription
allowedbooleanno—
expiresAtstring (date-time) | nullno—
idempotencyKeystring | nullno—
isOveragebooleanno—
limitinteger (int64) | nullno—
limitExactnumber (double) | nullno—
messagestring | nullno—
outstandingReservednumber (double) | nullno—
overageUnitsnumber (double) | nullno—
reasonstring | nullno—
reasonCodestring | nullno—
remainingnumber (double) | nullno—
replayedbooleanno—
requiredActionstring | nullno—
reservationIdstring (uuid) | nullno—
retryAfterSecondsinteger (int32) | nullno—
subscriptionIdstring (uuid) | nullno—
usedinteger (int64) | nullno—
usedExactnumber (double) | nullno—
withinLimitbooleanno—

Essence.Payment.Billing.Application.DTOs.RecordUsageEventRequestDto

PropertyTypeRequiredDescription
metadatamap<string, unspecified> | nullno—
metricstring | nullno—
occurredAtstring (date-time)no—
quantitynumber (double)no—

Essence.Payment.Billing.Application.DTOs.RecordUsageEventResponseDto

PropertyTypeRequiredDescription
replayedbooleanno—
subscriptionIdstring (uuid)no—
usageRecordIdstring (uuid) | nullno—

Essence.Payment.Billing.Application.DTOs.RefundDto

PropertyTypeRequiredDescription
amountnumber (double)no—
currencystring | nullno—
estimatedArrivalDatestring (date-time) | nullno—
paymentIdstring (uuid)no—
processedAtstring (date-time)no—
reasonstring | nullno—
refundIdstring | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.RefundQueueItemDto

PropertyTypeRequiredDescription
applicationReferencestring | nullno—
createdAtstring (date-time)no—
currencystring | nullno—
invoiceIdstring (uuid)no—
invoiceNumberstring | nullno—
onboardingSessionIdstring (uuid) | nullno—
organizationIdstring (uuid) | nullno—
reasonstring | nullno—
resolutionEssence.Payment.Billing.Application.DTOs.RefundResolutionDtono—
statusstring | nullno—
subscriptionIdstring (uuid) | nullno—
totalAmountnumber (double)no—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.RefundResolutionDto

PropertyTypeRequiredDescription
notestring | nullno—
outcomestring | nullno—
referencestring | nullno—
resolvedAtstring (date-time)no—
resolvedBystring | nullno—

Essence.Payment.Billing.Application.DTOs.RegisteredSeatDto

PropertyTypeRequiredDescription
assignedAtstring (date-time) | nullno—
holderRefstring (uuid) | nullno—
lastChangedAtstring (date-time)no—
originstring | nullno—
planLabelstring | nullno—
releasedAtstring (date-time) | nullno—
seatRefstring | nullno—
statusstring | nullno—
subscriptionRefstring | nullno—

Essence.Payment.Billing.Application.DTOs.RehomeDepartingMemberRequestDto

PropertyTypeRequiredDescription
departingMemberUserIdstring (uuid)no—
familyOwnerUserIdstring (uuid)no—
familySubscriptionIdstring | nullno—
occurredAtstring (date-time) | nullno—
rehomeRequestIdstring (uuid)no—
seatIdstring | nullno—
targetPlanIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.ReimbursementClaimStatusDto

PropertyTypeRequiredDescription
adjustmentIdstring | nullno—
claimIdstring | nullno—
claimedAmountMinorinteger (int64)no—
currencystring | nullno—
disbursementRefstring | nullno—
paidAtstring | nullno—
rejectionReasonstring | nullno—
statestring | nullno—
submittedAtstring | nullno—

Essence.Payment.Billing.Application.DTOs.RenewalPriceResolutionDto

PropertyTypeRequiredDescription
currencyCodestring | nullno—
effectivePeriodStartstring (date-time)no—
grandfatherLockAppliedbooleanno—
grandfatherLockedUntilstring (date-time) | nullno—
grandfatherPriceLockIdstring (uuid) | nullno—
idstring (uuid)no—
listAmountForegonenumber (double) | nullno—
priceSourcestring | nullno—
pricingPlanIdstring (uuid)no—
resolvedAmountnumber (double)no—
resolvedAtstring (date-time)no—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.ReprovisionedSubscriptionDto

PropertyTypeRequiredDescription
addedFeatureCodesstring[] | nullno—
featureCodesstring[] | nullno—
organizationIdstring (uuid) | nullno—
pricingPlanIdstring (uuid)no—
publishedbooleanno—
skipReasonstring | nullno—
subscriptionIdstring (uuid)no—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.ReprovisionSubscriptionEntitlementsResultDto

PropertyTypeRequiredDescription
baselinedinteger (int32)no—
dryRunbooleanno—
evidenceFallbacksinteger (int32)no—
evidenceIndexesReadybooleanno—
examinedinteger (int32)no—
nextCursorstring (uuid) | nullno—
reprovisionedinteger (int32)no—
skippedMissingPlaninteger (int32)no—
subscriptionsEssence.Payment.Billing.Application.DTOs.ReprovisionedSubscriptionDto[] | nullno—
unchangedinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.RetainerTrustFundingDto

PropertyTypeRequiredDescription
amountnumber (double)no—
clearedAtstring (date-time) | nullno—
clientUserIdstring (uuid)no—
createdAtstring (date-time)no—
currencyCodestring | nullno—
failedAtstring (date-time) | nullno—
failureReasonstring | nullno—
feeBasisstring | nullno—
idstring (uuid)no—
lawFirmOrganizationIdstring (uuid)no—
matterReferencestring | nullno—
paymentEssence.Payment.Billing.Application.DTOs.RetainerTrustFundingPaymentDtono—
paymentReferencestring | nullno—
refundedAtstring (date-time) | nullno—
releasedToMatterAtstring (date-time) | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.RetainerTrustFundingPaymentDto

PropertyTypeRequiredDescription
clientSdkUrlstring | nullno—
clientSecretstring | nullno—
environmentstring | nullno—
gatewaystring | nullno—
paymentIntentIdstring | nullno—
publishableKeystring | nullno—
requiresActionbooleanno—

Essence.Payment.Billing.Application.DTOs.RevenueByCurrencyDto

PropertyTypeRequiredDescription
currencystring | nullno—
revenuenumber (double)no—

Essence.Payment.Billing.Application.DTOs.RevenueBySourceDto

PropertyTypeRequiredDescription
revenuenumber (double)no—
sourcestring | nullno—

Essence.Payment.Billing.Application.DTOs.RevenueByStreamReportDto

PropertyTypeRequiredDescription
currencystring | nullno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
streamsEssence.Payment.Billing.Application.DTOs.RevenueStreamLineDto[] | nullno—
totalRevenuenumber (double)no—

Essence.Payment.Billing.Application.DTOs.RevenueByTierDto

PropertyTypeRequiredDescription
revenuenumber (double)no—
subscriptionCountinteger (int32)no—
tierstring | nullno—

Essence.Payment.Billing.Application.DTOs.RevenueClassificationAssignmentDto

PropertyTypeRequiredDescription
classstring | nullno—
classifiedBystring | nullno—
effectiveFromstring (date-time)no—
reasonstring | nullno—
recordedAtUtcstring (date-time)no—

Essence.Payment.Billing.Application.DTOs.RevenueClassificationExceptionDto

PropertyTypeRequiredDescription
exceptionIdstring (uuid)no—
firstContextstring | nullno—
firstObservedAtUtcstring (date-time)no—
lastObservedAtUtcstring (date-time)no—
observationCountinteger (int32)no—
tenantIdstring (uuid)no—
tenantTypeEssence.Payment.Billing.Contracts.RevenueClassification.RevenueTenantTypeno—

Essence.Payment.Billing.Application.DTOs.RevenueExclusionDisclosureDto

PropertyTypeRequiredDescription
byClassEssence.Payment.Billing.Application.DTOs.RevenueExclusionLineDto[] | nullno—
excludedTenantCountinteger (int32)no—
exclusionAppliedbooleanno—
summarystring | nullno—
totalExcludedAmountnumber (double)no—
unclassifiedAmountnumber (double)no—
unclassifiedTenantCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.RevenueExclusionLineDto

PropertyTypeRequiredDescription
classstring | nullno—
excludedAmountnumber (double)no—
tenantCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.RevenueReportDto

PropertyTypeRequiredDescription
byCurrencyEssence.Payment.Billing.Application.DTOs.RevenueByCurrencyDto[] | nullno—
bySourceEssence.Payment.Billing.Application.DTOs.RevenueBySourceDto[] | nullno—
byTierEssence.Payment.Billing.Application.DTOs.RevenueByTierDto[] | nullno—
currencystring | nullno—
exclusionsEssence.Payment.Billing.Application.DTOs.RevenueExclusionDisclosureDtono—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
totalRevenuenumber (double)no—

Essence.Payment.Billing.Application.DTOs.RevenueStreamLineDto

PropertyTypeRequiredDescription
descriptionstring | nullno—
revenuenumber (double)no—
streamstring | nullno—
transactionCountinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.RollbackSandboxLicenceRequest

PropertyTypeRequiredDescription
purchaseIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.RoutedSeatTrueUpDto

PropertyTypeRequiredDescription
commercialRoutestring | nullno—
organizationIdstring (uuid)no—
pricesHiddenbooleanno—

Essence.Payment.Billing.Application.DTOs.SandboxLicenceContextDto

PropertyTypeRequiredDescription
audiencestring | nullno—
billedThroughDisplayNamestring | nullno—
heldEssence.Payment.Billing.Application.DTOs.HeldSandboxLicenceDto[] | nullno—
highestHeldInstanceTierinteger (int32) | nullno—
modestring | nullno—
offersEssence.Payment.Billing.Application.DTOs.SandboxLicenceOfferDto[] | nullno—
onBehalfOfPayerbooleanno—
ownerOrganizationIdstring (uuid)no—
partnerStandingstring | nullno—
pricesHiddenbooleanno—
routestring | nullno—

Essence.Payment.Billing.Application.DTOs.SandboxLicenceOfferDto

PropertyTypeRequiredDescription
cadencestring | nullno—
currencystring | nullno—
eligiblebooleanno—
licenceTierinteger (int32) | nullno—
maxPerOwnerinteger (int32) | nullno—
namestring | nullno—
pricenumber (double) | nullno—
refusalEssence.Payment.Billing.Application.DTOs.SandboxLicenceRefusalDtono—
selfServicePurchasablebooleanno—
skuCodestring | nullno—
subnamestring | nullno—

Essence.Payment.Billing.Application.DTOs.SandboxLicencePurchaseDto

PropertyTypeRequiredDescription
amountDuenumber (double) | nullno—
awaitingPaymentInvoiceIdstring (uuid) | nullno—
commercialRoutestring | nullno—
convertedFromSubscriptionIdstring (uuid) | nullno—
convertsSponsoredSubscriptionIdstring (uuid) | nullno—
currencystring | nullno—
currentPeriodEndstring (date-time)no—
endDatestring (date-time) | nullno—
invoiceToOrganizationIdstring (uuid) | nullno—
licenceFamilystring | nullno—
licenceTierinteger (int32) | nullno—
ownerOrganizationIdstring (uuid)no—
replaybooleanno—
skuCodestring | nullno—
sponsoredbooleanno—
sponsoredUntilstring (date-time) | nullno—
sponsorshipPurposestring | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SandboxLicenceRefusalDto

PropertyTypeRequiredDescription
codestring | nullno—
heldSubscriptionIdstring (uuid) | nullno—
reasonstring | nullno—
rulestring | nullno—

Essence.Payment.Billing.Application.DTOs.SandboxLicenceRollbackDto

PropertyTypeRequiredDescription
invoiceSettlementstring | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SandboxSponsorshipDto

PropertyTypeRequiredDescription
extensionsEssence.Payment.Billing.Application.DTOs.SandboxSponsorshipExtensionDto[] | nullno—
grantedAtstring (date-time) | nullno—
grantedBystring | nullno—
licenceFamilystring | nullno—
licenceTierinteger (int32) | nullno—
ownerOrganizationIdstring (uuid)no—
referencestring | nullno—
replaybooleanno—
skuCodestring | nullno—
sponsoredbooleanno—
sponsoredUntilstring (date-time) | nullno—
sponsorshipPurposestring | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SandboxSponsorshipExtensionDto

PropertyTypeRequiredDescription
extendedAtstring (date-time)no—
extendedBystring | nullno—
fromstring (date-time)no—
reasonstring | nullno—
tostring (date-time)no—

Essence.Payment.Billing.Application.DTOs.SeatBillingSpanDto

PropertyTypeRequiredDescription
activeFromstring (date-time)no—
activeTostring (date-time) | nullno—
heldbooleanno—
holdReasonstring | nullno—
seatRefstring | nullno—
stoppedReasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.SeatChangeRecordDto

PropertyTypeRequiredDescription
accessRevokedAtstring (date-time) | nullno—
actorRefstring (uuid)no—
consentDispositionstring | nullno—
consentGrantsAffectedinteger (int32) | nullno—
evidenceFailureReasonstring | nullno—
evidenceStatestring | nullno—
handoverRoutestring | nullno—
idstring (uuid)no—
keptEssence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto[] | nullno—
leaverRefstring (uuid)no—
newHolderRefstring (uuid) | nullno—
noNewChargeRaisedbooleanno—
personalStateCarriedOverbooleanno—
planLabelstring | nullno—
reassignedAtstring (date-time) | nullno—
reclaimedAtstring (date-time)no—
revokedEssence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto[] | nullno—
scopestring | nullno—
seatRefstring | nullno—
seatRefOriginstring | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.SeatDiffRowDto

PropertyTypeRequiredDescription
consentStatestring | nullno—
driftKindstring | nullno—
externalRefstring | nullno—
holdsBilledSeatbooleanno—

Essence.Payment.Billing.Application.DTOs.SeatDriftAlertDto

PropertyTypeRequiredDescription
acknowledgedAtstring (date-time) | nullno—
acknowledgedBystring (uuid) | nullno—
alertIdstring (uuid)no—
billedSeatsinteger (int32)no—
closedAtstring (date-time) | nullno—
currencystring | nullno—
directionstring | nullno—
impactAmountnumber (double) | nullno—
organizationIdstring (uuid)no—
raisedAtstring (date-time)no—
resolvedByDecisionIdstring (uuid) | nullno—
seatDeltainteger (int32)no—
statusstring | nullno—
syncedSeatsinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto

PropertyTypeRequiredDescription
codestring | nullno—
entitlementRefstring | nullno—
labelstring | nullno—
revokedAtstring (date-time) | nullno—

Essence.Payment.Billing.Application.DTOs.SeatFigureDto

PropertyTypeRequiredDescription
availablebooleanno—
seatsinteger (int32) | nullno—
sourcestring | nullno—
unavailableReasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.SeatNoticeDto

PropertyTypeRequiredDescription
consentDispositionstring | nullno—
effectiveAtstring (date-time)no—
effectiveAtConfirmedbooleanno—
handoverRoutestring | nullno—
inheritedPreviousHolderStatebooleanno—
orgFeaturesEssence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto[] | nullno—
personalVaultRetainedbooleanno—
planLabelstring | nullno—
rolestring | nullno—
seatReassignmentIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SeatReclaimPolicyDto

PropertyTypeRequiredDescription
defaultHandoverRoutestring | nullno—
defaultScopestring | nullno—
orgConfiguredbooleanno—

Essence.Payment.Billing.Application.DTOs.SeatReclaimPreviewDto

PropertyTypeRequiredDescription
canConfirmOffboardbooleanno—
defaultHandoverRoutestring | nullno—
defaultScopestring | nullno—
defaultsAreOrgConfiguredbooleanno—
envelopeUnavailableReasonstring | nullno—
keptEssence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto[] | nullno—
leaverRefstring (uuid)no—
offboardBlockedReasonstring | nullno—
revokedEssence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto[] | nullno—

Essence.Payment.Billing.Application.DTOs.SeatReconciliationDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
assignedEssence.Payment.Billing.Application.DTOs.SeatFigureDtono—
billedEssence.Payment.Billing.Application.DTOs.SeatFigureDtono—
billingPeriodEndstring (date-time)no—
billingPeriodStartstring (date-time)no—
canCommitResolutionbooleanno—
contractVersionstring | nullno—
costUnavailableReasonstring | nullno—
currencystring | nullno—
daysRemainingInPeriodinteger (int32)no—
directionstring | nullno—
directionLabelstring | nullno—
openAlertEssence.Payment.Billing.Application.DTOs.SeatDriftAlertDtono—
organizationIdstring (uuid)no—
pendingDecisionEssence.Payment.Billing.Application.DTOs.SeatResolutionDecisionDtono—
perSeatPerMonthnumber (double) | nullno—
requiresResolutionbooleanno—
resolutionUnavailableReasonstring | nullno—
rosterAvailablebooleanno—
rosterUnavailableReasonstring | nullno—
seatDeltainteger (int32) | nullno—
seatsEssence.Payment.Billing.Application.DTOs.SeatDiffRowDto[] | nullno—
syncedEssence.Payment.Billing.Application.DTOs.SeatFigureDtono—
toleranceSeatsinteger (int32)no—
trueUpAmountnumber (double) | nullno—

Essence.Payment.Billing.Application.DTOs.SeatResolutionDecisionDto

PropertyTypeRequiredDescription
authoritativeSourcestring | nullno—
canUndobooleanno—
currencystring | nullno—
decidedAtstring (date-time)no—
decidedBystring (uuid)no—
decisionIdstring (uuid)no—
effectedAtstring (date-time) | nullno—
failureReasonstring | nullno—
linkedInvoiceIdstring (uuid) | nullno—
notestring | nullno—
organizationIdstring (uuid)no—
proratedAmountnumber (double) | nullno—
recurringMonthlyDeltanumber (double) | nullno—
seatChangeinteger (int32)no—
seatDriftAlertIdstring (uuid)no—
seatsAfterinteger (int32)no—
seatsBeforeinteger (int32)no—
statusstring | nullno—
subscriptionIdstring (uuid)no—
undoWindowEndsAtstring (date-time)no—
undoneAtstring (date-time) | nullno—

Essence.Payment.Billing.Application.DTOs.SeatResolutionPreviewDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
availablebooleanno—
contractVersionstring | nullno—
costUnavailableReasonstring | nullno—
currencystring | nullno—
currentBilledSeatsinteger (int32)no—
daysRemainingInPeriodinteger (int32)no—
organizationIdstring (uuid)no—
perSeatPerMonthnumber (double) | nullno—
proratedAmountnumber (double) | nullno—
recurringMonthlyDeltanumber (double) | nullno—
reducesSeatsbooleanno—
seatChangeinteger (int32)no—
targetSeatsinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.SeatTrueUpApprovalDto

PropertyTypeRequiredDescription
approvedAtstring (date-time)no—
approverRefstring (uuid)no—
grossAmountAtApprovalnumber (double)no—
rolestring | nullno—

Essence.Payment.Billing.Application.DTOs.SeatTrueUpPeriodDto

PropertyTypeRequiredDescription
approvalUnavailableReasonstring | nullno—
approvalsEssence.Payment.Billing.Application.DTOs.SeatTrueUpApprovalDto[] | nullno—
asOfstring (date-time)no—
auditAnchorRefstring | nullno—
averageDeployedSeatsnumber (double)no—
billableSeatMonthsnumber (double)no—
cadenceIsContractLockedbooleanno—
cadenceLabelstring | nullno—
canApprovebooleanno—
canReconcilebooleanno—
chargeDatestring (date-time) | nullno—
committedSeatsinteger (int32)no—
contractAvailablebooleanno—
contractUnavailableReasonstring | nullno—
contractVersionstring | nullno—
currencystring | nullno—
floorDisclosurestring | nullno—
grossAmountnumber (double)no—
heldGrossAmountnumber (double)no—
initiatedByRefstring (uuid) | nullno—
lockedAtstring (date-time) | nullno—
lockedByApprovalbooleanno—
meteredbooleanno—
meteringBasisstring | nullno—
meteringUnavailableReasonstring | nullno—
netAmountnumber (double)no—
organizationIdstring (uuid)no—
outstandingApprovalsinteger (int32)no—
overageRatePerSeatPerMonthnumber (double)no—
payableGrossAmountnumber (double)no—
peakDeployedSeatsinteger (int32)no—
periodEndstring (date-time)no—
periodLabelstring | nullno—
periodStartstring (date-time)no—
reconcileWindowClosesAtstring (date-time) | nullno—
requiredApprovalTierstring | nullno—
requiredApprovalTierReasonstring | nullno—
runIdstring (uuid) | nullno—
samplesEssence.Payment.Billing.Application.DTOs.SeatUsageSampleDto[] | nullno—
seatSpansEssence.Payment.Billing.Application.DTOs.SeatBillingSpanDto[] | nullno—
seatSpansNotestring | nullno—
segmentsEssence.Payment.Billing.Application.DTOs.SeatTrueUpSegmentDto[] | nullno—
statusstring | nullno—
statusLabelstring | nullno—
taxLabelstring | nullno—
vatAmountnumber (double)no—
vatRatePercentnumber (double)no—

Essence.Payment.Billing.Application.DTOs.SeatTrueUpSegmentDto

PropertyTypeRequiredDescription
daysinteger (int32)no—
daysInMonthinteger (int32)no—
deployedSeatsinteger (int32)no—
endstring (date-time)no—
grossAmountnumber (double)no—
netAmountnumber (double)no—
overCommittedSeatsinteger (int32)no—
startstring (date-time)no—
vatAmountnumber (double)no—

Essence.Payment.Billing.Application.DTOs.SeatUsageSampleDto

PropertyTypeRequiredDescription
activeSeatsinteger (int32)no—
datestring (date-time)no—
overCommittedSeatsinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.SetDefaultPaymentMethodResultDto

PropertyTypeRequiredDescription
overdueSettlementstring | nullno—

Essence.Payment.Billing.Application.DTOs.SkuDto

PropertyTypeRequiredDescription
codestring | nullno—
entitlementsmap<string, integer (int32)> | nullno—
familystring | nullno—
idstring (uuid)no—
listPriceEssence.Payment.Billing.Application.DTOs.MoneyDtono—
namestring | nullno—
prerequisitesstring[] | nullno—
statusstring | nullno—
successorSkuCodestring | nullno—

Essence.Payment.Billing.Application.DTOs.SkuSummaryDto

PropertyTypeRequiredDescription
codestring | nullno—
dispositionstring | nullno—
licenceFamilystring | nullno—
licenceTierinteger (int32) | nullno—
listPriceEssence.Payment.Billing.Application.DTOs.MoneyDtono—
maxPerOwnerinteger (int32) | nullno—
minimumInstanceTierinteger (int32) | nullno—
minimumTermMonthsinteger (int32) | nullno—
namestring | nullno—
prerequisiteCodesstring[] | nullno—
priceBasisstring | nullno—
statusstring | nullno—
successorSkuCodestring | nullno—
withdrawalEffectiveAtstring (date-time) | nullno—

Essence.Payment.Billing.Application.DTOs.SlaBreachCreditDto

PropertyTypeRequiredDescription
breachDetectedAtstring (date-time)no—
breachIdstring (uuid)no—
calculationstring | nullno—
creditAmountnumber (double)no—
creditIssuedbooleanno—
creditPercentnumber (double)no—
currencystring | nullno—
decidedAtstring (date-time)no—
downtimeMinutesnumber (double)no—
ledgerCreditIdstring (uuid) | nullno—
measuredUptimePctnumber (double)no—
measurementPeriodstring | nullno—
measurementWindowEndstring (date-time)no—
measurementWindowStartstring (date-time)no—
outcomestring | nullno—
outcomeLabelstring | nullno—
recipientPolicystring | nullno—
recordIdstring (uuid)no—
serviceNamestring | nullno—
shortfallPctnumber (double)no—
slaBasisstring | nullno—
slaBasisLabelstring | nullno—
targetUptimePctnumber (double)no—
tierstring | nullno—

Essence.Payment.Billing.Application.DTOs.SlaCreditBandDto

PropertyTypeRequiredDescription
atOrBelowUptimePctnumber (double)no—
creditPercentOfMonthlyFeenumber (double)no—

Essence.Payment.Billing.Application.DTOs.SlaCreditRollupDto

PropertyTypeRequiredDescription
breachCountinteger (int32)no—
creditedCountinteger (int32)no—
currencystring | nullno—
exceptionCountinteger (int32)no—
fromstring (date-time) | nullno—
generatedAtstring (date-time)no—
notEligibleCountinteger (int32)no—
rowsEssence.Payment.Billing.Application.DTOs.SlaBreachCreditDto[] | nullno—
scopestring | nullno—
scopeIdstring (uuid)no—
tostring (date-time) | nullno—
totalCreditAmountnumber (double)no—

Essence.Payment.Billing.Application.DTOs.SlaCreditTermsDto

PropertyTypeRequiredDescription
bandsEssence.Payment.Billing.Application.DTOs.SlaCreditBandDto[] | nullno—
currencystring | nullno—
recipientPolicystring | nullno—
sourcestring | nullno—

Essence.Payment.Billing.Application.DTOs.SpendReconciliationDto

PropertyTypeRequiredDescription
computedAtIsostring | nullno—
earlyLeaversEssence.Payment.Billing.Application.DTOs.EarlyLeaverDto[] | nullno—
linesEssence.Payment.Billing.Application.DTOs.SpendReconciliationLineDto[] | nullno—
organizationIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SpendReconciliationLineDto

PropertyTypeRequiredDescription
achievedAtIsostring | nullno—
allocationIdstring | nullno—
apprenticeReferencestring | nullno—
apprenticeshipIdstring | nullno—
attributedToEssence.Payment.Billing.Application.DTOs.AttributedActorDtono—
drawnPenceinteger (int64)no—
isCompletionPaymentbooleanno—
lineIdstring | nullno—
milestoneAchievedbooleanno—
milestoneCodestring | nullno—
milestoneTitlestring | nullno—
paidToProviderPenceinteger (int64)no—
plannedPenceinteger (int64)no—

Essence.Payment.Billing.Application.DTOs.SponsoredBillingSummaryDto

PropertyTypeRequiredDescription
activeUserCountinteger (int32)no—
currencystring | nullno—
featureSetstring | nullno—
gracePeriodEndstring (date-time) | nullno—
maxUsersinteger (int32)no—
monthlyCostnumber (double)no—
sponsorOrgIdstring | nullno—
sponsorshipIdstring (uuid)no—
statusstring | nullno—
wholesalePerSeatPricenumber (double) | nullno—
wholesaleRatenumber (double)no—

Essence.Payment.Billing.Application.DTOs.SponsoredByOrgDto

PropertyTypeRequiredDescription
activeSponsorshipsinteger (int32)no—
activeUserCountinteger (int32)no—
orgIdstring | nullno—
revenuenumber (double)no—

Essence.Payment.Billing.Application.DTOs.SponsoredReportDto

PropertyTypeRequiredDescription
byOrgEssence.Payment.Billing.Application.DTOs.SponsoredByOrgDto[] | nullno—
totalActiveSponsorshipsinteger (int32)no—
totalSponsoredRevenuenumber (double)no—
totalSponsoredUsersinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.SponsorPlanDistributionDto

PropertyTypeRequiredDescription
activeUserCountinteger (int32)no—
featureSetstring | nullno—

Essence.Payment.Billing.Application.DTOs.SponsorReportDto

PropertyTypeRequiredDescription
activeUserCountinteger (int32)no—
currencystring | nullno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
planDistributionEssence.Payment.Billing.Application.DTOs.SponsorPlanDistributionDto[] | nullno—
sponsorOrgIdstring | nullno—
totalInvoiceAmountnumber (double)no—

Essence.Payment.Billing.Application.DTOs.SponsorshipDispatchReceiptDto

PropertyTypeRequiredDescription
alreadyDispatchedSkippedinteger (int32)no—
coldInvitesDispatchedinteger (int32)no—
existingUsersDeferredinteger (int32)no—
remainingAllowanceinteger (int32)no—
sponsorshipIdstring (uuid)no—
submittedinteger (int32)no—
suppressedSkippedinteger (int32)no—
unresolvedSkippedinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.SponsorshipDto

PropertyTypeRequiredDescription
attestationAcceptedAtstring (date-time) | nullno—
audienceEssence.Payment.Billing.Application.DTOs.AudienceSelectorDtono—
budgetCapMinorinteger (int64)no—
createdAtstring (date-time)no—
currencystring | nullno—
expiresAtstring (date-time) | nullno—
idstring (uuid)no—
lawfulBasisEssence.Payment.Billing.Application.DTOs.LawfulBasisRecordDtono—
moduleIdstring | nullno—
moduleNamestring | nullno—
sponsorOrgIdstring (uuid)no—
startsAtstring (date-time)no—
statusstring | nullno—
updatedAtstring (date-time) | nullno—

Essence.Payment.Billing.Application.DTOs.SponsorshipInvoiceDto

PropertyTypeRequiredDescription
amountnumber (double)no—
currencystring | nullno—
dueDatestring (date-time)no—
invoiceIdstring (uuid)no—
invoiceNumberstring | nullno—
issuedAtstring (date-time)no—
paidAtstring (date-time) | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.SponsorshipLifecycleEntryDto

PropertyTypeRequiredDescription
actorRolestring | nullno—
atstring (date-time)no—
eventTypestring | nullno—
idstring (uuid)no—
sponsorshipIdstring (uuid)no—
subjectRedactedbooleanno—
summarystring | nullno—

Essence.Payment.Billing.Application.DTOs.SponsorshipLifecyclePageDto

PropertyTypeRequiredDescription
pageinteger (int32)no—
pageSizeinteger (int32)no—
rowsEssence.Payment.Billing.Application.DTOs.SponsorshipLifecycleEntryDto[] | nullno—
totalRowsinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.SponsorshipUptakeDto

PropertyTypeRequiredDescription
activatedEssence.Payment.Billing.Domain.ValueObjects.KAnonCountno—
asOfstring (date-time)no—
convertedEssence.Payment.Billing.Domain.ValueObjects.KAnonCountno—
grantedEssence.Payment.Billing.Domain.ValueObjects.KAnonCountno—
sponsorshipIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.StrandedOnboardingApplicationDto

PropertyTypeRequiredDescription
applicationstring | nullno—
onboardingSessionIdstring (uuid) | nullno—
outcomestring | nullno—

Essence.Payment.Billing.Application.DTOs.StrandedOnboardingSubscriptionDto

PropertyTypeRequiredDescription
awaitingPaymentInvoiceIdstring (uuid) | nullno—
licenceFamilystring | nullno—
onboardingSessionIdstring (uuid)no—
outcomestring | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SubjectErasureObligationDto

PropertyTypeRequiredDescription
endsAtstring (date-time) | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SubjectErasureObligationSummaryDto

PropertyTypeRequiredDescription
evaluatedAtstring (date-time)no—
hasActiveObligationbooleanno—
obligationsEssence.Payment.Billing.Application.DTOs.SubjectErasureObligationDto[] | nullno—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SubjectSubscriptionDto

PropertyTypeRequiredDescription
currentPeriodEndstring (date-time) | nullno—
currentPeriodStartstring (date-time) | nullno—
entitlementActivebooleanno—
startDatestring (date-time) | nullno—
statusstring | nullno—
subjectIdstring (uuid)no—
subjectTypestring | nullno—
subscriptionIdstring (uuid) | nullno—
tierstring | nullno—

Essence.Payment.Billing.Application.DTOs.SubjectVaultEntitlementDto

PropertyTypeRequiredDescription
entitlementActivebooleanno—
storageQuotaBytesinteger (int64) | nullno—
storageUnlimitedbooleanno—
subjectIdstring (uuid)no—
subjectTypestring | nullno—
tierstring | nullno—
vaultStrategystring | nullno—

Essence.Payment.Billing.Application.DTOs.SubscriptionDto

PropertyTypeRequiredDescription
awaitingPaymentInvoiceIdstring (uuid) | nullno—
billingPeriodEssence.Payment.Billing.Application.DTOs.BillingPeriodDtono—
canceledAtstring (date-time) | nullno—
cancellationReasonstring | nullno—
collectionMethodstring | nullno—
commercialRoutestring | nullno—
createdAtstring (date-time)no—
currentPeriodEndstring (date-time)no—
currentPeriodStartstring (date-time)no—
endDatestring (date-time) | nullno—
idstring (uuid)no—
invoiceToOrganizationIdstring (uuid) | nullno—
itemsEssence.Payment.Billing.Application.DTOs.SubscriptionItemDto[] | nullno—
metadatamap<string, string> | nullno—
organizationIdstring (uuid) | nullno—
pendingPlanChangeIdstring (uuid) | nullno—
pendingUpgradePlanIdstring (uuid) | nullno—
planChangeEffectiveDatestring (date-time) | nullno—
pricingPlanIdstring (uuid)no—
sponsoredbooleanno—
sponsoredUntilstring (date-time) | nullno—
sponsorshipPurposestring | nullno—
startDatestring (date-time)no—
statusstring | nullno—
tierstring | nullno—
trialEndDatestring (date-time) | nullno—
trialStartDatestring (date-time) | nullno—
updatedAtstring (date-time)no—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SubscriptionGrandfatherStateDto

PropertyTypeRequiredDescription
lockEssence.Payment.Billing.Application.DTOs.GrandfatherPriceLockDtono—
resolutionsEssence.Payment.Billing.Application.DTOs.RenewalPriceResolutionDto[] | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SubscriptionItemDto

PropertyTypeRequiredDescription
createdAtstring (date-time)no—
idstring (uuid)no—
pricingPlanIdstring (uuid)no—
quantityinteger (int32)no—
subscriptionIdstring (uuid)no—
unitPriceEssence.Payment.Billing.Application.DTOs.MoneyDtono—
updatedAtstring (date-time)no—

Essence.Payment.Billing.Application.DTOs.SubscriptionPlanSummaryDto

PropertyTypeRequiredDescription
currentPeriodEndstring (date-time)no—
currentPeriodStartstring (date-time)no—
organizationIdstring (uuid) | nullno—
statusstring | nullno—
subscriptionIdstring (uuid)no—
tierstring | nullno—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.SubscriptionStateHistoryDto

PropertyTypeRequiredDescription
changedAtstring (date-time)no—
changedBystring | nullno—
idstring (uuid)no—
newStatusstring | nullno—
previousStatusstring | nullno—
reasonstring | nullno—
subscriptionIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.TaxDeterminationDto

PropertyTypeRequiredDescription
determinedAtstring (date-time)no—
determinedBystring | nullno—
ratePercentnumber (double)no—
reasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.TaxPendingQueueItemDto

PropertyTypeRequiredDescription
attemptsinteger (int32)no—
currencystring | nullno—
determinationEssence.Payment.Billing.Application.DTOs.TaxDeterminationDtono—
escalatedbooleanno—
escalatesAtstring (date-time) | nullno—
heldForHoursnumber (double) | nullno—
heldSincestring (date-time) | nullno—
invoiceIdstring (uuid)no—
invoiceNumberstring | nullno—
lastFailureReasonstring | nullno—
lineCountinteger (int32)no—
netAmountnumber (double)no—
organizationIdstring (uuid) | nullno—
statusstring | nullno—
subscriptionIdstring (uuid) | nullno—
subscriptionInvoluntarilyPausedbooleanno—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.TenantRevenueClassificationDto

PropertyTypeRequiredDescription
asOfUtcstring (date-time)no—
currentClassstring | nullno—
historyEssence.Payment.Billing.Application.DTOs.RevenueClassificationAssignmentDto[] | nullno—
isRevenueBearingbooleanno—
tenantIdstring (uuid)no—
tenantTypeEssence.Payment.Billing.Contracts.RevenueClassification.RevenueTenantTypeno—

Essence.Payment.Billing.Application.DTOs.TopCustomerRevenueDto

PropertyTypeRequiredDescription
customerKeystring | nullno—
customerScopestring | nullno—
invoiceCountinteger (int32)no—
revenuenumber (double)no—

Essence.Payment.Billing.Application.DTOs.UpgradeChargePreviewDto

PropertyTypeRequiredDescription
appliesImmediatelybooleanno—
awaitingPaymentInvoiceIdstring (uuid) | nullno—
currencystring | nullno—
incomingChargenumber (double)no—
ledgerCreditnumber (double)no—
netChargenumber (double)no—
outgoingCreditnumber (double)no—
periodEndstring (date-time)no—
periodTotalDaysinteger (int32)no—
planNamestring | nullno—
pricesIncludeTaxbooleanno—
pricingPlanIdstring (uuid)no—
remainingDaysinteger (int32)no—
subscriptionIdstring (uuid)no—
subtotalnumber (double)no—
taxAmountnumber (double)no—
totalPayablenumber (double)no—

Essence.Payment.Billing.Application.DTOs.UsageCostDisclosureDto

PropertyTypeRequiredDescription
billableQuantitynumber (double)no—
currencyCodestring | nullno—
disclosedCostnumber (double)no—
includedQuantitynumber (double)no—
isBillablebooleanno—
metricTypeEssence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricTypeno—
planNamestring | nullno—
pricingPlanIdstring (uuid)no—
projectedQuantitynumber (double)no—
summarystring | nullno—
tierBreakdownEssence.Payment.Billing.Application.DTOs.UsageCostTierDto[] | nullno—
unitstring | nullno—

Essence.Payment.Billing.Application.DTOs.UsageCostTierDto

PropertyTypeRequiredDescription
costnumber (double)no—
pricePerUnitnumber (double)no—
quantitynumber (double)no—
tierEndnumber (double)no—
tierStartnumber (double)no—
unitstring | nullno—

Essence.Payment.Billing.Application.DTOs.UsageRecordDto

PropertyTypeRequiredDescription
aggregatedbooleanno—
createdAtstring (date-time)no—
idstring (uuid)no—
metadatamap<string, string> | nullno—
metricTypestring | nullno—
metricValuenumber (double)no—
notMeteredbooleanno—
organizationIdstring (uuid) | nullno—
quotaReservationIdstring (uuid) | nullno—
quotaReservationReplayedbooleanno—
reasonstring | nullno—
subscriptionIdstring (uuid)no—
timestampstring (date-time)no—
updatedAtstring (date-time)no—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.UsageSummaryDto

PropertyTypeRequiredDescription
metadatamap<string, string> | nullno—
metricSummariesEssence.Payment.Billing.Application.DTOs.MetricUsageSummary[] | nullno—
organizationIdstring (uuid) | nullno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
subscriptionIdstring (uuid)no—
userIdstring (uuid)no—

Essence.Payment.Billing.Application.DTOs.UsageWarningDto

PropertyTypeRequiredDescription
alertThresholdPercentagenumber (double)no—
currentUsagenumber (double)no—
limitnumber (double)no—
messagestring | nullno—
metricTypeEssence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricTypeno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
unitstring | nullno—
usagePercentagenumber (double)no—

Essence.Payment.Billing.Application.DTOs.UseWearDeductionDto

PropertyTypeRequiredDescription
amountnumber (double)no—
appliedAtstring (date-time)no—
appliedByPartyIdstring (uuid)no—
consumerDisputeReasonstring | nullno—
consumerReviewedAtstring (date-time) | nullno—
jurisdictionstring | nullno—
legalBasisstring | nullno—
reviewStatusstring | nullno—
sellerStatedReasonstring | nullno—

Essence.Payment.Billing.Application.DTOs.VoidStrandedOnboardingSubscriptionsResultDto

PropertyTypeRequiredDescription
applicationsEssence.Payment.Billing.Application.DTOs.StrandedOnboardingApplicationDto[] | nullno—
dryRunbooleanno—
eligibleinteger (int32)no—
subscriptionsEssence.Payment.Billing.Application.DTOs.StrandedOnboardingSubscriptionDto[] | nullno—
voidedinteger (int32)no—

Essence.Payment.Billing.Application.DTOs.WriteOffApprovalDto

PropertyTypeRequiredDescription
amountAtApprovalnumber (double)no—
approvedAtstring (date-time)no—
approverRefstring | nullno—
rolestring | nullno—

Essence.Payment.Billing.Application.DTOs.WriteOffProposalDto

PropertyTypeRequiredDescription
accountIdstring (uuid)no—
accountKeystring | nullno—
accountKindstring | nullno—
ageDaysinteger (int32)no—
amountnumber (double)no—
anchoredAtstring (date-time) | nullno—
approvalsEssence.Payment.Billing.Application.DTOs.WriteOffApprovalDto[] | nullno—
auditAnchorReferencestring | nullno—
currencyCodestring | nullno—
executedAtstring (date-time) | nullno—
executedByRefstring | nullno—
idstring (uuid)no—
invoicesEssence.Payment.Billing.Application.DTOs.WriteOffProposalInvoiceDto[] | nullno—
justificationstring | nullno—
reasonCodestring | nullno—
rejectedByRefstring | nullno—
rejectionReasonstring | nullno—
requestedAtstring (date-time)no—
requestedByRefstring | nullno—
requiredApproverCountinteger (int32)no—
requiredTierstring | nullno—
requiresCfoSignOffbooleanno—
statusstring | nullno—

Essence.Payment.Billing.Application.DTOs.WriteOffProposalInvoiceDto

PropertyTypeRequiredDescription
invoiceIdstring (uuid)no—
invoiceNumberstring | nullno—
outstandingAmountnumber (double)no—

Essence.Payment.Billing.Application.Queries.AccountHealth.AccountHealthSignalDto

PropertyTypeRequiredDescription
normalisedValuenumber (double)no—
observedAtstring (date-time)no—
rawValuenumber (double)no—
signalKeystring | nullno—

Essence.Payment.Billing.Application.Queries.AccountHealth.AccountHealthSignalsResponse

PropertyTypeRequiredDescription
signalsEssence.Payment.Billing.Application.Queries.AccountHealth.AccountHealthSignalDto[] | nullno—
windowEndstring (date-time)no—
windowStartstring (date-time)no—

Essence.Payment.Billing.Application.Queries.Channel.RoutedOrganisationDto

PropertyTypeRequiredDescription
amountErrorstring | nullno—
commercialRoutestring | nullno—
currencystring | nullno—
instanceSkuCodestring | nullno—
licencePosturestring | nullno—
licensedSeatsinteger (int32) | nullno—
nextInvoiceDatestring (date-time) | nullno—
nextPeriodBuyAmountnumber (double) | nullno—
organizationDisplayNamestring | nullno—
organizationIdstring (uuid) | nullno—
paymentTermsDaysinteger (int32) | nullno—
statusstring | nullno—
userLicenceSkuCodestring | nullno—

Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerCurrencyPosition

PropertyTypeRequiredDescription
bucketstring | nullno—
byBucketmap<string, number (double)> | nullno—
currencyCodestring | nullno—
daysPastDueinteger (int32)no—
oldestDueDatestring (date-time)no—
openItemCountinteger (int32)no—
totalOutstandingnumber (double)no—

Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerReceivableItem

PropertyTypeRequiredDescription
bucketstring | nullno—
channelOrderIdstring (uuid) | nullno—
currencyCodestring | nullno—
daysPastDueinteger (int32)no—
dueDatestring (date-time)no—
invoiceDatestring (date-time)no—
invoiceIdstring (uuid)no—
invoiceNumberstring | nullno—
kindstring | nullno—
outstandingnumber (double)no—
statusstring | nullno—

Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerReceivablesPosition

PropertyTypeRequiredDescription
ageingBasisstring | nullno—
asOfstring (date-time)no—
itemsEssence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerReceivableItem[] | nullno—
partnerIdstring (uuid)no—
positionsEssence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerCurrencyPosition[] | nullno—
uninvoicedBuySellOrdersinteger (int32)no—
writtenOffEssence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerWrittenOff[] | nullno—

Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerWrittenOff

PropertyTypeRequiredDescription
amountnumber (double)no—
currencyCodestring | nullno—

Essence.Payment.Billing.Application.Queries.Commissions.CommissionDto

PropertyTypeRequiredDescription
commissionAmountnumber (double)no—
commissionRatenumber (double)no—
commissionTypestring | nullno—
currencystring | nullno—
earnedDatestring (date-time)no—
idstring (uuid)no—
invoiceIdstring (uuid) | nullno—
paidDatestring (date-time) | nullno—
partnerCodestring | nullno—
partnerIdstring (uuid)no—
paymentIdstring (uuid) | nullno—
payoutIdstring (uuid) | nullno—
productTypestring | nullno—
statusstring | nullno—
subscriptionIdstring (uuid) | nullno—
transactionAmountnumber (double)no—
transactionDatestring (date-time)no—

Essence.Payment.Billing.Application.Queries.Commissions.PendingBalanceDto

PropertyTypeRequiredDescription
commissionCountinteger (int32)no—
currencystring | nullno—
partnerIdstring (uuid)no—
pendingAmountnumber (double)no—

Essence.Payment.Billing.Application.Queries.CorporateGroups.CorporateGroupBillingRollupDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
basisstring | nullno—
completebooleanno—
entitiesEssence.Payment.Billing.Application.Queries.CorporateGroups.GroupEntityBillingDto[] | nullno—
excludedCountinteger (int32)no—
parentOrgIdstring (uuid)no—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
totalsEssence.Payment.Billing.Application.Queries.CorporateGroups.GroupCurrencyTotalDto[] | nullno—

Essence.Payment.Billing.Application.Queries.CorporateGroups.GroupCurrencyAmountDto

PropertyTypeRequiredDescription
creditednumber (double)no—
currencystring | nullno—
invoiceCountinteger (int32)no—
oneTimenumber (double)no—
subscriptionnumber (double)no—
totalnumber (double)no—
usagenumber (double)no—

Essence.Payment.Billing.Application.Queries.CorporateGroups.GroupCurrencyTotalDto

PropertyTypeRequiredDescription
creditednumber (double)no—
currencystring | nullno—
entityCountinteger (int32)no—
invoiceCountinteger (int32)no—
oneTimenumber (double)no—
subscriptionnumber (double)no—
totalnumber (double)no—
usagenumber (double)no—

Essence.Payment.Billing.Application.Queries.CorporateGroups.GroupEntityBillingDto

PropertyTypeRequiredDescription
amountsEssence.Payment.Billing.Application.Queries.CorporateGroups.GroupCurrencyAmountDto[] | nullno—
invoiceCountinteger (int32) | nullno—
isCrossBorderbooleanno—
organizationIdstring (uuid)no—
reasonstring | nullno—
residencyJurisdictionstring | nullno—
rolestring | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.Queries.Licences.OrganisationLicencePostureDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
causestring | nullno—
offboardedAtstring (date-time) | nullno—
organizationIdstring (uuid)no—
posturestring | nullno—
retentionEndsAtstring (date-time) | nullno—
sincestring (date-time) | nullno—
suspendedLicencesEssence.Payment.Billing.Application.Queries.Licences.SuspendedLicenceDto[] | nullno—

Essence.Payment.Billing.Application.Queries.Licences.SuspendedLicenceDto

PropertyTypeRequiredDescription
licenceFamilystring | nullno—
subscriptionIdstring (uuid)no—
suspendedAtUtcstring (date-time) | nullno—

Essence.Payment.Billing.Application.Queries.Marketplace.CloudMarketplaceSettlementBreakDto

PropertyTypeRequiredDescription
ageDaysinteger (int32)no—
importedAtUtcstring (date-time)no—
lineEssence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementLineDtono—
marketplaceCodestring | nullno—
reportReferencestring | nullno—

Essence.Payment.Billing.Application.Queries.Marketplace.CloudMarketplaceSettlementExceptionsDto

PropertyTypeRequiredDescription
breaksEssence.Payment.Billing.Application.Queries.Marketplace.CloudMarketplaceSettlementBreakDto[] | nullno—
countinteger (int32)no—
truncatedbooleanno—

Essence.Payment.Billing.Application.Queries.Marketplace.CloudMarketplaceSettlementPeriodCloseDto

PropertyTypeRequiredDescription
dispositionedCountinteger (int32)no—
isClosedbooleanno—
lineCountinteger (int32)no—
marketplaceCodestring | nullno—
matchedCountinteger (int32)no—
openCountinteger (int32)no—
periodEndUtcstring (date-time)no—
periodStartUtcstring (date-time)no—
reportCountinteger (int32)no—
reportReferencesstring[] | nullno—
statestring | nullno—

Essence.Payment.Billing.Application.Queries.Partners.CommissionSummaryDto

PropertyTypeRequiredDescription
averageCommissionAmountnumber (double)no—
currencystring | nullno—
earliestCommissionstring (date-time) | nullno—
excludedForeignCurrencyCommissionsinteger (int32)no—
latestCommissionstring (date-time) | nullno—
totalCommissionsinteger (int32)no—
totalEarnednumber (double)no—
totalPaidnumber (double)no—
totalPendingnumber (double)no—
totalVoidednumber (double)no—

Essence.Payment.Billing.Application.Queries.Partners.MonthlyTrendDto

PropertyTypeRequiredDescription
commissionCountinteger (int32)no—
monthinteger (int32)no—
monthNamestring | nullno—
payoutCountinteger (int32)no—
totalEarnednumber (double)no—
totalPaidnumber (double)no—
yearinteger (int32)no—

Essence.Payment.Billing.Application.Queries.Partners.PartnerFinancialReportDto

PropertyTypeRequiredDescription
commissionSummaryEssence.Payment.Billing.Application.Queries.Partners.CommissionSummaryDtono—
generatedAtstring (date-time)no—
monthlyTrendsEssence.Payment.Billing.Application.Queries.Partners.MonthlyTrendDto[] | nullno—
partnerCodestring | nullno—
partnerIdstring (uuid)no—
partnerNamestring | nullno—
payoutSummaryEssence.Payment.Billing.Application.Queries.Partners.PayoutSummaryDtono—
reportPeriodEndstring (date-time)no—
reportPeriodStartstring (date-time)no—
revenueShareBreakdownEssence.Payment.Billing.Application.Queries.Partners.RevenueShareBreakdownDto[] | nullno—
statusstring | nullno—

Essence.Payment.Billing.Application.Queries.Partners.PayoutSummaryDto

PropertyTypeRequiredDescription
averagePayoutAmountnumber (double)no—
currencystring | nullno—
lastPayoutDatestring (date-time) | nullno—
nextScheduledPayoutstring (date-time) | nullno—
oldestPendingManualFirstFailedAtstring (date-time) | nullno—
pendingManualCountinteger (int32)no—
pendingManualForeignCurrencyCountinteger (int32)no—
totalFailednumber (double)no—
totalPaidOutnumber (double)no—
totalPayoutsinteger (int32)no—
totalPendingnumber (double)no—
totalPendingManualnumber (double)no—

Essence.Payment.Billing.Application.Queries.Partners.RevenueShareBreakdownDto

PropertyTypeRequiredDescription
effectiveRatenumber (double)no—
productTypestring | nullno—
subscriptionTierstring | nullno—
totalCommissionsnumber (double)no—
totalRevenuenumber (double)no—
transactionCountinteger (int32)no—

Essence.Payment.Billing.Application.Queries.Receivables.AccountCollectionsDetail

PropertyTypeRequiredDescription
arrangementNotestring | nullno—
constituentsEssence.Payment.Billing.Application.Queries.Receivables.ReceivableConstituent[] | nullno—
escalationHistoryEssence.Payment.Billing.Application.Queries.Receivables.EscalationHistoryEntry[] | nullno—
holdCountinteger (int32)no—
ladderStageAtHoldinteger (int32)no—
positionEssence.Payment.Billing.Application.Queries.Receivables.AccountReceivablesPositionno—

Essence.Payment.Billing.Application.Queries.Receivables.AccountCollectionsDetailDto

PropertyTypeRequiredDescription
detailEssence.Payment.Billing.Application.Queries.Receivables.AccountCollectionsDetailno—
stateEssence.Payment.Billing.Application.DTOs.AccountCollectionsStateDtono—
writeOffProposalsEssence.Payment.Billing.Application.DTOs.WriteOffProposalDto[] | nullno—

Essence.Payment.Billing.Application.Queries.Receivables.AccountReceivablesPosition

PropertyTypeRequiredDescription
accountIdstring (uuid)no—
accountKeystring | nullno—
accountKindEssence.Payment.Billing.Domain.Aggregates.Collections.CollectionsAccountKindno—
bucketEssence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucketno—
currencyCodestring | nullno—
daysPastDueinteger (int32)no—
holdReasonstring | nullno—
holdUntilstring (date-time) | nullno—
lastContactAtstring (date-time) | nullno—
lastContactLadderEssence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderKindno—
lastContactStageinteger (int32) | nullno—
oldestBasisDatestring (date-time)no—
openItemCountinteger (int32)no—
ownerRefstring | nullno—
ownershipEssence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderOwnershipno—
pastEscalationWindowbooleanno—
suppressionReasonstring | nullno—
totalOutstandingnumber (double)no—
writtenOffValuenumber (double)no—

Essence.Payment.Billing.Application.Queries.Receivables.AgeingBandTotal

PropertyTypeRequiredDescription
accountCountinteger (int32)no—
bucketEssence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucketno—
valuenumber (double)no—

Essence.Payment.Billing.Application.Queries.Receivables.CollectionsPerformance

PropertyTypeRequiredDescription
billedInWindownumber (double)no—
closingReceivablesnumber (double)no—
collectedInWindownumber (double)no—
currencyCodestring | nullno—
daysSalesOutstandingnumber (double) | nullno—
openingReceivablesnumber (double)no—
overNinetyValuenumber (double)no—
pendingWriteOffValuenumber (double)no—
recoveryRatenumber (double) | nullno—
writeOffRatenumber (double) | nullno—
writtenOffInWindownumber (double)no—

Essence.Payment.Billing.Application.Queries.Receivables.CollectionsWorklistPage

PropertyTypeRequiredDescription
asAtstring (date-time)no—
basisDescriptionstring | nullno—
currencySubtotalsmap<string, number (double)> | nullno—
positionsEssence.Payment.Billing.Application.Queries.Receivables.AccountReceivablesPosition[] | nullno—
totalMatchinginteger (int32)no—
truncatedbooleanno—

Essence.Payment.Billing.Application.Queries.Receivables.CurrencyAgeingSummary

PropertyTypeRequiredDescription
bandsEssence.Payment.Billing.Application.Queries.Receivables.AgeingBandTotal[] | nullno—
currencyCodestring | nullno—
totalAccountsinteger (int32)no—
totalOutstandingnumber (double)no—

Essence.Payment.Billing.Application.Queries.Receivables.EscalationHistoryEntry

PropertyTypeRequiredDescription
attemptedAtstring (date-time)no—
currencyCodestring | nullno—
detailstring | nullno—
ladderEssence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderKindno—
nextActionDatestring (date-time) | nullno—
outcomeEssence.Payment.Billing.Domain.Aggregates.Collections.EscalationOutcomeno—
stageinteger (int32)no—
totalOutstandingnumber (double)no—

Essence.Payment.Billing.Application.Queries.Receivables.ReceivableConstituent

PropertyTypeRequiredDescription
bucketEssence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucketno—
currencyCodestring | nullno—
daysPastDueinteger (int32)no—
dueDatestring (date-time)no—
invoiceDatestring (date-time)no—
invoiceIdstring (uuid)no—
invoiceNumberstring | nullno—
outstandingnumber (double)no—
statusEssence.Payment.Billing.Domain.Aggregates.Invoice.InvoiceStatusno—
typeEssence.Payment.Billing.Domain.Aggregates.Invoice.InvoiceTypeno—

Essence.Payment.Billing.Application.Queries.Receivables.ReceivablesAgeingSummary

PropertyTypeRequiredDescription
asAtstring (date-time)no—
basisDescriptionstring | nullno—
currenciesEssence.Payment.Billing.Application.Queries.Receivables.CurrencyAgeingSummary[] | nullno—
scannedItemCountinteger (int32)no—
truncatedbooleanno—

Essence.Payment.Billing.Application.Queries.SeatReconciliation.SeatDriftExposureDayDto

PropertyTypeRequiredDescription
billedSeatsinteger (int32) | nullno—
daystring (date-time)no—
exposurenumber (double) | nullno—
lastObservedAtstring (date-time) | nullno—
observationsinteger (int32)no—
observedbooleanno—
overSeatsinteger (int32) | nullno—
peakOverSeatsinteger (int32) | nullno—
perSeatPerMonthnumber (double) | nullno—
seatDeltainteger (int32) | nullno—
syncedSeatsinteger (int32) | nullno—

Essence.Payment.Billing.Application.Queries.SeatReconciliation.SeatDriftExposureDto

PropertyTypeRequiredDescription
asOfstring (date-time)no—
contractVersionstring | nullno—
costUnavailableReasonstring | nullno—
cumulativeExposurenumber (double) | nullno—
currencystring | nullno—
daysEssence.Payment.Billing.Application.Queries.SeatReconciliation.SeatDriftExposureDayDto[] | nullno—
exposureCompletebooleanno—
fromstring (date-time)no—
observedDaysinteger (int32)no—
organizationIdstring (uuid)no—
outstandingEssence.Payment.Billing.Application.Queries.SeatReconciliation.SeatDriftExposureDayDtono—
overProvisionedSeatDaysinteger (int32)no—
overSeatDaysinteger (int32)no—
tostring (date-time)no—
underBilledDaysinteger (int32)no—
unobservedDaysinteger (int32)no—
unpricedUnderBilledDaysinteger (int32)no—

Essence.Payment.Billing.Application.Queries.SeatReconciliation.SeatReconciliationHistoryDto

PropertyTypeRequiredDescription
alertsEssence.Payment.Billing.Application.DTOs.SeatDriftAlertDto[] | nullno—
asOfstring (date-time)no—
decisionsEssence.Payment.Billing.Application.DTOs.SeatResolutionDecisionDto[] | nullno—
organizationIdstring (uuid)no—

Essence.Payment.Billing.Application.Queries.Subledger.BillingsSnapshot

PropertyTypeRequiredDescription
billingEventIds(string (uuid))[] | nullno—
invoicesEssence.Payment.Billing.Application.Queries.Subledger.SubledgerInvoice[] | nullno—
totalnumber (double)no—

Essence.Payment.Billing.Application.Queries.Subledger.DiscountApprovalAttribution

0 | 1 | 2 with no declared properties.

Essence.Payment.Billing.Application.Queries.Subledger.DiscountObservation

PropertyTypeRequiredDescription
approvalLevelstring | nullno—
approvedBystring | nullno—
approvedValuenumber (double) | nullno—
attributionEssence.Payment.Billing.Application.Queries.Subledger.DiscountApprovalAttributionno—
authorisationReferencestring | nullno—
dealDeskCaseIdstring (uuid) | nullno—
referencestring | nullno—
valuenumber (double)no—
withinApprovalPolicybooleanno—

Essence.Payment.Billing.Application.Queries.Subledger.EntitlementObservation

PropertyTypeRequiredDescription
estimatedValuenumber (double)no—
hasActiveSubscriptionbooleanno—
isFromLapsedPlanbooleanno—
referencestring | nullno—
skuCodestring | nullno—

Essence.Payment.Billing.Application.Queries.Subledger.PricedSkuObservation

PropertyTypeRequiredDescription
hasMeteringPathbooleanno—
pricenumber (double)no—
skuCodestring | nullno—

Essence.Payment.Billing.Application.Queries.Subledger.ReceivablesSnapshot

PropertyTypeRequiredDescription
itemsEssence.Payment.Billing.Application.Queries.Subledger.SubledgerItem[] | nullno—
oldestItemAgeDaysinteger (int32)no—
totalnumber (double)no—

Essence.Payment.Billing.Application.Queries.Subledger.SubledgerInvoice

PropertyTypeRequiredDescription
hasPostedJournalbooleanno—
referencestring | nullno—
valuenumber (double)no—

Essence.Payment.Billing.Application.Queries.Subledger.SubledgerItem

PropertyTypeRequiredDescription
amountnumber (double)no—
labelstring | nullno—
referencestring | nullno—

Essence.Payment.Billing.Application.Queries.Subledger.UsageObservation

PropertyTypeRequiredDescription
hasInvoiceLinebooleanno—
referencestring | nullno—
skuCodestring | nullno—
valuenumber (double)no—

Essence.Payment.Billing.Application.Queries.Usage.VerificationCheckUsageDto

PropertyTypeRequiredDescription
itemsEssence.Payment.Billing.Application.Queries.Usage.VerificationCheckUsageLineDto[] | nullno—
propertyIdstring | nullno—
recordedCountinteger (int32)no—
requestIdstring | nullno—
subscriptionIdstring (uuid)no—
truncatedbooleanno—

Essence.Payment.Billing.Application.Queries.Usage.VerificationCheckUsageLineDto

PropertyTypeRequiredDescription
amountMinorinteger (int64) | nullno—
applicantIdstring | nullno—
checkstring | nullno—
currencystring | nullno—
includedAllowancenumber (double) | nullno—
includedInPlanbooleanno—
metricCodestring | nullno—
occurredAtstring (date-time)no—
pricingstring | nullno—
propertyIdstring | nullno—
quantitynumber (double)no—
skustring | nullno—
unitPriceMinorinteger (int64) | nullno—
usageRecordIdstring (uuid)no—
verificationIdstring | nullno—

Essence.Payment.Billing.Application.Services.EntitlementEvidenceIndexReadiness

PropertyTypeRequiredDescription
indexesmap<string, string> | nullno—
readybooleanno—

Essence.Payment.Billing.Contracts.Entitlements.CapacityCheckRequestDto

PropertyTypeRequiredDescription
currentCountinteger (int64)no—
featureCodestring | nullno—
organizationIdstring (uuid) | nullno—
requestedinteger (int64)no—
userIdstring (uuid)no—

Essence.Payment.Billing.Contracts.Entitlements.CapacityCheckResponseDto

PropertyTypeRequiredDescription
addOninteger (int64)no—
allowanceinteger (int64) | nullno—
allowedbooleanno—
currentCountinteger (int64)no—
decisionstring | nullno—
includedinteger (int64) | nullno—
messagestring | nullno—
remaininginteger (int64) | nullno—
requestedinteger (int64)no—
upgradeMessagestring | nullno—

Essence.Payment.Billing.Contracts.Entitlements.CheckEntitlementRequestDto

PropertyTypeRequiredDescription
featureCodestring | nullno—
organizationIdstring (uuid)no—
pricingPlanIdstring (uuid) | nullno—

Essence.Payment.Billing.Contracts.Entitlements.CheckEntitlementResponseDto

PropertyTypeRequiredDescription
hasAccessbooleanno—
quotaExhaustedbooleanno—
reasonstring | nullno—
requiredPlanTierstring | nullno—

Essence.Payment.Billing.Contracts.Entitlements.ModuleProvisioningEntitlementResponseDto

PropertyTypeRequiredDescription
moduleSlotLimitinteger (int32)no—
requiredPlanTierstring | nullno—
subscriptionActivebooleanno—

Essence.Payment.Billing.Contracts.RevenueClassification.RevenueTenantType

1 | 2 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsAccountKind

1 | 2 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderKind

1 | 2 | 3 | 4 | 5 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderOwnership

1 | 2 | 3 | 4 | 5 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Collections.EscalationOutcome

1 | 2 | 3 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucket

0 | 1 | 2 | 3 | 4 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Collections.WriteOffApproverRole

1 | 2 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Collections.WriteOffProposalStatus

1 | 2 | 3 | 4 | 5 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Collections.WriteOffReasonCode

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.ConsumerRemedySettlement.ConsumerRemedyType

0 | 1 | 2 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Invoice.InvoiceStatus

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Invoice.InvoiceType

1 | 2 | 3 | 4 | 5 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.RetainerTrustFunding.RetainerFeeBasis

0 | 1 | 2 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Subscription.CollectionMethod

0 | 1 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.Subscription.SubscriptionClass

0 | 1 with no declared properties.

Essence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricType

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 with no declared properties.

Essence.Payment.Billing.Domain.ValueObjects.KAnonCount

PropertyTypeRequiredDescription
floorinteger (int32)no—
suppressedbooleanno—
valueinteger (int32) | nullno—

Essence.Platform.Contracts.Pagination.CursorResult`1[[Essence.Payment.Billing.Application.DTOs.PayoutDto, Essence.Payment.Billing.Application, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]

PropertyTypeRequiredDescription
hasMorebooleanno—
itemsEssence.Payment.Billing.Application.DTOs.PayoutDto[] | nullno—
nextCursorstring | nullno—
pageSizeinteger (int32)no—
previousCursorstring | nullno—

Essence.Platform.Contracts.Pagination.CursorResult`1[[Essence.Payment.Billing.Application.Queries.Channel.RoutedOrganisationDto, Essence.Payment.Billing.Application, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]

PropertyTypeRequiredDescription
hasMorebooleanno—
itemsEssence.Payment.Billing.Application.Queries.Channel.RoutedOrganisationDto[] | nullno—
nextCursorstring | nullno—
pageSizeinteger (int32)no—
previousCursorstring | nullno—

Essence.Platform.Contracts.Pagination.PagedResult`1[[Essence.Payment.Billing.Application.DTOs.SkuSummaryDto, Essence.Payment.Billing.Application, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]

PropertyTypeRequiredDescription
hasNextPagebooleanno—
hasPreviousPagebooleanno—
itemsEssence.Payment.Billing.Application.DTOs.SkuSummaryDto[] | nullno—
pageNumberinteger (int32)no—
pageSizeinteger (int32)no—
totalCountinteger (int32)no—
totalPagesinteger (int32)no—

Microsoft.AspNetCore.Mvc.ProblemDetails

PropertyTypeRequiredDescription
detailstring | nullno—
instancestring | nullno—
statusinteger (int32) | nullno—
titlestring | nullno—
typestring | nullno—

Built with ❤️ for developers · Service status