Essence Payment & Billing API
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
/api/v1/orgs/{organizationId}/access-to-work/awardsTakes 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.RecordAccessToWorkAwardRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
adjustmentId | path | string | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/orgs/{organizationId}/access-to-work/reimbursement-claimsReads every reimbursement claim this organisation has made, most recent first.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/orgs/{organizationId}/access-to-work/reimbursement-claimsSubmits 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.SubmitReimbursementClaimRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
adjustmentId | path | string | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/orgs/{organizationId}/access-to-work/reimbursement-claims/{claimId}/decisionRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
claimId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.RecordReimbursementDecisionRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/orgs/{organizationId}/access-to-work/reimbursement-claims/{claimId}/disbursementRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
claimId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.RecordReimbursementDisbursementRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsAccountHealthSignals
/api/v1/accounts/{organizationId}/health-signalsThe invoice and payment posture of organizationId over the trailing year.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsAdminNetTermsRefunds
/api/v1/billing/admin/invoices/{invoiceId}/net-terms-refundsRefunds 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
invoiceId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.AdminNetTermsRefundsController.NetTermsRefundRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsAdminOnboardingRecovery
/api/v1/admin/subscriptions/onboarding/stranded/voidVoids 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.
Essence.Payment.Billing.Api.Controllers.AdminVoidStrandedOnboardingRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsAdminOrganisationCommercialProfile
/api/v1/billing/admin/organisations/{organizationId}/commercial-profileThe organisation's commercial profile; 404 `commercial_profile.not_found` when it has none.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.AdminOrganisationCommercialProfileController.ApproveInvoiceCollectionRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/admin/organisations/{organizationId}/commercial-profile/payment-termsSets (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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.AdminOrganisationCommercialProfileController.SetPaymentTermsRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsAdminRefundQueue
/api/v1/billing/admin/refund-queueThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
includeResolved | query | boolean | no | — |
limit | query | integer (int32) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/admin/refund-queue/{invoiceId}/resolveRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
invoiceId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.AdminRefundQueueController.ResolveRefundRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsAdminSubscriptions
/api/v1/admin/subscriptionsSeeds 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.
Essence.Payment.Billing.Api.Controllers.AdminSeedSubscriptionRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/admin/subscriptions/entitlements/reprovisionRecomputes 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.
Essence.Payment.Billing.Api.Controllers.AdminReprovisionEntitlementsRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsAdminTaxPendingQueue
/api/v1/billing/admin/tax-pending-queueThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
includeNotYetEscalated | query | boolean | no | — |
limit | query | integer (int32) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/admin/tax-pending-queue/{invoiceId}/determine-taxDetermines 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
invoiceId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.AdminTaxPendingQueueController.DetermineTaxRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsAnalytics
/api/v1/Analytics/partners/{partnerId}Get comprehensive partner analytics.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | — |
periodStart | query | string (date-time) | no | — |
periodEnd | query | string (date-time) | no | — |
includeMonthlyBreakdown | query | boolean | no | — |
includeTopPlans | query | boolean | no | — |
topPlansCount | query | integer (int32) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Analytics/partners/{partnerId}/exportExport partner analytics to CSV.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | — |
periodStart | query | string (date-time) | no | — |
periodEnd | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Analytics/partners/{partnerId}/summaryGet partner dashboard summary.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsAppRevenueReassignments
/api/v1/billing/app-revenue-reassignments/executeSettle 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.
Essence.Payment.Billing.Api.Controllers.AppRevenueReassignmentRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/app-revenue-reassignments/prepareCheck 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.
Essence.Payment.Billing.Api.Controllers.AppRevenueReassignmentRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsBillingActuals
/api/v1/BillingActuals/organizations/{organizationId}Get realised billing actuals for an organisation over a period.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation to scope actuals to. |
periodStart | query | string (date-time) | no | Inclusive window start (UTC); defaults to one year before periodEnd. |
periodEnd | query | string (date-time) | no | Inclusive window end (UTC); defaults to now. |
freshnessBudgetHours | query | integer (int32) | no | Freshness budget driving the staleness flag (default 24h). |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsCapacity
/api/v1/internal/capacity/checkAnswers 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.
Essence.Payment.Billing.Contracts.Entitlements.CapacityCheckRequestDtoasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsChainParticipants
/api/v1/chain-participantsRegisters 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.
Essence.Payment.Billing.Application.Commands.ChainParticipants.RegisterChainParticipantCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
orgId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/chain-participants/{participantId}/commercial-contactRecords the invoicing party and relationship manager shown on a channel customer's invoice ledger (AC-07.067).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
participantId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.ChainParticipants.SetChainParticipantCommercialContactCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsChannelBilling
/api/v1/channel-commissionsList channel commissions for the authenticated partner.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dateFrom | query | string (date-time) | no | — |
dateTo | query | string (date-time) | no | — |
status | query | string | no | — |
Request body
No request body.
Responses
/api/v1/channel-commissions/statementGet a monthly commission statement for the authenticated partner.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
periodStart | query | string (date-time) | no | — |
periodEnd | query | string (date-time) | no | — |
Request body
No request body.
Responses
/api/v1/channel-ordersList channel orders for the authenticated partner.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dateFrom | query | string (date-time) | no | — |
dateTo | query | string (date-time) | no | — |
status | query | string | no | — |
Request body
No request body.
Responses
/api/v1/channel-orders/{id}Get detail for a single channel order.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | Channel order identifier |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/channel-orders/{id}/invoicesList invoices for a channel order.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | Channel order identifier |
Request body
No request body.
Responses
/api/v1/channel-payouts/reconciliationFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
periodStart | query | string (date-time) | no | — |
periodEnd | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsChannelCommissionQueries
/api/v1/channel-commissions/queriesThe 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
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/channel-commissions/queries/{queryId}/withdrawWithdraws one of the caller's open queries. Any hold is released.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
queryId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/channel-commissions/{commissionId}/queriesRaises 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
commissionId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.RaiseCommissionLineQueryRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsChannelReceivables
/api/v1/channel-orders/receivablesWhat 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
Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerReceivablesPositionMicrosoft.AspNetCore.Mvc.ProblemDetailsChannelRoutedOrganisations
/api/v1/partners/{partnerId}/routed-organisationsOne page of the organisations partnerId pays for (`{ items, nextCursor }`).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | — |
cursor | query | string | no | — |
limit | query | integer (int32) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsCisDisbursements
/api/v1/disbursements/cisReleases 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.
Essence.Payment.Billing.Api.Controllers.ReleaseCisPaymentRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/disbursements/cis/organizations/{organizationId}/policyReads 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/disbursements/cis/organizations/{organizationId}/policyStores or replaces an organisation's CIS settings.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.SaveCisContractorPolicyRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/disbursements/cis/pay-runs/{payRunId}Reads every CIS payment released on one pay run.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
payRunId | path | string | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/disbursements/cis/verificationsTakes 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.
Essence.Payment.Billing.Api.Controllers.RecordCisVerificationRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
verificationId | path | string | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/disbursements/cis/{paymentId}Reads one released CIS payment, with its binding and deduction statement.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
paymentId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/disbursements/cis/{paymentId}/anchorRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
paymentId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.RecordCisAnchorRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsCloudMarketplaceSettlements
/api/v1/marketplace-fulfilment/{marketplaceCode}/settlements/exceptionsThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
marketplaceCode | path | string | yes | — |
limit | query | integer (int32) | no | — |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Queries.Marketplace.CloudMarketplaceSettlementExceptionsDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/marketplace-fulfilment/{marketplaceCode}/settlements/importReads 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
marketplaceCode | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.CloudMarketplaceSettlementsController.ImportSettlementRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementImportDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
marketplaceCode | path | string | yes | — |
lineId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.CloudMarketplaceSettlementsController.DispositionRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementLineDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
marketplaceCode | path | string | yes | — |
lineId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.CloudMarketplaceSettlementsController.ReassignOwnerRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementLineDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
marketplaceCode | path | string | yes | — |
periodStartUtc | query | string (date-time) | no | — |
periodEndUtc | query | string (date-time) | no | — |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Queries.Marketplace.CloudMarketplaceSettlementPeriodCloseDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/marketplace-fulfilment/{marketplaceCode}/settlements/{reportReference}One imported report with every line and its disposition.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
marketplaceCode | path | string | yes | — |
reportReference | path | string | yes | — |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementImportDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsCommissionQueryAdjudication
/api/v1/commission-queriesEvery 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
status | query | string | no | Optional: `Open`, `Withdrawn` or `Upheld`. |
limit | query | integer (int32) | no | 1 to 200 (default 100). |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/commission-queries/{id}/upholdUpholds 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.UpholdCommissionLineQueryRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsCommissions
/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | Partner ID (GUID) |
startDate | query | string (date-time) | no | Optional start date filter (ISO 8601 format) |
endDate | query | string (date-time) | no | Optional end date filter (ISO 8601 format) |
status | query | string | no | Optional status filter. Valid values: Pending, Paid, Voided, Reversed |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Queries.Commissions.CommissionDto[]Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/commissions/partner/{partnerId}/pending-balanceGets 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | Partner ID (GUID) |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Queries.Commissions.PendingBalanceDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | Commission ID (GUID) |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Queries.Commissions.CommissionDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsConsumerRemedies
/api/v1/consumer-remediesFR-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.
Essence.Payment.Billing.Application.Commands.ConsumerRemedies.RecordConsumerRemedyCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/consumer-remedies/mineLists the calling consumer's own claim outcomes.
Authentication:Bearer (the document-wide requirement)
Parameters
Takes no parameters.
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/consumer-remedies/{id}/deductionFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.ConsumerRemedies.ApplyUseWearDeductionCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/consumer-remedies/{id}/deductionFR-14.224 — the seller withdraws the deduction, conceding the full gross agreed remedy.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/consumer-remedies/{id}/deduction/reviewFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.ConsumerRemedies.ReviewUseWearDeductionCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/consumer-remedies/{id}/reconcile-ownershipFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.ConsumerRemedies.ReconcileRemedyOwnershipCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/consumer-remedies/{id}/settleFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsCoolingOffSettlements
/api/v1/billing/cooling-off-settlementsEvery cooling-off settlement the provider in `X-Organization-Id` recorded (its billing administrators only).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/cooling-off-settlementsRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.InitiateCoolingOffCancellationRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/cooling-off-settlements/mineThe 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
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/cooling-off-settlements/{id}/releaseRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ReleaseCoolingOffRefundRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsCorporateGroupBilling
/api/v1/billing/corporate-groups/{parentOrgId}/rollupThe group's invoiced position for one calendar month.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
parentOrgId | path | string (uuid) | yes | The parent organisation the group is rooted at. |
period | query | string | no | The month as `YYYY-MM`; the current UTC month when omitted. |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Queries.CorporateGroups.CorporateGroupBillingRollupDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsCreditNotes
/api/v1/credit-notesThe 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
/api/v1/credit-notes/{id}One credit note.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/credit-notes/{id}/pdfA credit note's PDF.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/invoices/{invoiceId}/credit-notesThe credit notes issued against an invoice the caller may read.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
invoiceId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsCspReport
/api/v1/csp-reportReceives 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
DealTerms
/api/v1/deal-terms/by-subscription/{subscriptionId}The approval a subscription redeemed, if any.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | path | string (uuid) | yes | The subscription. |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.DTOs.ApprovedDealTermsDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsDeveloperApiPlans
/api/v1/subscriptions/developer-api/tiersThe 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
/api/v1/subscriptions/developer-api/upgradeBuys 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.
Essence.Payment.Billing.Api.Controllers.UpgradeDeveloperApiPlanRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/subscriptions/developer-api/upgrade-requestsAsks 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.
Essence.Payment.Billing.Api.Controllers.RequestDeveloperApiPlanUpgradeRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/subscriptions/developer-api/upgrade-requests/{requestId}/decisionRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
requestId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.DecideDeveloperApiPlanUpgradeRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsEnterpriseContracts
/api/v1/enterprise-contractsOriginate 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.
Essence.Payment.Billing.Application.Commands.Enterprise.CreateEnterpriseContractCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/enterprise-contracts/{id}/activateActivate 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Enterprise.ActivateEnterpriseContractCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/enterprise-contracts/{id}/amendAmend 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Enterprise.AmendEnterpriseContractCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/enterprise-contracts/{id}/dunning/advanceAdvance 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Enterprise.AdvanceEnterpriseDunningCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/enterprise-contracts/{id}/dunning/cureCure 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsEntitlements
/api/v1/Entitlements/checkChecks 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.
Essence.Payment.Billing.Contracts.Entitlements.CheckEntitlementRequestDtoasapplication/*+json,application/json,text/json
Responses
/api/v1/Entitlements/{organizationId}/module-provisioningResolves 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
FamilyBilling
/api/v1/billing/family/rehomeRe-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.
Essence.Payment.Billing.Application.DTOs.RehomeDepartingMemberRequestDtoasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsFamilyMemberships
/api/v1/family-membershipsOpen 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.
Essence.Payment.Billing.Application.Commands.Family.OpenFamilyRosterCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
userId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/family-memberships/mineThe 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
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/family-memberships/{subscriptionId}/membersInvite 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Family.InviteFamilyMemberCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | path | string (uuid) | yes | — |
memberId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/family-memberships/{subscriptionId}/members/{memberId}/acceptAccept 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | path | string (uuid) | yes | — |
memberId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Family.AcceptFamilyInviteCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsGrandfatheredCohortReport
/api/v1/billing/grandfather-cohort-reportThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
supersedeReference | query | string | no | One cohort, by the upstream EPIC 79 supersede decision's own reference. Omit for every cohort. |
asOf | query | string (date-time) | no | Report as at this instant rather than now, so last month's figures can be re-run and give last month's answer. |
churnRateOnExpiry | query | number (double) | no | The 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/grandfather-cohort-report/exportThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
supersedeReference | query | string | no | — |
asOf | query | string (date-time) | no | — |
churnRateOnExpiry | query | number (double) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsGrandfatherPriceLocks
/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ApplyGrandfatherPriceLockRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ReleaseGrandfatherPriceLockRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsGroupSchemeBilling
/api/v1/billing/group-schemes/{schemeId}/aggregated-invoicesWhat 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
schemeId | path | string | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/group-schemes/{schemeId}/aggregated-invoicesIssues 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
schemeId | path | string | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/group-schemes/{schemeId}/billing-configurationHow 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
schemeId | path | string | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/group-schemes/{schemeId}/billing-configurationSets, 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
schemeId | path | string | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ConfigureGroupSchemeBillingRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsGroupSchemePremium
InternalBillingDocuments
/api/v1/internal/billing-documents/{kind}/{id}/pdfThe PDF of an invoice or credit note, for recipientUserId only if they are its payer.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
kind | path | string | yes | — |
id | path | string (uuid) | yes | — |
recipientUserId | query | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsInvoices
/api/v1/InvoicesList invoices for the authenticated user.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer (int32) | no | 1-based page number. |
pageSize | query | integer (int32) | no | Number of records per page (max 100). |
status | query | string | no | Optional status filter: Pending, Paid, Overdue, Draft, Canceled. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/InvoicesCreate 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.
Essence.Payment.Billing.Application.Commands.Invoices.CreateInvoiceCommandasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.InvoiceDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Invoices/usageGenerate 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.
Essence.Payment.Billing.Application.Commands.Invoices.GenerateUsageInvoiceCommandasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.InvoiceDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Invoices/{id}Get an invoice by ID.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.DTOs.InvoiceDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Invoices/{id}/downloadDownload 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | Invoice ID |
Request body
No request body.
Responses
string (binary)Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Invoices/{id}/download-urlGet 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | Invoice ID |
expiryMinutes | query | integer (int32) | no | URL 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
unspecifiedMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Invoices/{id}/pdfDownload 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | Invoice ID |
Request body
No request body.
Responses
string (binary)Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Invoices/{id}/resendResend 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Invoices/{id}/voidVoid 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.VoidInvoiceRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsLevyAccounts
/api/v1/levy-accounts/approved-providersThe 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
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/approved-providersRegisters 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.
Essence.Payment.Billing.Api.Controllers.RegisterApprovedProviderRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/funded-standardsThe 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
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/funded-standardsRegisters 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.
Essence.Payment.Billing.Api.Controllers.RegisterFundedStandardRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/mineReads the calling organisation's levy account: balances, ledger and allocations.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | The 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/mine/allocationsCommits 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.LevyAllocationRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/mine/completion-auditsThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/mine/reconciliationThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/completionRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
apprenticeshipId | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ApprenticeshipCompletionRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/early-leaverRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
apprenticeshipId | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.EarlyLeaverRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/milestonesOpens 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
apprenticeshipId | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ScheduleMilestonesRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/milestones/{milestoneCode}/achievementRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
apprenticeshipId | path | string | yes | — |
milestoneCode | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.MilestoneAchievementRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/milestones/{milestoneCode}/drawdownsReleases 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
apprenticeshipId | path | string | yes | — |
milestoneCode | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.MilestoneDrawdownRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/{organizationId}/apprenticeships/{apprenticeshipId}/milestones/{milestoneCode}/provider-paymentsRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
apprenticeshipId | path | string | yes | — |
milestoneCode | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ProviderPaymentRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/levy-accounts/{organizationId}/ledger-entriesRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.LevyMovementRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMarketplaceFulfilment
/api/v1/marketplace-fulfilment/{marketplaceCode}/activationsResolves 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
marketplaceCode | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.MarketplaceFulfilmentController.ActivateMarketplacePurchaseRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.Commands.Marketplace.MarketplaceActivationResultDtoEssence.Payment.Billing.Application.Commands.Marketplace.MarketplaceActivationResultDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMarketplaceLifecycleNotifications
/api/v1/marketplace-fulfilment/{marketplaceCode}/lifecycle-notificationsReceives 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
marketplaceCode | path | string | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMarketplacePayoutSettlements
/api/v1/payouts/partners/{partnerId}/marketplace-settlementsLists 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | The Billing partner id the payouts were made to. |
from | query | string (date-time) | no | Start of the window (UTC, inclusive). Defaults to 365 days before to. |
to | query | string (date-time) | no | End of the window (UTC, exclusive). Defaults to now. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMerge
/api/v1/billing/merge/{mergeSessionId}/dispositionReturns 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
mergeSessionId | path | string (uuid) | yes | — |
retiredAccountId | query | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsModuleSubscriptions
/api/v1/module-subscriptionsList 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | The active organisation, sent as `X-Organization-Id`. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/module-subscriptions/quoteFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | The active organisation, sent as `X-Organization-Id`. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ModuleSubscriptionQuoteRequestDtoasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/module-subscriptions/{id}Get a specific module subscription by ID.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | Module subscription identifier. |
X-Organization-Id | header | string (uuid) | no | The active organisation, sent as `X-Organization-Id`. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/module-subscriptions/{id}/cancelCancel 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | Module subscription identifier to cancel. |
X-Organization-Id | header | string (uuid) | no | The active organisation, sent as `X-Organization-Id`. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrganisationLicenceContext
/api/v1/billing/organisations/{organizationId}/licence-contextThe licence context of organizationId.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsOrganisationLicencePosture
/api/v1/billing/organisations/{organizationId}/licence-postureThe licence posture of organizationId.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsOrganizationBillingDetails
/api/v1/billing/organization-detailsReads the active organisation's billing details (organisation billing administrators only). `recorded: false` when none have been recorded.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/organization-detailsRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.SetOrganizationBillingDetailsRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrganizationWholesaleRates
/api/v1/organizations/{organizationId}/modules/{moduleId}/wholesale-rateReturns 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The sponsoring organisation. Must match the caller's tenant. |
moduleId | path | string | yes | Module identifier (resolves against the arrangement's feature set). |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrgBillingCatalogue
/api/v1/billing/catalogue/{moduleId}/pricingReads 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
moduleId | path | string | yes | The module identifier from the module registry. |
X-Organization-Id | header | string (uuid) | no | The 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrgBillingConsumption
/api/v1/billing/consumption/metersReads the calling organisation's usage meters and projected end-of-period cost across its active subscriptions.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | The 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrgBillingCredits
/api/v1/billing/credits/balanceReads 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | The 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/credits/statementDownloads the calling organisation's monthly credit statement as CSV or PDF (AC-07.062).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | The 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. |
period | query | string | no | The statement month as `YYYY-MM` (the portal's month picker's own value). |
format | query | string | no | `csv` or `pdf`. |
Request body
No request body.
Responses
string (binary)Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrgBillingDunning
/api/v1/billing/dunningReads 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | The 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrgBillingEnterpriseAgreement
/api/v1/billing/enterprise-agreement/overviewReads 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | The 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrgBillingInvoiceDetail
/api/v1/billing/invoices/{invoiceId}The invoice, in the org invoice list's line shape.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
invoiceId | path | string (uuid) | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrgBillingInvoices
/api/v1/billing/invoicesLists the calling organisation's issued invoices, newest first.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | The active organisation, sent by the portal as `X-Organization-Id` and verified against the caller's own org claim and administrator role. |
limit | query | integer (int32) | no | Most rows to return (bounded server-side). |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrgBillingSubscription
/api/v1/billing/subscriptionReads 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | The 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/subscription/modules/{offeringId}/cancelCancels 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
offeringId | path | string (uuid) | yes | The marketplace offering whose install is being cancelled. |
X-Organization-Id | header | string (uuid) | no | The active organisation, sent as `X-Organization-Id`. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrgSeatLifecycle
/api/v1/billing/seat-lifecycle/my-noticesReads 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer (int32) | no | Maximum notices, most recent first. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-lifecycle/organizations/{organizationId}/bulk-reclaimReclaims several seats in one operation, reporting per-row outcomes.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation whose seats they are. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.BulkReclaimSeatsRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-lifecycle/organizations/{organizationId}/change-logReads the organisation's seat-change log — the access-review feed, deliberately separate from the billing CSV.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation whose seat movements to read. |
limit | query | integer (int32) | no | Maximum rows, most recent first. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-lifecycle/organizations/{organizationId}/policyReads the organisation's configurable reclaim defaults.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-lifecycle/organizations/{organizationId}/policySets the organisation's configurable reclaim defaults.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.SeatReclaimPolicyRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-lifecycle/organizations/{organizationId}/previewReads 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation whose seat it is. |
leaverRef | query | string (uuid) | no | The departing holder (opaque org-user reference). |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-lifecycle/organizations/{organizationId}/reclaimReclaims a seat from a departing holder and requests the teardown the chosen scope implies.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation whose seat it is. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ReclaimSeatRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-lifecycle/organizations/{organizationId}/records/{seatReassignmentId}/assignGrants 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation whose seat it is. |
seatReassignmentId | path | string (uuid) | yes | The reclaimed seat record to complete. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.AssignSeatRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsOrgSeatRegister
/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-register/organizations/{organizationId}/enrolEnrols the organisation into the seat register, optionally seeding it with the seats it already bills for.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.EnrolSeatRegisterRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-register/organizations/{organizationId}/seatsAdds a seat to the register, unheld.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ProvisionSeatRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-register/organizations/{organizationId}/seats/{seatRef}/assignRecords that a holder now occupies a registered seat.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation. |
seatRef | path | string | yes | The seat. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.AssignSeatHolderRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-register/organizations/{organizationId}/seats/{seatRef}/releaseReturns a registered seat to the organisation's unassigned pool.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation. |
seatRef | path | string | yes | The seat. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPackageVersionMigrations
/api/v1/billing/package-version-migrationsEvery 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
subscriptionId | query | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/package-version-migrationsRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.PackageVersionMigrationDeltaRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/package-version-migrations/mineThe 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
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/package-version-migrations/previewComputes 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.PackageVersionMigrationDeltaRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/package-version-migrations/{id}/applyStamps 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ApplyPackageVersionMigrationDeltaRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPartnerChannelTrueUp
/api/v1/channel-commissions/true-upThe caller's true-up for one quarter.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
period | query | string | no | The quarter, `yyyy-Qn` (e.g. `2026-Q2`); anything else is 400 `INVALID_CHANNEL_TRUE_UP_PERIOD`. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPartnerMetrics
/api/v1/billing/partner-metricsFR-14.313 — every metric the caller has registered.
Authentication:Bearer (the document-wide requirement)
Parameters
Takes no parameters.
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/partner-metricsFR-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.
Essence.Payment.Billing.Api.Controllers.RegisterPartnerMetricRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/partner-metrics/statementFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
period | query | string | no | The month, `yyyy-MM` (UTC). Omitted means the current month. |
offeringId | query | string (uuid) | no | Restrict to one of the caller's offerings. |
partnerId | query | string (uuid) | no | Honoured 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/partner-metrics/{id}One registration.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/partner-metrics/{id}/activateFR-14.313 — the offering is published, so its metrics begin to rate. Idempotent.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/partner-metrics/{id}/withdrawFR-14.313 — the listing is gone; the metric stops rating. Idempotent.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPartnerPayouts
/api/v1/payouts/mineThe caller's payouts, each with its `statement` block.
Authentication:Bearer (the document-wide requirement)
Parameters
Takes no parameters.
Request body
No request body.
Responses
Essence.Payment.Billing.Application.DTOs.PayoutDto[]Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/payouts/{id}/statementThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
string (binary)Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPartnerPayoutSettings
/api/v1/payouts/settingsThe 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
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/payouts/settings/withholdingRecords 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.
Essence.Payment.Billing.Api.Controllers.DeclarePartnerWithholdingRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPartnerReports
/api/v1/partners/{partnerId}/commission-summaryGets commission summary for a partner.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | — |
startDate | query | string (date-time) | no | — |
endDate | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/partners/{partnerId}/financial-reportGets comprehensive financial report for a partner.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | — |
startDate | query | string (date-time) | no | — |
endDate | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/partners/{partnerId}/financial-report/exportExports financial report as CSV.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | — |
startDate | query | string (date-time) | no | — |
endDate | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/partners/{partnerId}/monthly-trendsGets monthly trends for commissions and payouts.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | — |
startDate | query | string (date-time) | no | — |
endDate | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/partners/{partnerId}/payout-summaryGets payout summary for a partner.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | — |
startDate | query | string (date-time) | no | — |
endDate | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/partners/{partnerId}/revenue-breakdownGets revenue share breakdown by product type and tier.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | — |
startDate | query | string (date-time) | no | — |
endDate | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsPaymentMethods
/api/v1/payment-methodsList 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
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/payment-methodsAdd 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
Idempotency-Key | header | string | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.AddPaymentMethodRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/payment-methods/setup-intentStart 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.
Essence.Payment.Billing.Api.Controllers.StartPaymentMethodSetupRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/payment-methods/{id}Remove a stored payment method.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/payment-methods/{id}/defaultSet 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPaymentPageScriptRegister
/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
environmentKey | path | string | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/payment-page-script-registers/{environmentKey}/scriptsProposes 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
environmentKey | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.AddPaymentPageScriptRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/payment-page-script-registers/{environmentKey}/scripts/{scriptId}/removeRemoves an entry. Terminal: the entry stays in the register as evidence.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
environmentKey | path | string | yes | — |
scriptId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.PaymentPageScriptChangeRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/payment-page-script-registers/{environmentKey}/scripts/{scriptId}/suspendSuspends an Authorised entry. 409 for any other status.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
environmentKey | path | string | yes | — |
scriptId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.PaymentPageScriptChangeRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPayments
/api/v1/PaymentsList payment history for a user.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
userId | query | string (uuid) | no | Optional user filter. Non-admin callers may only filter by their own id; admins may filter by any user. |
page | query | integer (int32) | no | 1-based page number. |
pageSize | query | integer (int32) | no | Number of records per page (max 100). |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/PaymentsCreate 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.
Essence.Payment.Billing.Application.Commands.Payments.CreatePaymentCommandasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.PaymentDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Payments/intentsCreate 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.
Essence.Payment.Billing.Application.Commands.Payments.CreatePaymentIntentCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
paymentIntentId | path | string | yes | — |
gateway | query | string | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/Payments/intents/{paymentIntentId}/confirmConfirm 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
paymentIntentId | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ConfirmPaymentIntentRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.DTOs.PaymentDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Payments/{id}/processProcess 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ProcessPaymentRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.PaymentDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Payments/{id}/refundProcess 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.RefundPaymentRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.RefundDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPayoutApprovals
/api/v1/payoutsLists payouts newest first, a keyset page at a time.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
status | query | string | no | Optional status name, e.g. `Pending`. |
cursor | query | string | no | The `nextCursor` of the previous page. |
limit | query | integer (int32) | no | Page size, 1 to 200 (default 25). |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/payouts/{id}Gets one payout, including whether it is awaiting approval.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.DTOs.PayoutDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/payouts/{id}/approveApproves 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.DTOs.PayoutDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPayoutRetry
/api/v1/payouts/manual-reissue-tasksFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
includeResolved | query | boolean | no | — |
limit | query | integer (int32) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/payouts/{id}/disbursement-failuresRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Payouts.RecordPayoutDisbursementFailureCommandasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.PayoutDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/payouts/{id}/manual-reissueCompletes 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Payouts.ReissuePayoutManuallyCommandasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.PayoutDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPayouts
/api/v1/payoutsCreates 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.
Essence.Payment.Billing.Application.Commands.Payouts.CreatePayoutCommandasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.PayoutDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/payouts/partner/{partnerId}Gets all payouts for a partner.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | Partner identifier |
startDate | query | string (date-time) | no | Optional start date filter |
endDate | query | string (date-time) | no | Optional end date filter |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.DTOs.PayoutDto[]/api/v1/payouts/partner/{partnerId}/statisticsGets payout statistics for a partner.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
partnerId | path | string (uuid) | yes | Partner identifier |
Request body
No request body.
Responses
unspecified/api/v1/payouts/{id}/processProcesses a pending payout.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | Payout identifier |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Payouts.ProcessPayoutCommandasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.PayoutDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsPluginPurchases
/api/v1/plugin-purchasesList 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
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/plugin-purchases/{id}Get a specific plugin purchase by ID.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | Plugin purchase identifier. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsPremiumFinancePlans
PriceBookStates
/api/v1/price-book-states/{organizationId}Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/price-book-states/{organizationId}Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.SetPriceBookStateRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsPricingPlans
/api/v1/PricingPlansCreate 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.
Essence.Payment.Billing.Application.Commands.PricingPlans.CreatePricingPlanCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/PricingPlans/activeGet 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
audience | query | string | no | `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
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.PricingPlans.UpdatePricingPlanCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsQuota
/api/v1/quota/checkAnswers 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.
Essence.Payment.Billing.Application.DTOs.QuotaCheckRequestDtoasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsQuotaLease
/api/v1/usage/quota/leaseDraws 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Idempotency-Key | header | string | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.DTOs.QuotaLeaseRequestDtoasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/quota/lease/{leaseId}/settleSettles 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
leaseId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.DTOs.QuotaLeaseSettleRequestDtoasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsReceivables
/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
accountKey | path | string | yes | The account, as `org:{guid}` or `user:{guid}`. |
segment | query | string | no | Segment label selecting the ageing bands to apply. |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Queries.Receivables.AccountCollectionsDetailDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/receivables/accounts/{accountKey}/holdPlace 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
accountKey | path | string | yes | The account. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.PlaceHoldRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.AccountCollectionsStateDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/receivables/accounts/{accountKey}/holdRelease a live hold early, returning the account to the ladder at the stage it left.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
accountKey | path | string | yes | The account. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ReasonOnlyRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.AccountCollectionsStateDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/receivables/accounts/{accountKey}/ownershipTake an account off the automatic dunning engine and onto a named owner.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
accountKey | path | string | yes | The account. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.TakeOwnershipRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.AccountCollectionsStateDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/receivables/accounts/{accountKey}/ownershipHand an account back to the automatic dunning engine, releasing any hold with it.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
accountKey | path | string | yes | The account. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ReasonOnlyRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.AccountCollectionsStateDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/receivables/ageingThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bucket | query | Essence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucket | no | Restrict to one band. |
currency | query | string | no | Restrict to one ISO 4217 currency. |
accountKind | query | Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsAccountKind | no | Restrict to organisations or individuals. |
ownership | query | Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderOwnership | no | Restrict to one ladder-ownership state. |
ownerRef | query | string | no | Restrict to one named owner. |
heldOnly | query | boolean | no | Only accounts with a live collections hold. |
pastEscalationWindowOnly | query | boolean | no | Only positions past the FR-14.197(c) AR window. |
minimumOutstanding | query | number (double) | no | Only positions at or above this value. |
segment | query | string | no | Segment label selecting the ageing bands to apply. |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Queries.Receivables.ReceivablesAgeingSummary/api/v1/receivables/performanceCollections 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
from | query | string (date-time) | no | Inclusive window start. Defaults to 90 days ago. |
to | query | string (date-time) | no | Exclusive window end. Defaults to now. |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Queries.Receivables.CollectionsPerformance[]Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/receivables/worklistOne 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bucket | query | Essence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucket | no | Restrict to one band. |
currency | query | string | no | Restrict to one ISO 4217 currency. |
accountKind | query | Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsAccountKind | no | Restrict to organisations or individuals. |
ownership | query | Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderOwnership | no | Restrict to one ladder-ownership state. |
ownerRef | query | string | no | Restrict to one named owner. |
heldOnly | query | boolean | no | Only accounts with a live collections hold. |
pastEscalationWindowOnly | query | boolean | no | Only positions past the FR-14.197(c) AR window. |
minimumOutstanding | query | number (double) | no | Only positions at or above this value. |
segment | query | string | no | Segment label selecting the ageing bands to apply. |
skip | query | integer (int32) | no | Offset into the matching set. |
take | query | integer (int32) | no | Page size, 1..500. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/receivables/write-offsThe write-off approval queue, oldest-requested first.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
status | query | Essence.Payment.Billing.Domain.Aggregates.Collections.WriteOffProposalStatus[] | no | Statuses to include. Repeatable. Omitted means pending and approved. |
limit | query | integer (int32) | no | Page size, 1..500. |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.DTOs.WriteOffProposalDto[]/api/v1/receivables/write-offsPropose 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.
Essence.Payment.Billing.Api.Controllers.ProposeWriteOffRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.WriteOffProposalDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/receivables/write-offs/{proposalId}/approveSign 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
proposalId | path | string (uuid) | yes | The proposal. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ApproveWriteOffRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.WriteOffProposalDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/receivables/write-offs/{proposalId}/executePost 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
proposalId | path | string (uuid) | yes | The proposal. |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.DTOs.WriteOffProposalDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/receivables/write-offs/{proposalId}/rejectRefuse a proposal. The balance stays on the book and stays chaseable.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
proposalId | path | string (uuid) | yes | The proposal. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ReasonOnlyRequestasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.WriteOffProposalDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsRenewalOutcome
/api/v1/subscriptions/{subscriptionRef}/renewal-outcomeExecute EPIC 85's concluded renewal request on subscriptionRef.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionRef | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.RenewalOutcomeRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsReports
/api/v1/reports/activation-attributionFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dateFrom | query | string (date-time) | no | — |
dateTo | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/channelGet channel partner revenue attribution — aggregate partner-level data only.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dateFrom | query | string (date-time) | no | — |
dateTo | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/churnGet churn analysis — voluntary vs involuntary churn for a period.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dateFrom | query | string (date-time) | no | — |
dateTo | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/credit-liabilityFR-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
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/executive-dashboardFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
periodStart | query | string (date-time) | no | — |
periodEnd | query | string (date-time) | no | — |
topCustomers | query | integer (int32) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/exportExport a financial report as a CSV file download.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
type | query | string | no | Report type: mrr | revenue | churn | channel | sponsored | activation-attribution |
dateFrom | query | string (date-time) | no | Period start (optional) |
dateTo | query | string (date-time) | no | Period end (optional) |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/involuntary-churnGet 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dateFrom | query | string (date-time) | no | — |
dateTo | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/metered-sku-revenuePer-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
period | query | string | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/mrrGet MRR/ARR breakdown across all active subscriptions.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
asOf | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/mrr-by-streamFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
asOf | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/mrr-historyFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
months | query | integer (int32) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/revenueGet revenue by tier, currency, and acquisition source for a period.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dateFrom | query | string (date-time) | no | — |
dateTo | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/revenue-by-streamFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
periodStart | query | string (date-time) | no | — |
periodEnd | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/reports/sponsoredGet sponsored entitlement revenue — aggregate counts only, no user identities.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dateFrom | query | string (date-time) | no | — |
dateTo | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsRetainerTrustFundings
/api/v1/billing/retainer-trust-fundingsEvery funding the firm in `X-Organization-Id` holds against matterReference (organisation billing administrators only).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Organization-Id | header | string (uuid) | no | — |
matterReference | query | string | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/retainer-trust-fundingsStarts 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.
Essence.Payment.Billing.Api.Controllers.InitiateRetainerTrustFundingRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/retainer-trust-fundings/mineThe caller's own retainer fundings, newest first.
Authentication:Bearer (the document-wide requirement)
Parameters
Takes no parameters.
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/retainer-trust-fundings/{id}/clearanceRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.RecordRetainerClearanceRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/retainer-trust-fundings/{id}/refundReturns 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.RefundRetainerTrustFundingRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/retainer-trust-fundings/{id}/releaseOpens 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
X-Organization-Id | header | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsRevenueClassifications
/api/v1/revenue-classifications/exceptionsThe 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
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenantType | path | Essence.Payment.Billing.Contracts.RevenueClassification.RevenueTenantType | yes | — |
tenantId | path | string (uuid) | yes | — |
asOf | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenantType | path | Essence.Payment.Billing.Contracts.RevenueClassification.RevenueTenantType | yes | — |
tenantId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ClassifyTenantRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsSandboxLicences
/api/v1/billing/sandbox-licencesBuys 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.
Essence.Payment.Billing.Application.DTOs.PurchaseSandboxLicenceRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/sandbox-licences/contextThe sandbox licences on offer to an organisation, and the ones it holds.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
audience | query | string | no | `Organisation` (the default) or `Partner`. |
organizationId | query | string (uuid) | no | The organisation asked about; absent ⇒ the caller's own. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/sandbox-licences/sponsorshipsP4-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.
Essence.Payment.Billing.Application.DTOs.GrantSandboxSponsorshipRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/sandbox-licences/{subscriptionId}/rollbackTakes 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.DTOs.RollbackSandboxLicenceRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/sandbox-licences/{subscriptionId}/sponsorship/extendP4-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.DTOs.ExtendSandboxSponsorshipRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsSeatDriftExposure
/api/v1/billing/seat-reconciliation/organizations/{organizationId}/exposureReads the organisation's daily seat-drift exposure over a window.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation. |
from | query | string (date-time) | no | First UTC day; omitted means the first day of the current calendar quarter. |
to | query | string (date-time) | no | Last UTC day, inclusive; omitted means today. At most 366 days from from. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsSeatReconciliation
/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation to reconcile. |
toleranceSeats | query | integer (int32) | no | Seats 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-reconciliation/organizations/{organizationId}/alerts/{alertId}/acknowledgeTakes ownership of an open drift episode so the queue shows who is on it.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation the episode belongs to. |
alertId | path | string (uuid) | yes | The episode to acknowledge. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-reconciliation/organizations/{organizationId}/historyReads the organisation's reconciliation history: every drift episode and every decision taken against one.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation. |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.Queries.SeatReconciliation.SeatReconciliationHistoryDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-reconciliation/organizations/{organizationId}/previewPrices 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation to price the change for. |
targetSeats | query | integer (int32) | no | The billed seat count the resolution would move to. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-reconciliation/organizations/{organizationId}/resolutionRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation to reconcile. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.CommitSeatResolutionRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation the decision belongs to. |
decisionId | path | string (uuid) | yes | The decision to withdraw. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsSeatTrueUp
/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation to read. |
period | query | string | no | The 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
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-true-up/organizations/{organizationId}/exportDownloads 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation whose true-up to export. |
period | query | string | no | The quarter as `yyyy-Qn`; omitted means the most recently closed one. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-true-up/organizations/{organizationId}/openOpens 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation to true up. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.OpenSeatTrueUpRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-true-up/organizations/{organizationId}/runs/{runId}/approveRecords 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation whose true-up it is. |
runId | path | string (uuid) | yes | The run being approved. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ApproveSeatTrueUpRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/seat-true-up/organizations/{organizationId}/runs/{runId}/holdsDisputes 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation whose true-up it is. |
runId | path | string (uuid) | yes | The run to hold against. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.HoldSeatTrueUpRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation whose true-up it is. |
runId | path | string (uuid) | yes | The run holding the seat. |
seatRef | path | string | yes | The disputed seat. |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ResolveSeatTrueUpHoldRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsSkus
/api/v1/SkusList 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
family | query | string | no | One of `{PLT,MOD,CAP,MKT,ADD,USG,SVC,NET}` (FR-14.134), or omitted for all. |
status | query | string | no | One of `{Draft,Active,Deprecated,Withdrawn}`, or omitted for all. |
pageNumber | query | integer (int32) | no | 1-based page number. |
pageSize | query | integer (int32) | no | Rows per page, clamped to 1..200. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/SkusRegister 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.
Essence.Payment.Billing.Application.Commands.Skus.CreateSkuCommandasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.SkuDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Skus/importImport 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.
Essence.Payment.Billing.Application.Commands.Skus.ImportSkuRegistryCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Skus/{code}Fetch a SKU by its canonical code (FR-14.130). 404 if unknown.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
code | path | string | yes | — |
Request body
No request body.
Responses
Essence.Payment.Billing.Application.DTOs.SkuDtoMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Skus/{code}/transitionTransition 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
code | path | string | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Skus.TransitionSkuStatusCommandasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.SkuDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsSlaCredits
/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
breachId | path | string (uuid) | yes | EPIC 70's breach (SlaRecord) id. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/sla-credits/meThe 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
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation to report on. |
month | query | string | no | Optional `yyyy-MM` reporting month. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/sla-credits/organizations/{organizationId}/reconciliation.csvThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
organizationId | path | string (uuid) | yes | The organisation to report on. |
month | query | string | no | Optional `yyyy-MM` reporting month. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/billing/sla-credits/termsThe 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
/api/v1/sponsored-billingList 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
/api/v1/sponsored-billing/reportFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
periodStart | query | string (date-time) | no | — |
periodEnd | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsored-billing/sponsorships/{sponsoredEntitlementId}/convertFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
sponsoredEntitlementId | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.SponsoredBilling.ConvertSponsoredEntitlementToSelfPayCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsored-billing/{sponsorshipId}Get billing detail for a single sponsorship.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
sponsorshipId | path | string (uuid) | yes | Sponsorship identifier |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsored-billing/{sponsorshipId}/invoicesList invoices issued to the sponsoring organisation for a sponsorship.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
sponsorshipId | path | string (uuid) | yes | Sponsorship identifier |
Request body
No request body.
Responses
/api/v1/sponsored-billing/{sponsorshipId}/usersGet 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
sponsorshipId | path | string (uuid) | yes | Sponsorship identifier |
Request body
No request body.
Responses
unspecifiedSponsorships
/api/v1/sponsorshipsLists 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
orgId | query | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsorshipsOpens 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.
Essence.Payment.Billing.Application.Commands.Sponsorships.CreateSponsorshipCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsorships/{id}Reads one sponsorship campaign.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsorships/{id}/audienceRe-targets a live campaign's audience.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Sponsorships.UpdateSponsorshipAudienceCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsorships/{id}/auditThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
page | query | integer (int32) | no | — |
pageSize | query | integer (int32) | no | — |
eventType | query | string | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsorships/{id}/cancelWinds a campaign down and settles the real pro-rata.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Sponsorships.CancelSponsorshipCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsorships/{id}/cancellation-previewPreviews the financial and privacy consequences of cancelling, so the wind-down is never a blind action.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsorships/{id}/dispatchDispatches 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.Commands.Sponsorships.DispatchSponsorshipInvitesCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/sponsorships/{id}/uptakePrivacy-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsSubjectSubscription
/api/v1/billing/subjects/{subjectType}/{subjectId}/subscriptionThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subjectType | path | string | yes | — |
subjectId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsSubjectVaultEntitlement
/api/v1/billing/subjects/{subjectType}/{subjectId}/entitlements/vaultThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subjectType | path | string | yes | — |
subjectId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsSubledger
/api/v1/Subledger/billingsWhat the entity was billed during the period (FR-84.006).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
entity | query | string | no | — |
period | query | string | no | — |
currency | query | string | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subledger/leakage-observationsEvery input the revenue-leakage sweep inspects (FR-84.009).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
entity | query | string | no | — |
period | query | string | no | — |
currency | query | string | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subledger/paymentsPayments recorded against the period (FR-84.008 cash leg).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
entity | query | string | no | — |
period | query | string | no | — |
currency | query | string | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subledger/receivablesOpen receivables for the entity at the close of the period (FR-84.007).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
entity | query | string | no | — |
period | query | string | no | — |
currency | query | string | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsSubscriptionLicenceSwitch
/api/v1/subscriptions/{id}/switchSwitch 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.SwitchSubscriptionLicenceRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsSubscriptions
/api/v1/SubscriptionsList 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
userId | query | string (uuid) | no | — |
orgId | query | string (uuid) | no | — |
page | query | integer (int32) | no | — |
pageSize | query | integer (int32) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/SubscriptionsCreate 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.
Essence.Payment.Billing.Application.Commands.Subscriptions.CreateSubscriptionCommandasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/activeThe 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
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/billing-noticesReturns 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
/api/v1/Subscriptions/checkout-quoteThe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
skuCode | query | string | no | — |
offeredAmount | query | number (double) | no | — |
offeredCurrency | query | string | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
userId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
userId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/user/{userId}/plan-summaryData-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
userId | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}Get a subscription by ID.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}Update mutable subscription properties (payment method, metadata).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.UpdateSubscriptionRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/cadenceFR-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ChangeSubscriptionCadenceRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/cancelCancel a subscription at the end of the current billing period.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.CancelSubscriptionRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/downgradeSchedule 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.DowngradeSubscriptionRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/historyGet the state-change history for a subscription.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/pausePause an active subscription for the specified number of days (1–90).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.PauseSubscriptionRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/paymentsSettle 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ProcessSubscriptionPaymentRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/payments/{paymentIntentId}/settleStripe 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
paymentIntentId | path | string | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/reactivateReactivate a cancelled subscription within the 7-day grace period.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/renewRenew a subscription, advancing its billing period.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/resumeResume a paused subscription immediately.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/upgradeUpgrade a subscription to a higher-tier plan immediately.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.UpgradeSubscriptionRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/Subscriptions/{id}/upgrade/previewAC-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
newPricingPlanId | query | string (uuid) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsSubscriptionSeats
/api/v1/subscriptions/{id}/seatsChange 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Api.Controllers.ChangeLicensedSeatsRequestasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsUsage
/api/v1/usage/alertsGet active threshold alerts: overages plus warning-level approach (default 80%).
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | query | string (uuid) | no | — |
periodStart | query | string (date-time) | no | — |
periodEnd | query | string (date-time) | no | — |
warningThreshold | query | number (double) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/cost-disclosureUpfront 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
pricingPlanId | query | string (uuid) | no | — |
metricType | query | Essence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricType | no | — |
projectedQuantity | query | number (double) | no | — |
includedQuantity | query | number (double) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/eventsRecord 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Idempotency-Key | header | string | no | — |
Idempotency-Key | header | string | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.DTOs.RecordUsageEventRequestDtoasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/historyGet historical usage records for a subscription, optionally filtered by date range.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | query | string (uuid) | no | — |
startDate | query | string (date-time) | no | — |
endDate | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/quota/checkAnswers 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.
Essence.Payment.Billing.Application.DTOs.QuotaCheckRequestDtoasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/quota/releaseReturns 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Idempotency-Key | header | string | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.DTOs.QuotaReservationReleaseRequestDtoasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/quota/reserveReserve-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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Idempotency-Key | header | string | no | — |
Request body
Not marked as required in the document.
Essence.Payment.Billing.Application.DTOs.QuotaReservationRequestDtoasapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/quotasGet current quota status and remaining headroom for a subscription.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | query | string (uuid) | no | — |
metricType | query | Essence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricType | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/recordRecord 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.
Essence.Payment.Billing.Application.Commands.Usage.CreateUsageRecordCommandasapplication/*+json,application/json,text/json
Responses
Essence.Payment.Billing.Application.DTOs.UsageRecordDtoMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/record/bulkBulk 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.
Essence.Payment.Billing.Application.Commands.Usage.CreateUsageRecordCommand[]asapplication/*+json,application/json,text/json
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetails/api/v1/usage/summaryGet usage summary for a subscription. Defaults to the subscription's current period when periodStart / periodEnd are omitted.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
subscriptionId | query | string (uuid) | no | — |
periodStart | query | string (date-time) | no | — |
periodEnd | query | string (date-time) | no | — |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsVerificationCheckUsage
/api/v1/usage/verification-checksThe verification checks metered for one request or one property, in the order they ran.
Authentication:Bearer (the document-wide requirement)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
requestId | query | string | no | The request id the metering module put in `metadata.requestId`. |
propertyId | query | string | no | Instead 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. |
subscriptionId | query | string (uuid) | no | Optional: a subscription the caller administers; the caller's own when omitted. |
Request body
No request body.
Responses
Microsoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsMicrosoft.AspNetCore.Mvc.ProblemDetailsWebhooks
/api/v1/webhooks/adyenAdyen 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
Microsoft.AspNetCore.Mvc.ProblemDetails/api/v1/webhooks/stripeStripe 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
Microsoft.AspNetCore.Mvc.ProblemDetailsSchemas
Essence.Payment.Billing.Api.Controllers.AddPaymentMethodRequest
Request body for adding a new payment method token.
| Property | Type | Required | Description |
|---|---|---|---|
brand | string | null | no | — |
expiryMonth | integer (int32) | null | no | — |
expiryYear | integer (int32) | null | no | — |
gateway | string | null | no | — |
gatewayMethodId | string | null | no | — |
lastFour | string | null | no | — |
setAsDefault | boolean | no | — |
type | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.AddPaymentPageScriptRequest
Body of `POST …/scripts`.
| Property | Type | Required | Description |
|---|---|---|---|
businessJustification | string | null | no | — |
changeRecord | string | null | no | The change-management reference that authorises proposing this script. |
scriptUrl | string | null | no | — |
subresourceIntegrityHash | string | null | no | — |
vendor | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.AdminNetTermsRefundsController.NetTermsRefundRequest
The POST body. The refunding identity is the caller, never the body.
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | null | no | — |
reason | string | null | no | — |
reference | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.AdminOrganisationCommercialProfileController.ApproveInvoiceCollectionRequest
The approval PUT body: the terms (days) and why. The approver is the caller, never the body.
| Property | Type | Required | Description |
|---|---|---|---|
paymentTermsDays | integer (int32) | null | no | — |
reason | string | null | no | — |
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.
| Property | Type | Required | Description |
|---|---|---|---|
days | integer (int32) | null | no | — |
reason | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.AdminRefundQueueController.ResolveRefundRequest
The POST body. The resolving identity is the caller, never the body.
| Property | Type | Required | Description |
|---|---|---|---|
note | string | null | no | — |
outcome | string | null | no | — |
reference | string | null | no | — |
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).
| Property | Type | Required | Description |
|---|---|---|---|
afterSubscriptionId | string (uuid) | null | no | Keyset cursor from a previous page's `nextCursor`. |
batchSize | integer (int32) | null | no | Page size (default 100, max 500). |
dryRun | boolean | no | Report what would change and publish nothing. |
pricingPlanId | string (uuid) | null | no | Restrict the walk to one pricing plan. |
reason | string | null | no | Why this is being run. Required — it lands on the published event's audit trail. |
recordBaselineOnly | boolean | no | Record each subscription's resolved grant as already held; publish nothing. |
republishUnchanged | boolean | no | Publish the complete grant even for subscriptions that already hold it (engine-repair escape hatch). By default a subscription that would gain nothing publishes nothing. |
subscriptionId | string (uuid) | null | no | Re-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).
| Property | Type | Required | Description |
|---|---|---|---|
currency | string | null | no | — |
organizationId | string (uuid) | null | no | — |
overrideTrialDays | integer (int32) | null | no | — |
pricingPlanId | string (uuid) | no | — |
subscriptionClass | Essence.Payment.Billing.Domain.Aggregates.Subscription.SubscriptionClass | no | — |
targetUserId | string (uuid) | no | — |
Essence.Payment.Billing.Api.Controllers.AdminTaxPendingQueueController.DetermineTaxRequest
The POST body. The determining identity is the caller, never the body.
| Property | Type | Required | Description |
|---|---|---|---|
ratePercent | number (double) | null | no | The 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. |
reason | string | null | no | Finance'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).
| Property | Type | Required | Description |
|---|---|---|---|
applications | string[] | null | no | Application references (`ESS-1A2B-3C4D`) or onboarding session ids. |
dryRun | boolean | null | no | Report only (the default). Pass `false` to void. |
reason | string | null | no | Why 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).
| Property | Type | Required | Description |
|---|---|---|---|
currencyCode | string | null | no | ISO-4217 code of both amounts, e.g. `GBP`. |
listAmountAtLock | number (double) | no | The list price in force now — what the subscriber would pay without the lock. |
lockedAmount | number (double) | no | The price the subscriber is held on. May be zero; never above Essence.Payment.Billing.Api.Controllers.ApplyGrandfatherPriceLockRequest.ListAmountAtLock. |
lockedUntil | string (date-time) | no | When the lock stops being in force. Must be in the future. |
supersedeReference | string | null | no | The 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`.
| Property | Type | Required | Description |
|---|---|---|---|
documentId | string (uuid) | null | no | The billing document's id, when the caller knows it. Optional. |
documentReference | string | null | no | The invoice or credit-note reference that carried the delta. |
Essence.Payment.Billing.Api.Controllers.ApprenticeshipCompletionRequest
The qualification EPIC 29 issued on completion.
| Property | Type | Required | Description |
|---|---|---|---|
anchorReference | string | null | no | The EPIC 4 anchor for the completion, when one exists. |
completedAtIso | string | null | no | ISO-8601 instant of completion. Omit for "now". |
credentialId | string | null | no | The EPIC 29 credential issued to the apprentice's own vault. |
grade | string | null | no | Wire form: `pass` | `merit` | `distinction`. |
Essence.Payment.Billing.Api.Controllers.AppRevenueReassignmentRequest
What EPIC 25 tells EPIC 14 about a transfer's money.
| Property | Type | Required | Description |
|---|---|---|---|
appId | string | null | no | The application changing hands. |
effectiveAt | string (date-time) | no | The ledger cut. The same instant as the controller change, never re-derived here. |
fromOrgId | string (uuid) | no | The outgoing owner's partner id. |
toOrgId | string (uuid) | no | The incoming owner's partner id. |
transferId | string (uuid) | no | The 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.
| Property | Type | Required | Description |
|---|---|---|---|
completed | boolean | no | True only when the reassignment did, or can, actually run. |
currency | string | null | no | The currency of OutstandingAmount. |
incomingDestinationBound | boolean | no | True 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. |
outstandingAmount | number (double) | no | What the outgoing owner is owed for this app at the cut. |
reason | string | null | no | Plain-language explanation. Never blank. |
settledCommissionCount | integer (int32) | no | How many commission rows the settlement covered. |
settlementReference | string | null | no | The settlement payout's id, or null when nothing was owed. |
unattributedCommissionCount | integer (int32) | no | How 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.
| Property | Type | Required | Description |
|---|---|---|---|
role | string | null | no | `billing-admin`, `finance-approver` or `cfo`. |
Essence.Payment.Billing.Api.Controllers.ApproveWriteOffRequest
Sign a proposal.
| Property | Type | Required | Description |
|---|---|---|---|
role | Essence.Payment.Billing.Domain.Aggregates.Collections.WriteOffApproverRole | no | — |
Essence.Payment.Billing.Api.Controllers.AssignSeatHolderRequest
Payload for assigning a seat.
| Property | Type | Required | Description |
|---|---|---|---|
holderRef | string (uuid) | no | The incoming holder (opaque org-user reference). |
Essence.Payment.Billing.Api.Controllers.AssignSeatRequest
Body for the assign route.
| Property | Type | Required | Description |
|---|---|---|---|
newHolderRef | string (uuid) | no | The incoming holder (opaque org-user reference). |
Essence.Payment.Billing.Api.Controllers.BulkReclaimSeatsRequest
Body for the bulk-reclaim route.
| Property | Type | Required | Description |
|---|---|---|---|
consentDisposition | string | null | no | The consent disposition applied to every row. |
handoverRoute | string | null | no | The handover route applied to every row. |
rows | Essence.Payment.Billing.Api.Controllers.BulkReclaimSeatsRowRequest[] | null | no | The rows, from multi-select or an uploaded CSV. |
scope | string | null | no | The 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.
| Property | Type | Required | Description |
|---|---|---|---|
leaverRef | string (uuid) | no | The departing holder. |
newHolderRef | string (uuid) | null | no | The incoming holder, when the row is a leaver→new-hire mapping. |
seatRef | string | null | no | The seat reference, when the organisation has one. |
Essence.Payment.Billing.Api.Controllers.CancelSubscriptionRequest
| Property | Type | Required | Description |
|---|---|---|---|
reason | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.ChangeLicensedSeatsRequest
The body of `PUT …/subscriptions/{id}/seats`.
| Property | Type | Required | Description |
|---|---|---|---|
seats | integer (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.
| Property | Type | Required | Description |
|---|---|---|---|
newCadence | string | null | no | — |
newCadencePrice | number (double) | no | — |
Essence.Payment.Billing.Api.Controllers.ClassifyTenantRequest
Body of a classification request. The actor comes from the token, not from here.
| Property | Type | Required | Description |
|---|---|---|---|
class | string | null | no | One of `customer`, `intercompany`, `internal`, `trial-non-revenue`. |
effectiveFrom | string (date-time) | no | When the class takes effect. May be backdated. |
reason | string | null | no | Why this tenant is classified this way. |
Essence.Payment.Billing.Api.Controllers.CloudMarketplaceSettlementsController.DispositionRequest
A disposition finance records on a break.
| Property | Type | Required | Description |
|---|---|---|---|
disposition | string | null | no | `accepted`, `written_off` or `re_tied`. |
reason | string | null | no | Why — required. |
subscriptionId | string (uuid) | null | no | For `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.
| Property | Type | Required | Description |
|---|---|---|---|
periodEndUtc | string (date-time) | no | Exclusive end (UTC). |
periodStartUtc | string (date-time) | no | Inclusive start (UTC). |
Essence.Payment.Billing.Api.Controllers.CloudMarketplaceSettlementsController.ReassignOwnerRequest
A new owner for an open break.
| Property | Type | Required | Description |
|---|---|---|---|
owner | string | null | no | Who works the break from now on. |
reason | string | null | no | Why — required. |
Essence.Payment.Billing.Api.Controllers.CommitSeatResolutionRequest
Body of a commit-resolution request.
| Property | Type | Required | Description |
|---|---|---|---|
authoritativeSource | string | null | no | Which 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. |
note | string | null | no | Optional free-text note recorded with the decision. |
targetSeats | integer (int32) | no | The billed seat count the resolution moves to. |
Essence.Payment.Billing.Api.Controllers.ConfigureGroupSchemeBillingRequest
Body of `PUT api/v1/billing/group-schemes/{schemeId}/billing-configuration`.
| Property | Type | Required | Description |
|---|---|---|---|
billingContactUserId | string (uuid) | null | no | Whom 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. |
invoicingParty | string | null | no | `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. |
paymentTermsDays | integer (int32) | null | no | Days from issue to due date on the aggregated invoice. Defaults to 30. |
Essence.Payment.Billing.Api.Controllers.ConfirmPaymentIntentRequest
| Property | Type | Required | Description |
|---|---|---|---|
paymentGateway | string | null | no | — |
paymentMethodId | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.DecideDeveloperApiPlanUpgradeRequest
Wire body of the approver's decision.
| Property | Type | Required | Description |
|---|---|---|---|
decision | string | null | no | `approve` | `decline`. |
Essence.Payment.Billing.Api.Controllers.DeclarePartnerWithholdingRequest
Body of `PUT /api/v1/payouts/settings/withholding`.
| Property | Type | Required | Description |
|---|---|---|---|
claimsTreatyBenefits | boolean | null | no | Whether treaty relief is claimed; absent means no. |
entityType | string | null | no | One of `company, partnership, sole-trader, individual, other`. |
taxResidenceCountry | string | null | no | ISO 3166-1 alpha-2, such as `GB`. |
treatyArticle | string | null | no | The article relied on, at most 64 characters; only with a claim. |
treatyRatePercent | number (double) | null | no | The rate claimed, 0–100, at most two decimals; only with a claim. |
Essence.Payment.Billing.Api.Controllers.DowngradeSubscriptionRequest
| Property | Type | Required | Description |
|---|---|---|---|
newPricingPlanId | string (uuid) | no | — |
Essence.Payment.Billing.Api.Controllers.EarlyLeaverRequest
An apprentice who left before completing.
| Property | Type | Required | Description |
|---|---|---|---|
leftAtIso | string | null | no | ISO-8601 instant they left. Omit for "now". |
reason | string | null | no | Wire form: `withdrew` | `left-employment` | `transferred` | `other`. |
Essence.Payment.Billing.Api.Controllers.EnrolSeatRegisterRequest
Enrolment payload.
| Property | Type | Required | Description |
|---|---|---|---|
seats | Essence.Payment.Billing.Api.Controllers.SeatRegistrationEntryRequest[] | null | no | Seats to create at enrolment; may be empty or absent. |
Essence.Payment.Billing.Api.Controllers.HoldSeatTrueUpRequest
Body for the hold route.
| Property | Type | Required | Description |
|---|---|---|---|
reason | string | null | no | The organisation's stated reason — required, so the hold can be reviewed. |
seatRef | string | null | no | The disputed seat's opaque reference. |
Essence.Payment.Billing.Api.Controllers.InitiateCoolingOffCancellationRequest
Body of `POST api/v1/billing/cooling-off-settlements`.
| Property | Type | Required | Description |
|---|---|---|---|
coolingOffDays | integer (int32) | null | no | The window length in days, 1–30; 14 when omitted. |
currencyCode | string | null | no | ISO-4217; defaults to GBP. |
customerUserId | string (uuid) | no | The customer exercising the right: the party the refund returns to. |
noticeReceivedAt | string (date-time) | null | no | When the customer's notice was received; now when omitted. |
price | number (double) | no | The price or premium paid. |
purchaseReference | string | null | no | The original purchase or policy reference. |
purchasedAt | string (date-time) | null | no | When the purchase was made or the policy incepted. The window runs from here. |
serviceStartedAt | string (date-time) | null | no | When the service or cover began; omit when none was used, so nothing is deducted. |
serviceTermDays | integer (int32) | null | no | The 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`.
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
currencyCode | string | null | no | ISO-4217; defaults to GBP. |
feeBasis | Essence.Payment.Billing.Domain.Aggregates.RetainerTrustFunding.RetainerFeeBasis | no | — |
lawFirmOrganizationId | string (uuid) | no | The law firm whose client trust account will hold the funds. |
matterReference | string | null | no | The 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`.
| Property | Type | Required | Description |
|---|---|---|---|
places | integer (int32) | no | — |
providerOrganizationId | string (uuid) | no | — |
sourceReference | string | null | no | Optional 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. |
standardId | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.LevyMovementRequest
A movement delivered onto an employer's levy ledger under service authority.
| Property | Type | Required | Description |
|---|---|---|---|
allocationId | string (uuid) | null | no | Required for a drawdown or a clawback. |
amountPence | integer (int64) | no | Signed minor units: credits positive, debits negative. |
apprenticeshipId | string | null | no | — |
description | string | null | no | — |
kind | string | null | no | Wire form: `payroll-accrual` | `government-top-up` | `drawdown` | `expiry` | `clawback`. |
occurredAtIso | string | null | no | ISO-8601 instant the movement occurred. Omit for "now". |
sourceReference | string | null | no | The 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).
| Property | Type | Required | Description |
|---|---|---|---|
purchaseToken | string | null | no | The token the marketplace put on the landing-page URL, verbatim. |
Essence.Payment.Billing.Api.Controllers.MilestoneAchievementRequest
An achievement EPIC 29 has evidenced.
| Property | Type | Required | Description |
|---|---|---|---|
achievedAtIso | string | null | no | ISO-8601 instant it was achieved. Omit for "now". |
evidenceEntryId | string | null | no | The 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.
| Property | Type | Required | Description |
|---|---|---|---|
actorLabel | string | null | no | Who is releasing it — the person the payment is accounted to at audit. |
actorRole | string | null | no | The role they release it in. |
amountPence | integer (int64) | no | The positive amount to release, in pence. |
sourceReference | string | null | no | Optional 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.
| Property | Type | Required | Description |
|---|---|---|---|
offeringId | string (uuid) | no | The marketplace offering to price. |
seatCount | integer (int32) | no | Seats to quote for. One for an org-wide install. |
Essence.Payment.Billing.Api.Controllers.ModuleSubscriptionSummaryDto
Summary DTO for a module subscription.
| Property | Type | Required | Description |
|---|---|---|---|
alignedToOrgPeriod | boolean | no | FR-14.050a — whether the module renews on the organisation's own renewal day. |
billingCycle | string | null | no | — |
canceledAt | string (date-time) | null | no | — |
cancellationTerms | Essence.Payment.Billing.Application.DTOs.ModuleCancellationTermsDto | no | — |
currency | string | null | no | — |
firstChargeAmount | number (double) | null | no | FR-14.050a — what was charged at provisioning; `null` when hidden (P5-R24). |
id | string (uuid) | no | — |
isBaseModule | boolean | no | — |
nextBillingDate | string (date-time) | null | no | FR-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). |
offeringId | string (uuid) | no | — |
offeringName | string | null | no | — |
price | number (double) | null | no | The per-seat price; `null` for an organisation shown no Essence figure (routed or route unknown, P5-R24). |
proration | Essence.Payment.Billing.Application.DTOs.ModuleProrationLineDto | no | — |
provisionedAt | string (date-time) | no | — |
recurringTotal | number (double) | null | no | FR-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). |
seatCount | integer (int32) | no | FR-14.050a — seats this module is billed for. One for an org-wide install. |
status | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.OpenPremiumFinancePlanRequest
Request body for opening a premium-finance plan.
| Property | Type | Required | Description |
|---|---|---|---|
agreementId | string | null | no | The insurer's agreement identifier. Opaque to Billing. |
creditAgreementReference | string | null | no | The lender's credit-agreement reference. |
currency | string | null | no | ISO currency code the whole plan is denominated in. |
mandateReference | string | null | no | The mandate instalments are collected against. A reference, never an account number. |
policyReference | string | null | no | The policy the premium belongs to. Opaque to Billing. |
policyholderUserId | string (uuid) | no | The policyholder repaying the credit agreement. |
schedule | Essence.Payment.Billing.Application.Commands.PremiumFinance.ScheduledInstalmentInput[] | null | no | The 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`.
| Property | Type | Required | Description |
|---|---|---|---|
period | string | null | no | The 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.
| Property | Type | Required | Description |
|---|---|---|---|
currencyCode | string | null | no | ISO-4217; defaults to GBP. |
currentPeriodEnd | string (date-time) | null | no | The day the current version's billing period ends. |
currentPeriodStart | string (date-time) | null | no | First day of the current version's billing period. |
currentVersionPrice | number (double) | no | The current version's price for a whole billing period. |
fromVersion | string | null | no | The version being left, e.g. `v3.2`. |
migrationEffectiveAt | string (date-time) | null | no | The migration's effective date. Must fall inside the current billing period. |
newVersionPrice | number (double) | no | The new version's price for a whole billing period. |
packageCode | string | null | no | The commercial package, e.g. `PKG-PROF`. |
subscriberUserId | string (uuid) | no | The subscriber who reads the preview. |
subscriptionId | string (uuid) | no | The subscription the migration applies to. |
termDays | integer (int32) | null | no | The pro-rata denominator in days; the current period's own length when omitted. Supply it where the billing term and the invoiced period differ. |
toVersion | string | null | no | The version being renewed onto, e.g. `v4.0`. |
Essence.Payment.Billing.Api.Controllers.PauseSubscriptionRequest
| Property | Type | Required | Description |
|---|---|---|---|
pauseDurationDays | integer (int32) | no | — |
Essence.Payment.Billing.Api.Controllers.PayArrearsRequest
Request body for an arrears payment.
| Property | Type | Required | Description |
|---|---|---|---|
amountMinor | integer (int64) | no | Amount paid, in minor units. May not exceed the arrears outstanding. |
currency | string | null | no | ISO currency code. Must match the plan's. |
paymentReference | string | null | no | The 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.
| Property | Type | Required | Description |
|---|---|---|---|
changeRecord | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.PlaceHoldRequest
Place a bounded collections hold.
| Property | Type | Required | Description |
|---|---|---|---|
arrangementNote | string | null | no | An optional recorded arrangement. |
currentLadderStage | integer (int32) | no | The stage the ladder resumes at when the hold lifts. |
pausedUntil | string (date-time) | no | Mandatory expiry. Must be in the future and within the configured maximum. |
reason | string | null | no | Why. Required. |
Essence.Payment.Billing.Api.Controllers.PluginPurchaseSummaryDto
Summary DTO for a plugin purchase.
| Property | Type | Required | Description |
|---|---|---|---|
canceledAt | string (date-time) | null | no | — |
currency | string | null | no | — |
id | string (uuid) | no | — |
offeringId | string (uuid) | no | — |
offeringName | string | null | no | — |
price | number (double) | no | — |
pricingModel | string | null | no | — |
purchasedAt | string (date-time) | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.PostGroupPremiumAccrualsRequest
Body of `POST …/accruals`.
| Property | Type | Required | Description |
|---|---|---|---|
accruals | Essence.Payment.Billing.Application.Commands.GroupPremium.GroupPremiumAccrualInput[] | null | no | — |
Essence.Payment.Billing.Api.Controllers.ProcessPaymentRequest
| Property | Type | Required | Description |
|---|---|---|---|
gatewayPaymentId | string | null | no | — |
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.
| Property | Type | Required | Description |
|---|---|---|---|
amount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
expectedAmount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
invoiceId | string (uuid) | null | no | — |
paymentGateway | string | null | no | — |
paymentMethodId | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.ProposeWriteOffRequest
Raise a write-off proposal.
| Property | Type | Required | Description |
|---|---|---|---|
accountKey | string | null | no | The account, as `org:{guid}` or `user:{guid}`. |
invoiceIds | (string (uuid))[] | null | no | The invoices to dispose of. All must belong to the account and share a currency. |
justification | string | null | no | Supporting narrative. Required. |
reasonCode | Essence.Payment.Billing.Domain.Aggregates.Collections.WriteOffReasonCode | no | — |
Essence.Payment.Billing.Api.Controllers.ProviderPaymentRequest
Funds that have reached the provider for a milestone already drawn.
| Property | Type | Required | Description |
|---|---|---|---|
amountPence | integer (int64) | no | The positive amount that reached the provider, in pence. |
Essence.Payment.Billing.Api.Controllers.ProvisionSeatRequest
Payload for adding one seat.
| Property | Type | Required | Description |
|---|---|---|---|
planLabel | string | null | no | The plan/tier the seat carries. |
seatRef | string | null | no | The seat's stable reference. |
subscriptionRef | string | null | no | The subscription the seat is billed under. |
Essence.Payment.Billing.Api.Controllers.RaiseCommissionLineQueryRequest
Body of `POST /api/v1/channel-commissions/{commissionId}/queries`.
| Property | Type | Required | Description |
|---|---|---|---|
currency | string | null | no | The line's ISO currency code. |
expected | number (double) | null | no | The figure the partner expected, signed, in the line's currency. |
note | string | null | no | Optional, at most 2,000 characters. |
reason | string | null | no | One of `rate, base, clawback, seat-change, rebate-band, missing-line, other`. |
Essence.Payment.Billing.Api.Controllers.ReasonOnlyRequest
A request that carries only a reason.
| Property | Type | Required | Description |
|---|---|---|---|
reason | string | null | no | Why. Required. |
Essence.Payment.Billing.Api.Controllers.ReclaimSeatRequest
Body for `POST /billing/seat-lifecycle/organizations/{id}/reclaim`.
| Property | Type | Required | Description |
|---|---|---|---|
consentDisposition | string | null | no | `revoke_all`, `transfer_to_new_holder`, `per_grant` or `undecided`. |
consentGrantsAffected | integer (int32) | null | no | How many outstanding grants the disposition covers, as read from the consent service. Null means they could not be read, which blocks an offboard. |
handoverManagerRef | string (uuid) | null | no | The manager the org-owned work goes to, when the route names one. |
handoverRoute | string | null | no | `new_holder`, `manager`, `org_vault` or `undecided`. |
leaverRef | string (uuid) | no | The departing holder (opaque org-user reference). |
planLabel | string | null | no | The plan/tier the seat carries. |
scope | string | null | no | `seat_only` or `reclaim_and_offboard`. |
seatRef | string | null | no | The seat reference, when the organisation has one; null lets Billing mint it. |
subscriptionRef | string | null | no | The subscription the seat is billed under (audit context). |
Essence.Payment.Billing.Api.Controllers.RecordAccessToWorkAwardRequest
An approved award delivered by the Access to Work scheme.
| Property | Type | Required | Description |
|---|---|---|---|
adjustmentId | string | null | no | — |
approvedAmountMinor | integer (int64) | no | — |
approvedAt | string | null | no | ISO-8601. Stored verbatim. |
awardId | string | null | no | — |
costsEligibleFrom | string | null | no | ISO-8601 date, or null when the scheme stated no eligibility window. |
currency | string | null | no | — |
fundingCategory | string | null | no | Wire form: `equipment` | `software` | `support-hours` | `travel` | `workplace-alteration`. |
schemeReference | string | null | no | — |
withdrawnAt | string | null | no | ISO-8601, present only when delivering a withdrawal. |
Essence.Payment.Billing.Api.Controllers.RecordCisAnchorRequest
EPIC 4's anchor reference for a bound payment.
| Property | Type | Required | Description |
|---|---|---|---|
anchorReference | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.RecordCisVerificationRequest
A CIS status check delivered by the verification service.
| Property | Type | Required | Description |
|---|---|---|---|
checkedAt | string | null | no | ISO-8601. Stored verbatim, because the anchored hash is taken over it. |
organizationId | string (uuid) | no | — |
providerReference | string | null | no | — |
ratePercent | number (double) | no | — |
source | string | null | no | — |
status | string | null | no | Wire form: `gross` | `registered` | `unmatched`. |
subcontractorId | string | null | no | — |
verificationId | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.RecordCollectionAttemptRequest
Request body for recording one collection attempt.
| Property | Type | Required | Description |
|---|---|---|---|
failureCode | string | null | no | The scheme's refusal code when it did not. A short code — not a place to describe the policyholder's circumstances. |
paymentReference | string | null | no | The payment reference when it did. |
succeeded | boolean | no | True when the mandate paid. |
Essence.Payment.Billing.Api.Controllers.RecordReimbursementDecisionRequest
The scheme's ruling on a submitted claim.
| Property | Type | Required | Description |
|---|---|---|---|
decision | string | null | no | Wire form: `approve` | `reject`. |
rejectionReason | string | null | no | Required when rejecting. |
Essence.Payment.Billing.Api.Controllers.RecordReimbursementDisbursementRequest
The reference under which the money moved to the employer.
| Property | Type | Required | Description |
|---|---|---|---|
disbursementRef | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.RecordRetainerClearanceRequest
Body of `POST api/v1/billing/retainer-trust-fundings/{id}/clearance`.
| Property | Type | Required | Description |
|---|---|---|---|
outcome | Essence.Payment.Billing.Application.Commands.RetainerTrust.RetainerClearanceOutcome | no | — |
paymentReference | string | null | no | — |
reason | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.RefundPaymentRequest
Request body for a refund operation.
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | null | no | Refund amount in the payment's currency; null is a full refund. |
businessJustification | string | null | no | FR-14.015b: the written justification an aged (> 90-day) refund needs; recorded with the refund's authorisation chain. |
reason | string | null | no | Human-readable reason for the refund. |
Essence.Payment.Billing.Api.Controllers.RefundRetainerTrustFundingRequest
Body of `POST api/v1/billing/retainer-trust-fundings/{id}/refund`.
| Property | Type | Required | Description |
|---|---|---|---|
reason | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.RegisterApprovedProviderRequest
An approved training provider as the register published them.
| Property | Type | Required | Description |
|---|---|---|---|
name | string | null | no | — |
providerOrganizationId | string (uuid) | no | — |
registerReference | string | null | no | — |
withdrawnAtIso | string | null | no | ISO-8601, present only when approval has been withdrawn. |
Essence.Payment.Billing.Api.Controllers.RegisterFundedStandardRequest
A funded standard as the scheme published it.
| Property | Type | Required | Description |
|---|---|---|---|
coInvestmentPercent | integer (int32) | no | — |
fundingBandCapPence | integer (int64) | no | — |
standardId | string | null | no | — |
title | string | null | no | — |
withdrawnAtIso | string | null | no | ISO-8601, present only when funding has been withdrawn. |
Essence.Payment.Billing.Api.Controllers.RegisterPartnerMetricRequest
FR-14.313 — the registration body.
| Property | Type | Required | Description |
|---|---|---|---|
metricCode | string | null | no | The code a use will be metered under. |
offeringId | string (uuid) | no | The listing the metric belongs to. |
partnerId | string (uuid) | null | no | The 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. |
unit | string | null | no | What one unit measures — "tiles", "lookups", "renders". |
unitPriceGbp | number (double) | no | The 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`.
| Property | Type | Required | Description |
|---|---|---|---|
labourPence | integer (int64) | no | — |
materialsPence | integer (int64) | no | — |
overrideReason | string | null | no | Present only when releasing over a stale-but-valid check. |
payRunId | string | null | no | — |
subcontractorId | string | null | no | — |
vatPence | integer (int64) | no | — |
verificationId | string | null | no | The EPIC 53 verification being bound. |
Essence.Payment.Billing.Api.Controllers.ReleaseCoolingOffRefundRequest
Body of `POST api/v1/billing/cooling-off-settlements/{id}/release`.
| Property | Type | Required | Description |
|---|---|---|---|
refundReference | string | null | no | The 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).
| Property | Type | Required | Description |
|---|---|---|---|
reason | string | null | no | Why 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`).
| Property | Type | Required | Description |
|---|---|---|---|
authorisationReference | string | null | no | The deal-desk approval of a retention concession, if any. |
currency | string | null | no | ISO-4217 currency of Value. |
outcome | string | null | no | `Renew`, `Expand`, `Contract` or `Churn`. |
value | number (double) | no | The annualised value the renewal concluded at. |
Essence.Payment.Billing.Api.Controllers.RequestDeveloperApiPlanUpgradeRequest
Wire body of `POST /api/v1/subscriptions/developer-api/upgrade-requests`.
| Property | Type | Required | Description |
|---|---|---|---|
developerId | string (uuid) | no | — |
keyId | string (uuid) | null | no | — |
reason | string | null | no | — |
toTierCode | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.ResolveSeatTrueUpHoldRequest
Body for the hold-resolution route.
| Property | Type | Required | Description |
|---|---|---|---|
reason | string | null | no | The resolution reason, recorded on the line. |
upheld | boolean | no | Whether the dispute is upheld (the held amount is written off). |
Essence.Payment.Billing.Api.Controllers.SaveCisContractorPolicyRequest
An organisation's CIS settings.
| Property | Type | Required | Description |
|---|---|---|---|
citbLevyEnabled | boolean | no | — |
citbLevyRatePercent | number (double) | no | — |
deductOnLabourOnly | boolean | no | — |
makerCheckerEnabled | boolean | no | — |
reverifyAfterDays | integer (int32) | no | — |
reverseChargeVat | boolean | no | — |
staleVerificationPosture | string | null | no | Wire 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.
| Property | Type | Required | Description |
|---|---|---|---|
allocationId | string (uuid) | no | The allocation whose committed places fund this apprenticeship. |
apprenticeReference | string | null | no | The opaque reference the employer's surfaces show in place of a name. |
milestones | Essence.Payment.Billing.Application.Commands.LevyAccount.ApprenticeshipMilestoneInput[] | null | no | — |
standardId | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.SeatReclaimPolicyRequest
Body for the policy route.
| Property | Type | Required | Description |
|---|---|---|---|
defaultHandoverRoute | string | null | no | The pre-selected handover route. |
defaultScope | string | null | no | `seat_only` or `reclaim_and_offboard`. |
Essence.Payment.Billing.Api.Controllers.SeatRegistrationEntryRequest
One seat in an enrolment payload.
| Property | Type | Required | Description |
|---|---|---|---|
holderRef | string (uuid) | null | no | The holder to record, or null to add the seat unheld. |
planLabel | string | null | no | The plan/tier the seat carries. |
seatRef | string | null | no | The seat's stable reference. |
subscriptionRef | string | null | no | The subscription the seat is billed under. |
Essence.Payment.Billing.Api.Controllers.SetOrganizationBillingDetailsRequest
Body of `PUT api/v1/billing/organization-details`.
| Property | Type | Required | Description |
|---|---|---|---|
addressLine1 | string | null | no | — |
addressLine2 | string | null | no | — |
city | string | null | no | — |
countryCode | string | null | no | ISO-3166 alpha-2, e.g. "GB". |
postalCode | string | null | no | Optional: not every country has postal codes. |
stateOrRegion | string | null | no | — |
taxId | string | null | no | Optional VAT / tax identification number. |
Essence.Payment.Billing.Api.Controllers.SetPriceBookStateRequest
| Property | Type | Required | Description |
|---|---|---|---|
endPilot | boolean | no | — |
isAuthority | boolean | null | no | — |
isPublicSectorProvider | boolean | null | no | — |
pilotEndsAt | string (date-time) | null | no | — |
pilotStartsAt | string (date-time) | null | no | — |
procurementFrameworkCode | string | null | no | — |
reason | string | null | no | — |
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.
| Property | Type | Required | Description |
|---|---|---|---|
email | string | null | no | — |
gateway | string | null | no | — |
name | string | null | no | — |
onboardingSessionId | string (uuid) | null | no | — |
organizationId | string (uuid) | null | no | — |
paymentMethodTypes | string[] | null | no | — |
Essence.Payment.Billing.Api.Controllers.StopGroupPremiumAccrualRequest
Body of `POST …/members/{memberRef}/stop-accrual`.
| Property | Type | Required | Description |
|---|---|---|---|
effectiveFrom | string | null | no | `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`.
| Property | Type | Required | Description |
|---|---|---|---|
adjustmentId | string | null | no | — |
claimedAmountMinor | integer (int64) | no | What the employer actually spent, in minor units. May be under the award. |
currency | string | null | no | — |
employerReference | string | null | no | The employer's own invoice/PO reference, for their reconciliation. |
incurredOn | string | null | no | ISO-8601 date the cost was incurred. |
Essence.Payment.Billing.Api.Controllers.SwitchSubscriptionLicenceRequest
The body of `POST …/subscriptions/{id}/switch`.
| Property | Type | Required | Description |
|---|---|---|---|
newPricingPlanId | string (uuid) | no | — |
Essence.Payment.Billing.Api.Controllers.TakeOwnershipRequest
Claim an account onto a named owner.
| Property | Type | Required | Description |
|---|---|---|---|
ownership | Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderOwnership | no | — |
reason | string | null | no | Why. Required. |
Essence.Payment.Billing.Api.Controllers.UpdateSubscriptionRequest
| Property | Type | Required | Description |
|---|---|---|---|
metadata | map<string, string> | null | no | — |
paymentMethodId | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.UpgradeDeveloperApiPlanRequest
Wire body of `POST /api/v1/subscriptions/developer-api/upgrade`.
| Property | Type | Required | Description |
|---|---|---|---|
breachedDimension | string | null | no | — |
developerId | string (uuid) | no | — |
keyId | string (uuid) | null | no | — |
toTierCode | string | null | no | — |
Essence.Payment.Billing.Api.Controllers.UpgradeSubscriptionRequest
| Property | Type | Required | Description |
|---|---|---|---|
newPricingPlanId | string (uuid) | no | — |
Essence.Payment.Billing.Api.Controllers.UpholdCommissionLineQueryRequest
Body of `POST /api/v1/commission-queries/{id}/uphold`.
| Property | Type | Required | Description |
|---|---|---|---|
reason | string | null | no | — |
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).
| Property | Type | Required | Description |
|---|---|---|---|
reason | string | null | no | — |
Essence.Payment.Billing.Application.Commands.ChainParticipants.RegisterChainParticipantCommand
| Property | Type | Required | Description |
|---|---|---|---|
invoicingPartyName | string | null | no | — |
orgId | string (uuid) | no | — |
parentParticipantId | string (uuid) | null | no | — |
partnerTier | string | null | no | — |
role | string | null | no | — |
Essence.Payment.Billing.Application.Commands.ChainParticipants.SetChainParticipantCommercialContactCommand
| Property | Type | Required | Description |
|---|---|---|---|
clearInvoicingPartyName | boolean | no | — |
clearRelationshipManager | boolean | no | — |
invoicingPartyName | string | null | no | — |
participantId | string (uuid) | no | — |
relationshipManagerEmail | string | null | no | — |
relationshipManagerName | string | null | no | — |
Essence.Payment.Billing.Application.Commands.ConsumerRemedies.ApplyUseWearDeductionCommand
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
appliedByPartyId | string (uuid) | no | — |
jurisdiction | string | null | no | — |
legalBasis | string | null | no | — |
sellerStatedReason | string | null | no | — |
settlementId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.ConsumerRemedies.ReconcileRemedyOwnershipCommand
| Property | Type | Required | Description |
|---|---|---|---|
priorTransferFound | boolean | no | — |
rightfulHolderUserId | string (uuid) | no | — |
settlementId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.ConsumerRemedies.RecordConsumerRemedyCommand
| Property | Type | Required | Description |
|---|---|---|---|
claimReference | string | null | no | — |
claimantUserId | string (uuid) | no | — |
currencyCode | string | null | no | — |
organizationId | string (uuid) | null | no | — |
originalReceiptReference | string | null | no | — |
remedyAgreedAt | string (date-time) | no | — |
remedyAmount | number (double) | no | — |
remedyType | Essence.Payment.Billing.Domain.Aggregates.ConsumerRemedySettlement.ConsumerRemedyType | no | — |
Essence.Payment.Billing.Application.Commands.ConsumerRemedies.ReviewUseWearDeductionCommand
| Property | Type | Required | Description |
|---|---|---|---|
accept | boolean | no | — |
disputeReason | string | null | no | — |
settlementId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Enterprise.ActivateEnterpriseContractCommand
| Property | Type | Required | Description |
|---|---|---|---|
contractId | string (uuid) | no | — |
secondApproverId | string (uuid) | null | no | — |
Essence.Payment.Billing.Application.Commands.Enterprise.AdvanceEnterpriseDunningCommand
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | null | no | — |
contractId | string (uuid) | no | — |
invoiceDueDate | string (date-time) | no | — |
invoiceId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Enterprise.AmendEnterpriseContractCommand
| Property | Type | Required | Description |
|---|---|---|---|
additionalCommitment | number (double) | no | — |
additionalSeats | integer (int32) | no | — |
contractId | string (uuid) | no | — |
currency | string | null | no | — |
description | string | null | no | — |
effectiveDate | string (date-time) | no | — |
Essence.Payment.Billing.Application.Commands.Enterprise.CreateEnterpriseContractCommand
| Property | Type | Required | Description |
|---|---|---|---|
autoRenew | boolean | no | — |
committedSeats | integer (int32) | no | — |
contractEnd | string (date-time) | no | — |
contractStart | string (date-time) | no | — |
currency | string | null | no | — |
customPrice | number (double) | no | — |
invoiceCadence | string | null | no | — |
organizationId | string (uuid) | no | — |
originatedBy | string (uuid) | no | — |
overageSeatRate | number (double) | no | — |
paymentTermsDays | integer (int32) | no | — |
subscriptionId | string (uuid) | null | no | — |
Essence.Payment.Billing.Application.Commands.Family.AcceptFamilyInviteCommand
| Property | Type | Required | Description |
|---|---|---|---|
memberId | string (uuid) | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Family.InviteFamilyMemberCommand
| Property | Type | Required | Description |
|---|---|---|---|
email | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Family.OpenFamilyRosterCommand
| Property | Type | Required | Description |
|---|---|---|---|
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.GroupPremium.GroupPremiumAccrualInput
| Property | Type | Required | Description |
|---|---|---|---|
basis | string | null | no | — |
coveredDays | integer (int32) | no | — |
currency | string | null | no | — |
grossMinor | integer (int64) | no | — |
memberRef | string | null | no | — |
periodFrom | string | null | no | — |
periodTo | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Invoices.CreateInvoiceCommand
| Property | Type | Required | Description |
|---|---|---|---|
dueDate | string (date-time) | no | — |
lineItems | Essence.Payment.Billing.Application.Commands.Invoices.CreateInvoiceLineItemDto[] | null | no | — |
metadata | map<string, string> | null | no | — |
organizationId | string (uuid) | null | no | — |
subscriptionId | string (uuid) | null | no | — |
type | string | null | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Invoices.CreateInvoiceLineItemDto
| Property | Type | Required | Description |
|---|---|---|---|
description | string | null | no | — |
periodEnd | string (date-time) | null | no | — |
periodStart | string (date-time) | null | no | — |
quantity | number (double) | no | — |
taxInclusive | boolean | no | — |
taxRate | number (double) | no | — |
unitPrice | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
Essence.Payment.Billing.Application.Commands.Invoices.GenerateUsageInvoiceCommand
| Property | Type | Required | Description |
|---|---|---|---|
dueDate | string (date-time) | null | no | — |
includeOverageCharges | boolean | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
subscriptionId | string (uuid) | no | — |
taxRate | number (double) | no | — |
useConsolidatedLineItems | boolean | no | — |
Essence.Payment.Billing.Application.Commands.LevyAccount.ApprenticeshipMilestoneInput
| Property | Type | Required | Description |
|---|---|---|---|
isCompletionPayment | boolean | no | — |
milestoneCode | string | null | no | — |
milestoneTitle | string | null | no | — |
plannedPence | integer (int64) | no | — |
Essence.Payment.Billing.Application.Commands.LevyAccount.ApprovedProviderDto
| Property | Type | Required | Description |
|---|---|---|---|
name | string | null | no | — |
organizationId | string (uuid) | no | — |
registerReference | string | null | no | — |
withdrawnAtIso | string | null | no | — |
Essence.Payment.Billing.Application.Commands.LevyAccount.FundedStandardDto
| Property | Type | Required | Description |
|---|---|---|---|
coInvestmentPercent | integer (int32) | no | — |
fundingBandCapPence | integer (int64) | no | — |
standardId | string | null | no | — |
title | string | null | no | — |
withdrawnAtIso | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementImportDto
| Property | Type | Required | Description |
|---|---|---|---|
exceptionCount | integer (int32) | no | — |
importId | string (uuid) | null | no | — |
lineCount | integer (int32) | no | — |
lines | Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementLineDto[] | null | no | — |
marketplaceCode | string | null | no | — |
matchedCount | integer (int32) | no | — |
openExceptionCount | integer (int32) | no | — |
outcome | string | null | no | — |
reportReference | string | null | no | — |
totals | Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementTotalDto[] | null | no | — |
Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementLineDto
| Property | Type | Required | Description |
|---|---|---|---|
adjustmentAmount | number (double) | no | — |
currencyCode | string | null | no | — |
distributorMarginAmount | number (double) | no | — |
distributorMarginPercent | number (double) | null | no | — |
exceptionCode | string | null | no | — |
exceptionDetail | string | null | no | — |
exceptionOwner | string | null | no | — |
grossAmount | number (double) | no | — |
isOpen | boolean | no | — |
lineId | string (uuid) | no | — |
marketplaceLineReference | string | null | no | — |
marketplaceSubscriptionId | string | null | no | — |
netAmount | number (double) | no | — |
periodEndUtc | string (date-time) | no | — |
periodStartUtc | string (date-time) | no | — |
position | integer (int32) | no | — |
reportedUsageQuantity | number (double) | null | no | — |
resolution | string | null | no | — |
resolvedAtUtc | string (date-time) | null | no | — |
retiedSubscriptionId | string (uuid) | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | null | no | — |
trail | Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementTrailEntryDto[] | null | no | — |
Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementTotalDto
| Property | Type | Required | Description |
|---|---|---|---|
adjustmentAmount | number (double) | no | — |
currencyCode | string | null | no | — |
distributorMarginAmount | number (double) | no | — |
grossAmount | number (double) | no | — |
netAmount | number (double) | no | — |
Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementTrailEntryDto
| Property | Type | Required | Description |
|---|---|---|---|
action | string | null | no | — |
actor | string | null | no | — |
owner | string | null | no | — |
previousOwner | string | null | no | — |
reason | string | null | no | — |
recordedAtUtc | string (date-time) | no | — |
sequence | integer (int32) | no | — |
subscriptionId | string (uuid) | null | no | — |
Essence.Payment.Billing.Application.Commands.Marketplace.MarketplaceActivationResultDto
| Property | Type | Required | Description |
|---|---|---|---|
marketplaceActivated | boolean | no | — |
marketplaceCode | string | null | no | — |
marketplaceFailureCode | string | null | no | — |
marketplaceSubscriptionId | string | null | no | — |
replayed | boolean | no | — |
subscription | Essence.Payment.Billing.Application.DTOs.SubscriptionDto | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Marketplace.MarketplaceLifecycleResultDto
| Property | Type | Required | Description |
|---|---|---|---|
change | string | null | no | — |
eventId | string | null | no | — |
outcome | string | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | null | no | — |
Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderPayoutStatusDto
| Property | Type | Required | Description |
|---|---|---|---|
clawedBackGbp | number (double) | no | — |
paidGbp | number (double) | no | — |
pendingGbp | number (double) | no | — |
refundedGbp | number (double) | no | — |
reversedGbp | number (double) | no | — |
status | string | null | no | — |
voidedGbp | number (double) | no | — |
Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementDto
| Property | Type | Required | Description |
|---|---|---|---|
exchangeTakePercent | number (double) | no | — |
offerings | Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementOfferingDto[] | null | no | — |
partnerId | string (uuid) | no | — |
period | string | null | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
totals | Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMoneyDto | no | — |
Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMetricDto
| Property | Type | Required | Description |
|---|---|---|---|
metricCode | string | null | no | — |
money | Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMoneyDto | no | — |
status | string | null | no | — |
unit | string | null | no | — |
unitPriceGbp | number (double) | null | no | — |
unitsUsed | number (double) | no | — |
uses | integer (int32) | no | — |
Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMoneyDto
| Property | Type | Required | Description |
|---|---|---|---|
payout | Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderPayoutStatusDto | no | — |
ratedGbp | number (double) | no | — |
ratedLines | integer (int32) | no | — |
shareGbp | number (double) | no | — |
takeGbp | number (double) | no | — |
unitsRated | number (double) | no | — |
Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementOfferingDto
| Property | Type | Required | Description |
|---|---|---|---|
metrics | Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMetricDto[] | null | no | — |
offeringId | string (uuid) | no | — |
totals | Essence.Payment.Billing.Application.Commands.PartnerMetrics.BuilderStatementMoneyDto | no | — |
Essence.Payment.Billing.Application.Commands.PartnerMetrics.PartnerMetricDto
| Property | Type | Required | Description |
|---|---|---|---|
exchangeTakePercent | number (double) | no | — |
id | string (uuid) | no | — |
metricCode | string | null | no | — |
offeringId | string (uuid) | no | — |
partnerId | string (uuid) | no | — |
status | string | null | no | — |
unit | string | null | no | — |
unitPriceGbp | number (double) | no | — |
Essence.Payment.Billing.Application.Commands.Payments.CreatePaymentCommand
| Property | Type | Required | Description |
|---|---|---|---|
amount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
invoiceId | string (uuid) | null | no | — |
metadata | map<string, string> | null | no | — |
paymentGateway | string | null | no | — |
paymentMethod | string | null | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Payments.CreatePaymentIntentCommand
| Property | Type | Required | Description |
|---|---|---|---|
amount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
captureImmediately | boolean | no | — |
confirmImmediately | boolean | no | — |
customerId | string | null | no | — |
description | string | null | no | — |
invoiceId | string (uuid) | null | no | — |
metadata | map<string, string> | null | no | — |
paymentGateway | string | null | no | — |
paymentMethodId | string | null | no | — |
require3DSecure | boolean | no | — |
returnUrl | string | null | no | — |
statementDescriptor | string | null | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Payouts.CreatePayoutCommand
| Property | Type | Required | Description |
|---|---|---|---|
commissionRate | number (double) | no | — |
currency | string | null | no | — |
partnerId | string (uuid) | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
totalRevenue | number (double) | no | — |
Essence.Payment.Billing.Application.Commands.Payouts.ProcessPayoutCommand
| Property | Type | Required | Description |
|---|---|---|---|
payoutId | string (uuid) | no | — |
transactionId | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Payouts.RecordPayoutDisbursementFailureCommand
| Property | Type | Required | Description |
|---|---|---|---|
failureReason | string | null | no | — |
payoutId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Payouts.ReissuePayoutManuallyCommand
| Property | Type | Required | Description |
|---|---|---|---|
manualReference | string | null | no | — |
payoutId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.PremiumFinance.ScheduledInstalmentInput
| Property | Type | Required | Description |
|---|---|---|---|
amountMinor | integer (int64) | no | — |
dueOn | string | null | no | — |
Essence.Payment.Billing.Application.Commands.PriceBook.OrganizationPriceBookStateDto
| Property | Type | Required | Description |
|---|---|---|---|
isAuthority | boolean | no | — |
isPublicSectorProvider | boolean | no | — |
organizationId | string (uuid) | no | — |
pilotActive | boolean | no | — |
pilotEndsAt | string (date-time) | null | no | — |
pilotStartsAt | string (date-time) | null | no | — |
procurementFrameworkCode | string | null | no | — |
reason | string | null | no | — |
setAt | string (date-time) | no | — |
setBy | string | null | no | — |
Essence.Payment.Billing.Application.Commands.PricingPlans.CreatePricingPlanCommand
| Property | Type | Required | Description |
|---|---|---|---|
basePrice | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
billingPeriod | Essence.Payment.Billing.Application.DTOs.BillingPeriodDto | no | — |
description | string | null | no | — |
features | map<string, unspecified> | null | no | — |
metadata | map<string, string> | null | no | — |
name | string | null | no | — |
tier | string | null | no | — |
trialDays | integer (int32) | no | — |
Essence.Payment.Billing.Application.Commands.PricingPlans.UpdatePricingPlanCommand
| Property | Type | Required | Description |
|---|---|---|---|
basePrice | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
boundOrganizationId | string (uuid) | null | no | — |
description | string | null | no | — |
features | map<string, unspecified> | null | no | — |
id | string (uuid) | no | — |
isPubliclyListed | boolean | null | no | — |
metadata | map<string, string> | null | no | — |
name | string | null | no | — |
releaseOrganizationBinding | boolean | no | — |
skuCodes | string[] | null | no | — |
trialDays | integer (int32) | null | no | — |
Essence.Payment.Billing.Application.Commands.RenewalOutcomes.RenewalOutcomeResponse
| Property | Type | Required | Description |
|---|---|---|---|
executed | boolean | no | — |
executionReference | string | null | no | — |
reason | string | null | no | — |
Essence.Payment.Billing.Application.Commands.RetainerTrust.RetainerClearanceOutcome
0 | 1 | 2 with no declared properties.
Essence.Payment.Billing.Application.Commands.Skus.CreateSkuCommand
| Property | Type | Required | Description |
|---|---|---|---|
code | string | null | no | — |
entitlements | map<string, integer (int32) | null> | null | no | — |
family | string | null | no | — |
listPrice | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
name | string | null | no | — |
prerequisites | string[] | null | no | — |
Essence.Payment.Billing.Application.Commands.Skus.ImportSkuRegistryCommand
| Property | Type | Required | Description |
|---|---|---|---|
skus | Essence.Payment.Billing.Application.Commands.Skus.SkuRegistryItem[] | null | no | — |
sourceRef | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Skus.SkuRegistryImportResult
| Property | Type | Required | Description |
|---|---|---|---|
created | integer (int32) | no | — |
deprecated | integer (int32) | no | — |
errors | string[] | null | no | — |
grantsAdded | integer (int32) | no | — |
grantsRemoved | integer (int32) | no | — |
metricCodesAdded | integer (int32) | no | — |
skipped | integer (int32) | no | — |
unchanged | integer (int32) | no | — |
withdrawn | integer (int32) | no | — |
Essence.Payment.Billing.Application.Commands.Skus.SkuRegistryItem
| Property | Type | Required | Description |
|---|---|---|---|
aliasOf | string | null | no | — |
code | string | null | no | — |
displayName | string | null | no | — |
disposition | string | null | no | — |
entitlements | map<string, integer (int32)> | null | no | — |
family | string | null | no | — |
includesUsers | integer (int32) | null | no | — |
licenceTier | integer (int32) | null | no | — |
maxPerOwner | integer (int32) | null | no | — |
metricCodes | string[] | null | no | — |
minimumInstanceTier | integer (int32) | null | no | — |
minimumTermMonths | integer (int32) | null | no | — |
name | string | null | no | — |
prerequisites | string[] | null | no | — |
price | number (double) | null | no | — |
priceUnitSize | integer (int32) | null | no | — |
ratifiedBy | string | null | no | — |
requiresInstanceTierAtLeast | integer (int32) | null | no | — |
requiresPartnerStanding | boolean | null | no | — |
subname | string | null | no | — |
successor | string | null | no | — |
who | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Skus.TransitionSkuStatusCommand
| Property | Type | Required | Description |
|---|---|---|---|
code | string | null | no | — |
successorSkuCode | string | null | no | — |
targetStatus | string | null | no | — |
Essence.Payment.Billing.Application.Commands.SponsoredBilling.ConvertSponsoredEntitlementToSelfPayCommand
| Property | Type | Required | Description |
|---|---|---|---|
paymentMethodId | string | null | no | — |
sponsoredEntitlementId | string (uuid) | no | — |
targetPricingPlanId | string (uuid) | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Sponsorships.AudienceSelectorRequest
| Property | Type | Required | Description |
|---|---|---|---|
autoEnrol | boolean | no | — |
csvRef | string | null | no | — |
segmentIds | string[] | null | no | — |
type | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Sponsorships.CancelSponsorshipCommand
| Property | Type | Required | Description |
|---|---|---|---|
attestationAccepted | boolean | no | — |
reason | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Sponsorships.CreateSponsorshipCommand
| Property | Type | Required | Description |
|---|---|---|---|
audience | Essence.Payment.Billing.Application.Commands.Sponsorships.AudienceSelectorRequest | no | — |
budgetCapMinor | integer (int64) | no | — |
currency | string | null | no | — |
expiresAt | string (date-time) | null | no | — |
lawfulBasis | Essence.Payment.Billing.Application.Commands.Sponsorships.LawfulBasisAttestationRequest | no | — |
moduleId | string | null | no | — |
moduleName | string | null | no | — |
recipientResolution | Essence.Payment.Billing.Application.Commands.Sponsorships.RecipientResolutionSummaryRequest | no | — |
sponsorDisplayName | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Sponsorships.DispatchRecipientRequest
| Property | Type | Required | Description |
|---|---|---|---|
contactHash | string | null | no | — |
destinationEmail | string | null | no | — |
destinationPhone | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Sponsorships.DispatchSponsorshipInvitesCommand
| Property | Type | Required | Description |
|---|---|---|---|
recipients | Essence.Payment.Billing.Application.Commands.Sponsorships.DispatchRecipientRequest[] | null | no | — |
Essence.Payment.Billing.Application.Commands.Sponsorships.LawfulBasisAttestationRequest
| Property | Type | Required | Description |
|---|---|---|---|
attested | boolean | no | — |
authoriser | string | null | no | — |
basis | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Sponsorships.RecipientResolutionSummaryRequest
| Property | Type | Required | Description |
|---|---|---|---|
csvRef | string | null | no | — |
dispatchable | integer (int32) | no | — |
duplicates | integer (int32) | no | — |
existingUsers | integer (int32) | no | — |
invalid | integer (int32) | no | — |
newContacts | integer (int32) | no | — |
suppressed | integer (int32) | no | — |
totalRows | integer (int32) | no | — |
Essence.Payment.Billing.Application.Commands.Sponsorships.UpdateSponsorshipAudienceCommand
| Property | Type | Required | Description |
|---|---|---|---|
autoEnrol | boolean | no | — |
csvRef | string | null | no | — |
recipientResolution | Essence.Payment.Billing.Application.Commands.Sponsorships.RecipientResolutionSummaryRequest | no | — |
segmentIds | string[] | null | no | — |
type | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Subscriptions.ChannelRouteDto
| Property | Type | Required | Description |
|---|---|---|---|
channelPartnerId | string (uuid) | null | no | — |
dealRegistrationId | string (uuid) | null | no | — |
hostingSovereignInstanceId | string (uuid) | null | no | — |
operatorOrganizationId | string (uuid) | null | no | — |
route | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Subscriptions.CreateSubscriptionCommand
| Property | Type | Required | Description |
|---|---|---|---|
channelRoute | Essence.Payment.Billing.Application.Commands.Subscriptions.ChannelRouteDto | no | — |
collectionMethod | Essence.Payment.Billing.Domain.Aggregates.Subscription.CollectionMethod | no | — |
confirmedPrice | Essence.Payment.Billing.Application.DTOs.CheckoutPriceDto | no | — |
currency | string | null | no | — |
dealAuthorisationReference | string | null | no | — |
isBaseSubscription | boolean | no | — |
items | Essence.Payment.Billing.Application.Commands.Subscriptions.CreateSubscriptionItemDto[] | null | no | — |
licensedSeats | integer (int32) | no | — |
metadata | map<string, string> | null | no | — |
offeredPrice | Essence.Payment.Billing.Application.DTOs.CheckoutPriceDto | no | — |
organizationId | string (uuid) | null | no | — |
overrideTrialDays | integer (int32) | null | no | — |
pricingPlanId | string (uuid) | no | — |
providerInstancePrice | Essence.Payment.Billing.Application.Commands.Subscriptions.ProviderInstancePriceDto | no | — |
reEngagementTouchId | string | null | no | — |
skuCode | string | null | no | — |
startDate | string (date-time) | null | no | — |
subscriptionClass | Essence.Payment.Billing.Domain.Aggregates.Subscription.SubscriptionClass | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Subscriptions.CreateSubscriptionItemDto
| Property | Type | Required | Description |
|---|---|---|---|
pricingPlanId | string (uuid) | no | — |
quantity | integer (int32) | no | — |
Essence.Payment.Billing.Application.Commands.Subscriptions.ProviderInstancePriceDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
currency | string | null | no | — |
hostingOfferId | string (uuid) | no | — |
priceSource | string | null | no | — |
resolvedAtUtc | string (date-time) | no | — |
sovereignInstanceId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Commands.Usage.CreateUsageRecordCommand
| Property | Type | Required | Description |
|---|---|---|---|
actionDigest | string | null | no | — |
metadata | map<string, unspecified> | null | no | — |
metricName | string | null | no | — |
metricValue | number (double) | no | — |
quotaReservationKey | string | null | no | — |
subscriptionId | string (uuid) | no | — |
timestamp | string (date-time) | no | — |
unit | string | null | no | — |
Essence.Payment.Billing.Application.Commands.Usage.QuotaReservationReleaseResponseDto
| Property | Type | Required | Description |
|---|---|---|---|
idempotencyKey | string | null | no | — |
outcome | string | null | no | — |
released | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.AccessToWorkAwardDto
| Property | Type | Required | Description |
|---|---|---|---|
adjustmentId | string | null | no | — |
approvedAmountMinor | integer (int64) | no | — |
approvedAt | string | null | no | — |
awardId | string | null | no | — |
costsEligibleFrom | string | null | no | — |
currency | string | null | no | — |
fundingCategory | string | null | no | — |
schemeReference | string | null | no | — |
withdrawnAt | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.AccountCollectionsStateDto
| Property | Type | Required | Description |
|---|---|---|---|
accountId | string (uuid) | no | — |
accountKey | string | null | no | — |
accountKind | string | null | no | — |
arrangementNote | string | null | no | — |
automationPausedUntil | string (date-time) | null | no | — |
automationSuppressed | boolean | no | — |
holdCount | integer (int32) | no | — |
holdPlacedAt | string (date-time) | null | no | — |
holdPlacedByRef | string | null | no | — |
holdReason | string | null | no | — |
ladderStageAtHold | integer (int32) | no | — |
ownerRef | string | null | no | — |
ownership | string | null | no | — |
ownershipReason | string | null | no | — |
ownershipTakenAt | string (date-time) | null | no | — |
suppressionReason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ActivationAttributionByTouchDto
| Property | Type | Required | Description |
|---|---|---|---|
attributedActivationCount | integer (int32) | no | — |
firstActivationAt | string (date-time) | no | — |
lastActivationAt | string (date-time) | no | — |
reEngagementTouchId | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ActivationAttributionLinkageDto
| Property | Type | Required | Description |
|---|---|---|---|
activatedAt | string (date-time) | no | — |
eventPairEmitted | boolean | no | — |
organizationId | string (uuid) | null | no | — |
plan | string | null | no | — |
reEngagementTouchId | string | null | no | — |
subscriptionId | string (uuid) | no | — |
tier | string | null | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.ActivationAttributionReportDto
| Property | Type | Required | Description |
|---|---|---|---|
byTouch | Essence.Payment.Billing.Application.DTOs.ActivationAttributionByTouchDto[] | null | no | — |
distinctTouches | integer (int32) | no | — |
linkages | Essence.Payment.Billing.Application.DTOs.ActivationAttributionLinkageDto[] | null | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
totalAttributedActivations | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.ApprovedDealTermsDto
| Property | Type | Required | Description |
|---|---|---|---|
accountId | string (uuid) | no | — |
appliedAt | string (date-time) | null | no | — |
appliedToSubscriptionId | string (uuid) | null | no | — |
approvalLevel | string | null | no | — |
approvedAt | string (date-time) | no | — |
approvedBy | string | null | no | — |
approvedCurrencyCode | string | null | no | — |
approvedValue | number (double) | no | — |
authorisationReference | string | null | no | — |
caseId | string (uuid) | no | — |
isApplied | boolean | no | — |
opportunityId | string (uuid) | no | — |
reason | string | null | no | — |
requestedBy | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ArrearsEpisodeDto
| Property | Type | Required | Description |
|---|---|---|---|
closedAt | string (date-time) | null | no | — |
closureReason | string | null | no | — |
episodeNumber | integer (int32) | no | — |
isOpen | boolean | no | — |
openedAt | string (date-time) | no | — |
openedByInstalmentSequence | integer (int32) | no | — |
openingArrearsMinor | integer (int64) | no | — |
Essence.Payment.Billing.Application.DTOs.ArrearsPaymentDto
| Property | Type | Required | Description |
|---|---|---|---|
amountMinor | integer (int64) | no | — |
arrearsCleared | boolean | no | — |
outstandingAfterMinor | integer (int64) | no | — |
paidAt | string (date-time) | no | — |
paymentReference | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ArrearsPaymentResultDto
| Property | Type | Required | Description |
|---|---|---|---|
accepted | boolean | no | — |
arrearsCleared | boolean | no | — |
currency | string | null | no | — |
outstandingArrearsMinor | integer (int64) | no | — |
paymentReference | string | null | no | — |
replayed | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.AttributedActorDto
| Property | Type | Required | Description |
|---|---|---|---|
actorLabel | string | null | no | — |
role | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.AudienceSelectorDto
| Property | Type | Required | Description |
|---|---|---|---|
autoEnrol | boolean | no | — |
csvRef | string | null | no | — |
estimatedReach | Essence.Payment.Billing.Domain.ValueObjects.KAnonCount | no | — |
segmentIds | string[] | null | no | — |
type | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.BillingActualsDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
contractVersion | string | null | no | — |
currency | string | null | no | — |
freshnessBudgetHours | integer (int32) | no | — |
isStale | boolean | no | — |
lastActualAt | string (date-time) | null | no | — |
organizationId | string (uuid) | no | — |
paidInvoiceCount | integer (int32) | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
realisedSubtotal | number (double) | no | — |
realisedTax | number (double) | no | — |
realisedTotal | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.BillingDegradationNoticeDto
| Property | Type | Required | Description |
|---|---|---|---|
billedThroughDisplayName | string | null | no | — |
cause | string | null | no | — |
consequenceAtUtc | string (date-time) | null | no | — |
message | string | null | no | — |
noticeKind | string | null | no | — |
payerActionRequired | boolean | no | — |
readOnlyFromUtc | string (date-time) | null | no | — |
readOnlySinceUtc | string (date-time) | null | no | — |
reinstatementByUtc | string (date-time) | null | no | — |
state | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.BillingPeriodDto
| Property | Type | Required | Description |
|---|---|---|---|
interval | string | null | no | — |
intervalCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.BulkSeatReclaimOutcomeDto
| Property | Type | Required | Description |
|---|---|---|---|
failureReason | string | null | no | — |
leaverRef | string (uuid) | no | — |
seatReassignmentId | string (uuid) | null | no | — |
succeeded | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.CancellationPreviewDto
| Property | Type | Required | Description |
|---|---|---|---|
affectedReach | Essence.Payment.Billing.Domain.ValueObjects.KAnonCount | no | — |
currency | string | null | no | — |
invoiceLines | Essence.Payment.Billing.Application.DTOs.ProRataInvoiceLineDto[] | null | no | — |
nextInvoiceAt | string (date-time) | null | no | — |
proRataChargeMinor | integer (int64) | no | — |
proRataCreditMinor | integer (int64) | no | — |
requiresAttestation | boolean | no | — |
sponsorshipId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.ChainParticipantDto
| Property | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | no | — |
invoicingPartyName | string | null | no | — |
orgId | string (uuid) | no | — |
parentParticipantId | string (uuid) | null | no | — |
partnerTier | string | null | no | — |
relationshipManagerEmail | string | null | no | — |
relationshipManagerName | string | null | no | — |
role | string | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ChannelCommissionDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
calculatedAt | string (date-time) | no | — |
currency | string | null | no | — |
dealId | string | null | no | — |
id | string (uuid) | no | — |
isClawback | boolean | no | — |
model | string | null | no | — |
paidAt | string (date-time) | null | no | — |
partnerId | string | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ChannelCommissionStatementDto
| Property | Type | Required | Description |
|---|---|---|---|
commissions | Essence.Payment.Billing.Application.DTOs.ChannelCommissionDto[] | null | no | — |
partnerId | string | null | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
totalPaid | number (double) | no | — |
totalPending | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.ChannelOrderDto
| Property | Type | Required | Description |
|---|---|---|---|
attributionChain | string | null | no | — |
buyPrice | number (double) | null | no | — |
commercialModel | string | null | no | — |
commissionRate | number (double) | null | no | — |
currency | string | null | no | — |
customerOrgId | string | null | no | — |
dealId | string | null | no | — |
id | string (uuid) | no | — |
orderValue | number (double) | no | — |
partnerId | string | null | no | — |
referralFee | number (double) | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ChannelPartnerRevenueDto
| Property | Type | Required | Description |
|---|---|---|---|
commission | number (double) | no | — |
orderCount | integer (int32) | no | — |
partnerId | string | null | no | — |
partnerName | string | null | no | — |
revenue | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.ChannelReportDto
| Property | Type | Required | Description |
|---|---|---|---|
byPartner | Essence.Payment.Billing.Application.DTOs.ChannelPartnerRevenueDto[] | null | no | — |
totalChannelCommissions | number (double) | no | — |
totalChannelPayouts | number (double) | no | — |
totalChannelRevenue | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.ChannelTrueUpLineDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
commissionId | string (uuid) | no | — |
currency | string | null | no | — |
dealId | string | null | no | — |
earnedAt | string (date-time) | no | — |
kind | string | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ChannelTrueUpOrderDto
| Property | Type | Required | Description |
|---|---|---|---|
acknowledgedAt | string (date-time) | null | no | — |
actualValue | number (double) | no | — |
adjustmentAmount | number (double) | no | — |
adjustmentInvoiceId | string (uuid) | null | no | — |
channelOrderId | string (uuid) | no | — |
dealId | string | null | no | — |
orderedValue | number (double) | no | — |
reconciledAt | string (date-time) | no | — |
trueUpId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.ChannelTrueUpPeriodDto
| Property | Type | Required | Description |
|---|---|---|---|
lines | Essence.Payment.Billing.Application.DTOs.ChannelTrueUpLineDto[] | null | no | — |
orders | Essence.Payment.Billing.Application.DTOs.ChannelTrueUpOrderDto[] | null | no | — |
period | string | null | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
status | string | null | no | — |
totals | Essence.Payment.Billing.Application.DTOs.ChannelTrueUpTotalDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.ChannelTrueUpTotalDto
| Property | Type | Required | Description |
|---|---|---|---|
accrued | number (double) | no | — |
currency | string | null | no | — |
delta | number (double) | null | no | — |
trueUpAdjustment | number (double) | no | — |
truedUp | number (double) | null | no | — |
Essence.Payment.Billing.Application.DTOs.CheckoutPriceDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
currency | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.CheckoutPriceQuoteDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | null | no | — |
currency | string | null | no | — |
offeredAmount | number (double) | null | no | — |
offeredCurrency | string | null | no | — |
priceChanged | boolean | no | — |
purchasable | boolean | no | — |
requiresConfirmation | boolean | no | — |
skuCode | string | null | no | — |
status | string | null | no | — |
unavailableReason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ChurnReportDto
| Property | Type | Required | Description |
|---|---|---|---|
churnRate | number (double) | no | — |
involuntaryChurn | integer (int32) | no | — |
netChurn | integer (int32) | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
voluntaryChurn | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.CisContractorPolicyDto
| Property | Type | Required | Description |
|---|---|---|---|
citbLevyEnabled | boolean | no | — |
citbLevyRatePercent | number (double) | no | — |
deductOnLabourOnly | boolean | no | — |
isStatutoryDefault | boolean | no | — |
makerCheckerEnabled | boolean | no | — |
organizationId | string | null | no | — |
reverifyAfterDays | integer (int32) | no | — |
reverseChargeVat | boolean | no | — |
staleVerificationPosture | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.CisDeductionBreakdownDto
| Property | Type | Required | Description |
|---|---|---|---|
citbLevyPence | integer (int64) | no | — |
deductionBasePence | integer (int64) | no | — |
deductionPence | integer (int64) | no | — |
grossPence | integer (int64) | no | — |
labourPence | integer (int64) | no | — |
materialsPence | integer (int64) | no | — |
netPence | integer (int64) | no | — |
ratePercent | number (double) | no | — |
reverseChargeApplied | boolean | no | — |
status | string | null | no | — |
vatPence | integer (int64) | no | — |
Essence.Payment.Billing.Application.DTOs.CisDeductionStatementDto
| Property | Type | Required | Description |
|---|---|---|---|
breakdown | Essence.Payment.Billing.Application.DTOs.CisDeductionBreakdownDto | no | — |
contentHash | string | null | no | — |
contractorName | string | null | no | — |
contractorOrganizationId | string | null | no | — |
dueBy | string | null | no | — |
issuedAt | string | null | no | — |
paymentDate | string | null | no | — |
paymentId | string | null | no | — |
statementId | string | null | no | — |
subcontractorId | string | null | no | — |
subcontractorName | string | null | no | — |
taxMonthEnding | string | null | no | — |
verification | Essence.Payment.Billing.Application.DTOs.CisVerificationBindingDto | no | — |
Essence.Payment.Billing.Application.DTOs.CisDisbursementDto
| Property | Type | Required | Description |
|---|---|---|---|
anchorReference | string | null | no | — |
binding | Essence.Payment.Billing.Application.DTOs.CisVerificationBindingDto | no | — |
deductionPence | integer (int64) | no | — |
netPence | integer (int64) | no | — |
paidAt | string | null | no | — |
payRunId | string | null | no | — |
paymentId | string | null | no | — |
statement | Essence.Payment.Billing.Application.DTOs.CisDeductionStatementDto | no | — |
Essence.Payment.Billing.Application.DTOs.CisFreshnessOverrideDto
| Property | Type | Required | Description |
|---|---|---|---|
ageDays | number (double) | no | — |
overriddenAt | string | null | no | — |
overriddenBy | string | null | no | — |
reason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.CisVerificationBindingDto
| Property | Type | Required | Description |
|---|---|---|---|
boundAt | string | null | no | — |
canonicalForm | string | null | no | — |
checkedAt | string | null | no | — |
contentHash | string | null | no | — |
contractVersion | string | null | no | — |
override | Essence.Payment.Billing.Application.DTOs.CisFreshnessOverrideDto | no | — |
paymentId | string | null | no | — |
providerReference | string | null | no | — |
ratePercent | number (double) | no | — |
source | string | null | no | — |
status | string | null | no | — |
subcontractorId | string | null | no | — |
verificationId | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.CisVerificationRecordDto
| Property | Type | Required | Description |
|---|---|---|---|
checkedAt | string | null | no | — |
organizationId | string | null | no | — |
providerReference | string | null | no | — |
ratePercent | number (double) | no | — |
recordedAt | string | null | no | — |
relianceEndsAt | string | null | no | — |
source | string | null | no | — |
status | string | null | no | — |
subcontractorId | string | null | no | — |
taxYear | string | null | no | — |
verificationId | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.CommissionLineQueryDto
| Property | Type | Required | Description |
|---|---|---|---|
ageDays | integer (int32) | no | — |
closedAt | string (date-time) | null | no | — |
commissionId | string (uuid) | no | — |
currency | string | null | no | — |
decisionReason | string | null | no | — |
difference | number (double) | no | — |
expected | number (double) | no | — |
held | number (double) | no | — |
id | string (uuid) | no | — |
isClawbackLine | boolean | no | — |
ledger | number (double) | no | — |
note | string | null | no | — |
partnerId | string (uuid) | no | — |
raisedAt | string (date-time) | no | — |
reason | string | null | no | — |
status | string | null | no | — |
trail | Essence.Payment.Billing.Application.DTOs.CommissionLineQueryEventDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.CommissionLineQueryEventDto
| Property | Type | Required | Description |
|---|---|---|---|
actorRole | string | null | no | — |
amount | number (double) | null | no | — |
detail | string | null | no | — |
kind | string | null | no | — |
occurredAt | string (date-time) | no | — |
sequence | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.CompletionAuditJoinDto
| Property | Type | Required | Description |
|---|---|---|---|
anchorReference | string | null | no | — |
apprenticeReference | string | null | no | — |
apprenticeshipId | string | null | no | — |
completedAtIso | string | null | no | — |
credentialId | string | null | no | — |
evidenceEntryIds | string[] | null | no | — |
grade | string | null | no | — |
reconciliationLineIds | string[] | null | no | — |
standardId | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ConsumerRemedySettlementDto
| Property | Type | Required | Description |
|---|---|---|---|
claimReference | string | null | no | — |
claimantUserId | string (uuid) | no | — |
currencyCode | string | null | no | — |
deduction | Essence.Payment.Billing.Application.DTOs.UseWearDeductionDto | no | — |
id | string (uuid) | no | — |
isBlockedByDeductionReview | boolean | no | — |
netReleasedAmount | number (double) | null | no | — |
organizationId | string (uuid) | null | no | — |
originalReceiptReference | string | null | no | — |
ownershipReconciledAt | string (date-time) | null | no | — |
priorTransferFound | boolean | no | — |
proposedNetAmount | number (double) | no | — |
remedyAgreedAt | string (date-time) | no | — |
remedyAmount | number (double) | no | — |
remedyType | string | null | no | — |
rightfulHolderUserId | string (uuid) | null | no | — |
settledAt | string (date-time) | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.CoolingOffCancellationSettlementDto
| Property | Type | Required | Description |
|---|---|---|---|
coolingOffEndsAt | string (date-time) | no | — |
createdAt | string (date-time) | no | — |
currencyCode | string | null | no | — |
customerUserId | string (uuid) | no | — |
daysElapsed | integer (int32) | no | — |
deduction | number (double) | no | — |
id | string (uuid) | no | — |
noticeReceivedAt | string (date-time) | no | — |
price | number (double) | no | — |
providerOrganizationId | string (uuid) | no | — |
purchaseReference | string | null | no | — |
purchasedAt | string (date-time) | no | — |
refundAmount | number (double) | no | — |
refundReference | string | null | no | — |
refundSettledAt | string (date-time) | null | no | — |
serviceStartedAt | string (date-time) | null | no | — |
serviceTermDays | integer (int32) | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.CreditLiabilityReportDto
| Property | Type | Required | Description |
|---|---|---|---|
activeBalance | number (double) | no | — |
asOf | string (date-time) | no | — |
currency | string | null | no | — |
deferredBalance | number (double) | no | — |
expiringWithin30Days | number (double) | no | — |
expiringWithin60Days | number (double) | no | — |
expiringWithin90Days | number (double) | no | — |
projected30DayBurn | number (double) | no | — |
projected60DayBurn | number (double) | no | — |
projected90DayBurn | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.CreditNoteDto
| Property | Type | Required | Description |
|---|---|---|---|
currency | string | null | no | — |
id | string (uuid) | no | — |
issuedAt | string (date-time) | no | — |
lines | Essence.Payment.Billing.Application.DTOs.CreditNoteLineDto[] | null | no | — |
number | string | null | no | — |
organizationId | string (uuid) | null | no | — |
originalInvoiceId | string (uuid) | no | — |
originalInvoiceNumber | string | null | no | — |
reason | string | null | no | — |
subscriptionId | string (uuid) | null | no | — |
subtotal | number (double) | no | — |
taxAmount | number (double) | no | — |
total | number (double) | no | — |
userId | string (uuid) | no | — |
vatInclusive | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.CreditNoteLineDto
| Property | Type | Required | Description |
|---|---|---|---|
description | string | null | no | — |
gross | number (double) | no | — |
net | number (double) | no | — |
quantity | number (double) | no | — |
tax | number (double) | no | — |
taxInclusive | boolean | no | — |
taxRatePercent | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.DegradedSubscriptionLineDto
| Property | Type | Required | Description |
|---|---|---|---|
degradationAgeHours | number (double) | no | — |
degradedSinceUtc | string (date-time) | no | — |
organizationId | string (uuid) | null | no | — |
paymentFailureCount | integer (int32) | no | — |
subscriptionId | string (uuid) | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.DeveloperApiPlanCheckoutDto
| Property | Type | Required | Description |
|---|---|---|---|
chargeReference | string | null | no | — |
correlationId | string | null | no | — |
previousTierCode | string | null | no | — |
subscriptionId | string | null | no | — |
tierCode | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.DeveloperApiPlanTierDto
| Property | Type | Required | Description |
|---|---|---|---|
code | string | null | no | — |
currency | string | null | no | — |
isPurchasable | boolean | no | — |
isSellableNow | boolean | no | — |
listPrice | number (double) | null | no | — |
name | string | null | no | — |
planSkuCode | string | null | no | — |
requiresSalesContact | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.DeveloperApiUpgradeRequestDto
| Property | Type | Required | Description |
|---|---|---|---|
approverEmail | string | null | no | — |
requestId | string | null | no | — |
requestedAt | string (date-time) | no | — |
status | string | null | no | — |
toTierCode | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.EarlyLeaverDto
| Property | Type | Required | Description |
|---|---|---|---|
apprenticeReference | string | null | no | — |
apprenticeshipId | string | null | no | — |
lastAchievedMilestoneCode | string | null | no | — |
leftAtIso | string | null | no | — |
reason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.EnterpriseAgreementOverviewDto
| Property | Type | Required | Description |
|---|---|---|---|
actualSpend | Essence.Payment.Billing.Application.DTOs.MoneyFigureDto | no | — |
asOf | string (date-time) | no | — |
autoRenew | boolean | null | no | — |
committedSpend | number (double) | null | no | — |
contractVersion | string | null | no | — |
currency | string | null | no | — |
eaActive | boolean | no | — |
organizationId | string (uuid) | no | — |
seatPosition | string | null | no | — |
seatPositionLabel | string | null | no | — |
seatsAssigned | Essence.Payment.Billing.Application.DTOs.SeatFigureDto | no | — |
seatsCommitted | integer (int32) | null | no | — |
status | string | null | no | — |
termEnd | string (date-time) | null | no | — |
termStart | string (date-time) | null | no | — |
Essence.Payment.Billing.Application.DTOs.EnterpriseContractDto
| Property | Type | Required | Description |
|---|---|---|---|
activatedAt | string (date-time) | null | no | — |
autoRenew | boolean | no | — |
committedSeats | integer (int32) | no | — |
contractEnd | string (date-time) | no | — |
contractStart | string (date-time) | no | — |
currency | string | null | no | — |
customPrice | number (double) | no | — |
dunningInvoiceDueDate | string (date-time) | null | no | — |
dunningInvoiceId | string (uuid) | null | no | — |
dunningStep | string | null | no | — |
firstInvoiceAmount | number (double) | no | — |
id | string (uuid) | no | — |
invoiceCadence | string | null | no | — |
organizationId | string (uuid) | no | — |
overageSeatRate | number (double) | no | — |
paymentTermsDays | integer (int32) | no | — |
requiresSecondApproval | boolean | no | — |
secondApproverId | string (uuid) | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | null | no | — |
suspendedAt | string (date-time) | null | no | — |
Essence.Payment.Billing.Application.DTOs.ExecutiveDashboardDto
| Property | Type | Required | Description |
|---|---|---|---|
arr | number (double) | no | — |
currency | string | null | no | — |
generatedAt | string (date-time) | no | — |
grossMarginPercent | number (double) | no | — |
mrr | number (double) | no | — |
periodChannelCommissions | number (double) | no | — |
periodEnd | string (date-time) | no | — |
periodGrossMargin | number (double) | no | — |
periodRevenue | number (double) | no | — |
periodStart | string (date-time) | no | — |
revenueByStream | Essence.Payment.Billing.Application.DTOs.RevenueStreamLineDto[] | null | no | — |
topCustomers | Essence.Payment.Billing.Application.DTOs.TopCustomerRevenueDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.ExtendSandboxSponsorshipRequest
| Property | Type | Required | Description |
|---|---|---|---|
reason | string | null | no | — |
sponsoredUntil | string (date-time) | no | — |
Essence.Payment.Billing.Application.DTOs.FamilyInviteForUserDto
| Property | Type | Required | Description |
|---|---|---|---|
expiresAt | string (date-time) | no | — |
invitedAt | string (date-time) | no | — |
memberId | string (uuid) | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.FamilyMemberDto
| Property | Type | Required | Description |
|---|---|---|---|
acceptedAt | string (date-time) | null | no | — |
email | string | null | no | — |
expiresAt | string (date-time) | no | — |
id | string (uuid) | no | — |
invitedAt | string (date-time) | no | — |
occupiesSeat | boolean | no | — |
releasedAt | string (date-time) | null | no | — |
status | string | null | no | — |
userId | string (uuid) | null | no | — |
Essence.Payment.Billing.Application.DTOs.FamilyMembershipDto
| Property | Type | Required | Description |
|---|---|---|---|
availableSeats | integer (int32) | no | — |
id | string (uuid) | no | — |
maxSeats | integer (int32) | no | — |
members | Essence.Payment.Billing.Application.DTOs.FamilyMemberDto[] | null | no | — |
occupiedSeats | integer (int32) | no | — |
ownerUserId | string (uuid) | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.FamilyRosterForUserDto
| Property | Type | Required | Description |
|---|---|---|---|
availableSeats | integer (int32) | no | — |
found | boolean | no | — |
maxSeats | integer (int32) | no | — |
occupiedSeats | integer (int32) | no | — |
role | string | null | no | — |
rosterId | string (uuid) | null | no | — |
subscriptionId | string (uuid) | null | no | — |
Essence.Payment.Billing.Application.DTOs.GrandfatheredCohortDto
| Property | Type | Required | Description |
|---|---|---|---|
assumedChurnRateOnExpiry | number (double) | no | — |
currencyCode | string | null | no | — |
deferredRevenueToLockEnd | number (double) | no | — |
foregoneToDate | number (double) | no | — |
lockedSubscriberCount | integer (int32) | no | — |
locksExcludedForUnknownPeriod | integer (int32) | no | — |
locksNoLongerInForce | integer (int32) | no | — |
locksWithDeltaFromLockRecord | integer (int32) | no | — |
locksWithMeasuredDelta | integer (int32) | no | — |
months | Essence.Payment.Billing.Application.DTOs.GrandfatheredCohortMonthDto[] | null | no | — |
periodDeferredRevenue | number (double) | no | — |
projectedAnnualUpliftOnExpiry | number (double) | no | — |
supersedeReference | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.GrandfatheredCohortFinanceReportDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
assumedChurnRateOnExpiry | number (double) | no | — |
cohorts | Essence.Payment.Billing.Application.DTOs.GrandfatheredCohortDto[] | null | no | — |
resolutionRowsRead | integer (int32) | no | — |
supersedeReference | string | null | no | — |
truncated | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.GrandfatheredCohortMonthDto
| Property | Type | Required | Description |
|---|---|---|---|
deferredRevenueToLockEnd | number (double) | no | — |
expiringWithinNinetyDays | boolean | no | — |
listPrice | number (double) | null | no | — |
lockExpiryMonth | string | null | no | — |
lockedPrice | number (double) | null | no | — |
lockedSubscriberCount | integer (int32) | no | — |
periodDeferredRevenue | number (double) | no | — |
pricesVary | boolean | no | — |
projectedAnnualUpliftOnExpiry | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.GrandfatherPriceLockDto
| Property | Type | Required | Description |
|---|---|---|---|
appliedBy | string (uuid) | no | — |
createdAt | string (date-time) | no | — |
currencyCode | string | null | no | — |
id | string (uuid) | no | — |
inForce | boolean | no | — |
listAmountAtLock | number (double) | no | — |
lockedAmount | number (double) | no | — |
lockedUntil | string (date-time) | no | — |
organizationId | string (uuid) | null | no | — |
preExpiryNoticeDue | boolean | no | — |
preExpiryNoticeIssuedAt | string (date-time) | null | no | — |
releaseReason | string | null | no | — |
releasedAt | string (date-time) | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
supersedeReference | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.GrantSandboxSponsorshipRequest
| Property | Type | Required | Description |
|---|---|---|---|
grantId | string (uuid) | no | — |
organizationId | string (uuid) | no | — |
purpose | string | null | no | — |
reference | string | null | no | — |
skuCode | string | null | no | — |
sponsoredUntil | string (date-time) | no | — |
Essence.Payment.Billing.Application.DTOs.GroupPremiumAccrualDto
| Property | Type | Required | Description |
|---|---|---|---|
basis | string | null | no | — |
coveredDays | integer (int32) | no | — |
currency | string | null | no | — |
grossMinor | integer (int64) | no | — |
memberRef | string | null | no | — |
periodDays | integer (int32) | no | — |
periodFrom | string | null | no | — |
periodTo | string | null | no | — |
postedAt | string (date-time) | no | — |
postingReference | string | null | no | — |
revision | integer (int32) | no | — |
schemeId | string | null | no | — |
status | string | null | no | — |
voidReason | string | null | no | — |
voidedAt | string (date-time) | null | no | — |
Essence.Payment.Billing.Application.DTOs.GroupPremiumPostingResultDto
| Property | Type | Required | Description |
|---|---|---|---|
accruals | Essence.Payment.Billing.Application.DTOs.GroupPremiumAccrualDto[] | null | no | — |
posted | integer (int32) | no | — |
postingReference | string | null | no | — |
revised | integer (int32) | no | — |
unchanged | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.GroupPremiumSchemeLedgerDto
| Property | Type | Required | Description |
|---|---|---|---|
accruals | Essence.Payment.Billing.Application.DTOs.GroupPremiumAccrualDto[] | null | no | — |
accruedCount | integer (int32) | no | — |
accruedTotalMinor | integer (int64) | no | — |
currency | string | null | no | — |
from | string | null | no | — |
schemeId | string | null | no | — |
stops | Essence.Payment.Billing.Application.DTOs.GroupPremiumStopDto[] | null | no | — |
to | string | null | no | — |
voidedCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.GroupPremiumStopDto
| Property | Type | Required | Description |
|---|---|---|---|
effectiveFrom | string | null | no | — |
memberRef | string | null | no | — |
schemeId | string | null | no | — |
stoppedAt | string (date-time) | no | — |
voidedAccruals | Essence.Payment.Billing.Application.DTOs.GroupPremiumAccrualDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.GroupSchemeAggregationResultDto
| Property | Type | Required | Description |
|---|---|---|---|
billingModel | string | null | no | — |
chargedMinor | integer (int64) | no | — |
creditNoteId | string (uuid) | null | no | — |
creditNoteNumber | string | null | no | — |
creditedMinor | integer (int64) | no | — |
currency | string | null | no | — |
invoiceId | string (uuid) | null | no | — |
invoiceNumber | string | null | no | — |
lines | Essence.Payment.Billing.Application.DTOs.GroupSchemeInvoicedLineDto[] | null | no | — |
memberCount | integer (int32) | no | — |
organizationId | string (uuid) | no | — |
runReference | string | null | no | — |
schemeId | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.GroupSchemeBillingConfigurationDto
| Property | Type | Required | Description |
|---|---|---|---|
billingContactUserId | string (uuid) | null | no | — |
billingModel | string | null | no | — |
configuredAt | string (date-time) | no | — |
invoicingParty | string | null | no | — |
organizationId | string (uuid) | no | — |
paymentTermsDays | integer (int32) | no | — |
schemeId | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.GroupSchemeBillingLedgerDto
| Property | Type | Required | Description |
|---|---|---|---|
billedMinor | integer (int64) | no | — |
currency | string | null | no | — |
invoicingParty | string | null | no | — |
lines | Essence.Payment.Billing.Application.DTOs.GroupSchemeInvoicedLineDto[] | null | no | — |
organizationId | string (uuid) | no | — |
pendingMinor | integer (int64) | no | — |
schemeId | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.GroupSchemeInvoicedLineDto
| Property | Type | Required | Description |
|---|---|---|---|
accrualId | string (uuid) | no | — |
accrualRevision | integer (int32) | no | — |
amountMinor | integer (int64) | no | — |
currency | string | null | no | — |
invoiceId | string (uuid) | no | — |
invoiceNumber | string | null | no | — |
memberRef | string | null | no | — |
periodFrom | string | null | no | — |
periodTo | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.HeldLicenceDto
| Property | Type | Required | Description |
|---|---|---|---|
licenceFamily | string | null | no | — |
licenceTier | integer (int32) | null | no | — |
skuCode | string | null | no | — |
sponsored | boolean | no | — |
sponsoredUntil | string (date-time) | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
termCommitmentEndUtc | string (date-time) | null | no | — |
Essence.Payment.Billing.Application.DTOs.HeldSandboxLicenceDto
| Property | Type | Required | Description |
|---|---|---|---|
createdAt | string (date-time) | no | — |
currentPeriodEnd | string (date-time) | no | — |
licenceStatus | string | null | no | — |
reusable | boolean | no | — |
skuCode | string | null | no | — |
sponsored | boolean | no | — |
sponsoredUntil | string (date-time) | null | no | — |
sponsorshipPurpose | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.InstalmentAttemptDto
| Property | Type | Required | Description |
|---|---|---|---|
attemptNumber | integer (int32) | no | — |
attemptedAt | string (date-time) | no | — |
failureCode | string | null | no | — |
outcome | string | null | no | — |
paymentReference | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.InvoiceDto
| Property | Type | Required | Description |
|---|---|---|---|
blobReference | string | null | no | — |
createdAt | string (date-time) | no | — |
dueDate | string (date-time) | no | — |
id | string (uuid) | no | — |
invoiceNumber | string | null | no | — |
lineItems | Essence.Payment.Billing.Application.DTOs.InvoiceLineItemDto[] | null | no | — |
metadata | map<string, string> | null | no | — |
organizationId | string (uuid) | null | no | — |
paidDate | string (date-time) | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | null | no | — |
subtotal | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
taxAmount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
totalAmount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
type | string | null | no | — |
updatedAt | string (date-time) | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.InvoiceLineItemDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
createdAt | string (date-time) | no | — |
description | string | null | no | — |
id | string (uuid) | no | — |
invoiceId | string (uuid) | no | — |
metadata | map<string, string> | null | no | — |
periodEnd | string (date-time) | null | no | — |
periodStart | string (date-time) | null | no | — |
quantity | number (double) | no | — |
taxAmount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
taxRate | number (double) | no | — |
unitPrice | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
updatedAt | string (date-time) | no | — |
Essence.Payment.Billing.Application.DTOs.InvoluntaryChurnReportDto
| Property | Type | Required | Description |
|---|---|---|---|
affectedEntitlementsCount | integer (int32) | no | — |
averageDegradationAgeHours | number (double) | no | — |
currentlyDegradedCount | integer (int32) | no | — |
degradedSubscriptions | Essence.Payment.Billing.Application.DTOs.DegradedSubscriptionLineDto[] | null | no | — |
involuntarilyCanceledCount | integer (int32) | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
reason | string | null | no | — |
totalPaymentFailures | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.LawfulBasisRecordDto
| Property | Type | Required | Description |
|---|---|---|---|
attested | boolean | no | — |
attestedAt | string (date-time) | no | — |
attestedBy | string | null | no | — |
authoriser | string | null | no | — |
basis | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.LevyAccountDto
| Property | Type | Required | Description |
|---|---|---|---|
allocations | Essence.Payment.Billing.Application.DTOs.LevyAllocationDto[] | null | no | — |
availablePence | integer (int64) | no | — |
committedPence | integer (int64) | no | — |
entries | Essence.Payment.Billing.Application.DTOs.LevyLedgerEntryDto[] | null | no | — |
lastReconciledAtIso | string | null | no | — |
organizationId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.LevyAllocationDto
| Property | Type | Required | Description |
|---|---|---|---|
allocationId | string | null | no | — |
coInvestmentPercent | integer (int32) | no | — |
committedPence | integer (int64) | no | — |
createdAtIso | string | null | no | — |
drawnPence | integer (int64) | no | — |
fundingBandCapPence | integer (int64) | no | — |
places | integer (int32) | no | — |
provider | Essence.Payment.Billing.Application.DTOs.LevyProviderDto | no | — |
standardId | string | null | no | — |
standardTitle | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.LevyLedgerEntryDto
| Property | Type | Required | Description |
|---|---|---|---|
allocationId | string | null | no | — |
amountPence | integer (int64) | no | — |
apprenticeshipId | string | null | no | — |
description | string | null | no | — |
entryId | string | null | no | — |
expiresAtIso | string | null | no | — |
kind | string | null | no | — |
occurredAtIso | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.LevyProviderDto
| Property | Type | Required | Description |
|---|---|---|---|
name | string | null | no | — |
organizationId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.MarketplacePayoutSettlementDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
currency | string | null | no | — |
gatewayPayoutId | string | null | no | — |
lines | Essence.Payment.Billing.Application.DTOs.MarketplacePayoutSettlementLineDto[] | null | no | — |
netAmount | number (double) | no | — |
payoutDate | string (date-time) | null | no | — |
payoutId | string (uuid) | no | — |
reconciles | boolean | no | — |
settledTotal | number (double) | no | — |
taxWithheld | number (double) | no | — |
transactionIds | (string (uuid))[] | null | no | — |
unattributedLineCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.MarketplacePayoutSettlementLineDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
commissionId | string (uuid) | no | — |
isClawback | boolean | no | — |
productType | string | null | no | — |
transactionAmount | number (double) | no | — |
transactionDate | string (date-time) | no | — |
transactionId | string (uuid) | null | no | — |
Essence.Payment.Billing.Application.DTOs.MarketplacePayoutSettlementsDto
| Property | Type | Required | Description |
|---|---|---|---|
from | string (date-time) | no | — |
partnerId | string (uuid) | no | — |
payouts | Essence.Payment.Billing.Application.DTOs.MarketplacePayoutSettlementDto[] | null | no | — |
to | string (date-time) | no | — |
Essence.Payment.Billing.Application.DTOs.MemberBillingRehomeDto
| Property | Type | Required | Description |
|---|---|---|---|
alreadyApplied | boolean | no | — |
billingRehomed | boolean | no | — |
currency | string | null | no | — |
newSelfPaySubscriptionId | string (uuid) | no | — |
outcome | string | null | no | — |
prorationCreditMinorUnits | integer (int64) | no | — |
prorationCredited | boolean | no | — |
rehomeId | string (uuid) | no | — |
rehomeRequestId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.MergeDispositionDto
| Property | Type | Required | Description |
|---|---|---|---|
combinedEntitlements | string[] | null | no | — |
currency | string | null | no | — |
mergeSessionId | string (uuid) | no | — |
noDoubleCharge | boolean | no | — |
orgSeatMember | boolean | no | — |
refundMinorUnits | integer (int64) | no | — |
retiredPlan | string | null | no | — |
settled | boolean | no | — |
survivorAccountId | string (uuid) | no | — |
survivorPlan | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.MeteredSkuRevenueReportDto
| Property | Type | Required | Description |
|---|---|---|---|
baseCurrency | string | null | no | — |
period | string | null | no | — |
rows | Essence.Payment.Billing.Application.DTOs.MeteredSkuRevenueRowDto[] | null | no | — |
unattributedBilledUnits | integer (int64) | no | — |
unattributedRevenue | number (double) | no | — |
unconvertibleLineCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.MeteredSkuRevenueRowDto
| Property | Type | Required | Description |
|---|---|---|---|
billedUnits | integer (int64) | no | — |
displayName | string | null | no | — |
revenue | number (double) | no | — |
skuCode | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.MetricUsageSummary
| Property | Type | Required | Description |
|---|---|---|---|
billableUsage | number (double) | no | — |
estimatedCost | number (double) | no | — |
firstUsageTimestamp | string (date-time) | null | no | — |
includedQuantity | number (double) | no | — |
isOverage | boolean | no | — |
isUnlimited | boolean | no | — |
latestUsageTimestamp | string (date-time) | null | no | — |
limit | number (double) | no | — |
metricType | Essence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricType | no | — |
overageAmount | number (double) | no | — |
recordCount | integer (int32) | no | — |
remainingQuota | number (double) | no | — |
totalUsage | number (double) | no | — |
unit | string | null | no | — |
usagePercentage | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.ModuleAddOnPricingDto
| Property | Type | Required | Description |
|---|---|---|---|
cadence | string | null | no | — |
currency | string | null | no | — |
label | string | null | no | — |
price | number (double) | no | — |
sku | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ModuleCancellationTermsDto
| Property | Type | Required | Description |
|---|---|---|---|
entitlementEndsAt | string (date-time) | null | no | — |
noticeDays | integer (int32) | no | — |
policy | string | null | no | — |
refundsUnusedPeriod | boolean | no | — |
summary | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ModuleMeteredItemPricingDto
| Property | Type | Required | Description |
|---|---|---|---|
currency | string | null | no | — |
label | string | null | no | — |
price | number (double) | no | — |
sku | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ModulePlanFeatureDto
| Property | Type | Required | Description |
|---|---|---|---|
featureCode | string | null | no | — |
quota | integer (int32) | null | no | — |
Essence.Payment.Billing.Application.DTOs.ModulePlanPricingDto
| Property | Type | Required | Description |
|---|---|---|---|
basePrice | number (double) | no | — |
cadence | string | null | no | — |
currency | string | null | no | — |
features | Essence.Payment.Billing.Application.DTOs.ModulePlanFeatureDto[] | null | no | — |
name | string | null | no | — |
sku | string | null | no | — |
tier | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ModulePricingDto
| Property | Type | Required | Description |
|---|---|---|---|
addOns | Essence.Payment.Billing.Application.DTOs.ModuleAddOnPricingDto[] | null | no | — |
meteredItems | Essence.Payment.Billing.Application.DTOs.ModuleMeteredItemPricingDto[] | null | no | — |
moduleId | string | null | no | — |
plans | Essence.Payment.Billing.Application.DTOs.ModulePlanPricingDto[] | null | no | — |
pricingPublished | boolean | no | — |
skuProductToken | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.ModuleProrationLineDto
| Property | Type | Required | Description |
|---|---|---|---|
basisDays | integer (int32) | no | — |
description | string | null | no | — |
isProrated | boolean | no | — |
proratedDays | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.ModuleSubscriptionQuoteDto
| Property | Type | Required | Description |
|---|---|---|---|
alignedToOrgPeriod | boolean | no | — |
billingCycle | string | null | no | — |
cancellationTerms | Essence.Payment.Billing.Application.DTOs.ModuleCancellationTermsDto | no | — |
currency | string | null | no | — |
firstChargeAmount | number (double) | no | — |
firstPeriodStart | string (date-time) | no | — |
isBaseModule | boolean | no | — |
isRecurring | boolean | no | — |
nextBillingDate | string (date-time) | null | no | — |
offeringId | string (uuid) | no | — |
offeringName | string | null | no | — |
proration | Essence.Payment.Billing.Application.DTOs.ModuleProrationLineDto | no | — |
recurringTotal | number (double) | no | — |
seatCount | integer (int32) | no | — |
unitPrice | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.MoneyDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
currency | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.MoneyFigureDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | null | no | — |
available | boolean | no | — |
currency | string | null | no | — |
unavailableReason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.MonthlyRevenueDto
| Property | Type | Required | Description |
|---|---|---|---|
commission | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
month | string | null | no | — |
revenue | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
subscriptionCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.MrrBySourceDto
| Property | Type | Required | Description |
|---|---|---|---|
mrr | number (double) | no | — |
source | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.MrrByStreamLineDto
| Property | Type | Required | Description |
|---|---|---|---|
arr | number (double) | no | — |
contributingRecords | integer (int32) | no | — |
description | string | null | no | — |
mrr | number (double) | no | — |
stream | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.MrrByStreamReportDto
| Property | Type | Required | Description |
|---|---|---|---|
currency | string | null | no | — |
reportedAt | string (date-time) | no | — |
streams | Essence.Payment.Billing.Application.DTOs.MrrByStreamLineDto[] | null | no | — |
totalArr | number (double) | no | — |
totalMrr | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.MrrByTierDto
| Property | Type | Required | Description |
|---|---|---|---|
mrr | number (double) | no | — |
subscriptionCount | integer (int32) | no | — |
tier | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.MrrHistoryDto
| Property | Type | Required | Description |
|---|---|---|---|
currency | string | null | no | — |
points | Essence.Payment.Billing.Application.DTOs.MrrHistoryPointDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.MrrHistoryPointDto
| Property | Type | Required | Description |
|---|---|---|---|
arr | number (double) | no | — |
basis | string | null | no | — |
label | string | null | no | — |
month | string | null | no | — |
mrr | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.MrrReportDto
| Property | Type | Required | Description |
|---|---|---|---|
bySource | Essence.Payment.Billing.Application.DTOs.MrrBySourceDto[] | null | no | — |
byTier | Essence.Payment.Billing.Application.DTOs.MrrByTierDto[] | null | no | — |
exclusions | Essence.Payment.Billing.Application.DTOs.RevenueExclusionDisclosureDto | no | — |
reportedAt | string (date-time) | no | — |
totalArr | number (double) | no | — |
totalMrr | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.MyFamilyMembershipDto
| Property | Type | Required | Description |
|---|---|---|---|
pendingInvites | Essence.Payment.Billing.Application.DTOs.FamilyInviteForUserDto[] | null | no | — |
pendingInvitesWithheld | string | null | no | — |
roster | Essence.Payment.Billing.Application.DTOs.FamilyRosterForUserDto | no | — |
Essence.Payment.Billing.Application.DTOs.NetTermsRefundDto
| Property | Type | Required | Description |
|---|---|---|---|
alreadyRefunded | boolean | no | — |
amount | number (double) | no | — |
authorization | string | null | no | — |
creditNoteId | string (uuid) | no | — |
creditNoteNumber | string | null | no | — |
currency | string | null | no | — |
disposition | string | null | no | — |
invoiceId | string (uuid) | no | — |
ledgerCreditId | string (uuid) | no | — |
ledgerCreditStatus | string | null | no | — |
organizationId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.OrganisationCommercialProfileDto
| Property | Type | Required | Description |
|---|---|---|---|
channelPartnerId | string (uuid) | null | no | — |
dealRegistrationId | string (uuid) | null | no | — |
effectivePaymentTermsDays | integer (int32) | no | — |
hostingSovereignInstanceId | string (uuid) | null | no | — |
invoiceCollectionApprovalReason | string | null | no | — |
invoiceCollectionApproved | boolean | no | — |
invoiceCollectionApprovedAt | string (date-time) | null | no | — |
invoiceCollectionApprovedBy | string | null | no | — |
invoiceCollectionRevokedAt | string (date-time) | null | no | — |
invoiceCollectionRevokedBy | string | null | no | — |
organizationDisplayName | string | null | no | — |
organizationId | string (uuid) | no | — |
payerDisplayName | string | null | no | — |
payerOrganizationId | string (uuid) | null | no | — |
paymentTermsDaysOverride | integer (int32) | null | no | — |
paymentTermsOverriddenAt | string (date-time) | null | no | — |
paymentTermsOverriddenBy | string | null | no | — |
paymentTermsOverrideReason | string | null | no | — |
route | string | null | no | — |
setAt | string (date-time) | no | — |
setBy | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrganisationLicenceContextDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
commercialRoute | string | null | no | — |
held | Essence.Payment.Billing.Application.DTOs.HeldLicenceDto[] | null | no | — |
highestHeldInstanceTier | integer (int32) | null | no | — |
organizationId | string (uuid) | no | — |
partnerStanding | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrganizationBillingDetailsDto
| Property | Type | Required | Description |
|---|---|---|---|
addressLine1 | string | null | no | — |
addressLine2 | string | null | no | — |
city | string | null | no | — |
countryCode | string | null | no | — |
organizationId | string (uuid) | no | — |
postalCode | string | null | no | — |
recorded | boolean | no | — |
stateOrRegion | string | null | no | — |
taxId | string | null | no | — |
updatedAt | string (date-time) | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrganizationWholesaleRateDto
| Property | Type | Required | Description |
|---|---|---|---|
currencyCode | string | null | no | — |
isAuthoritative | boolean | no | — |
moduleId | string | null | no | — |
organizationId | string (uuid) | no | — |
perSeatPrice | number (double) | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgConsumptionMeterDto
| Property | Type | Required | Description |
|---|---|---|---|
included | number (double) | null | no | — |
metric | string | null | no | — |
metricLabel | string | null | no | — |
unitLabel | string | null | no | — |
used | number (double) | no | — |
warningThreshold | number (double) | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgConsumptionSnapshotDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
currency | string | null | no | — |
meters | Essence.Payment.Billing.Application.DTOs.OrgConsumptionMeterDto[] | null | no | — |
projectedMonthlyCost | number (double) | null | no | — |
projectedMonthlyCostUnavailableReason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgCreditBalanceDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
balance | number (double) | no | — |
currency | string | null | no | — |
earnedThisMonth | number (double) | no | — |
expiringWithin90Days | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.OrgDunningBlastRadiusDto
| Property | Type | Required | Description |
|---|---|---|---|
billedSeats | integer (int32) | null | no | — |
modules | Essence.Payment.Billing.Application.DTOs.OrgDunningModuleDto[] | null | no | — |
seatsProvenance | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgDunningModuleDto
| Property | Type | Required | Description |
|---|---|---|---|
degradesAtUtc | string (date-time) | null | no | — |
moduleSubscriptionId | string (uuid) | no | — |
name | string | null | no | — |
state | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgDunningPositionDto
| Property | Type | Required | Description |
|---|---|---|---|
asOfUtc | string (date-time) | no | — |
blastRadius | Essence.Payment.Billing.Application.DTOs.OrgDunningBlastRadiusDto | no | — |
pastDue | Essence.Payment.Billing.Application.DTOs.OrgDunningSubscriptionDto[] | null | no | — |
restoration | Essence.Payment.Billing.Application.DTOs.OrgDunningRestorationDto | no | — |
state | string | null | no | — |
timeline | Essence.Payment.Billing.Application.DTOs.OrgDunningTimelineEntryDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgDunningRestorationDto
| Property | Type | Required | Description |
|---|---|---|---|
modulesReEntitled | integer (int32) | no | — |
notYetRestored | Essence.Payment.Billing.Application.DTOs.OrgDunningUnrestoredDto[] | null | no | — |
restoredAtUtc | string (date-time) | no | — |
subscriptionsRestored | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.OrgDunningRetryDto
| Property | Type | Required | Description |
|---|---|---|---|
attempt | integer (int32) | no | — |
dayOffset | integer (int32) | no | — |
scheduledUtc | string (date-time) | no | — |
state | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgDunningSubscriptionDto
| Property | Type | Required | Description |
|---|---|---|---|
amountDue | number (double) | null | no | — |
billedThroughDisplayName | string | null | no | — |
consequence | string | null | no | — |
consequenceAtUtc | string (date-time) | null | no | — |
currency | string | null | no | — |
failureCount | integer (int32) | no | — |
gracePeriodEndsUtc | string (date-time) | no | — |
invoiceId | string (uuid) | null | no | — |
invoiceNumber | string | null | no | — |
pastDueSinceUtc | string (date-time) | no | — |
planName | string | null | no | — |
retrySchedule | Essence.Payment.Billing.Application.DTOs.OrgDunningRetryDto[] | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.OrgDunningTimelineEntryDto
| Property | Type | Required | Description |
|---|---|---|---|
atUtc | string (date-time) | no | — |
detail | string | null | no | — |
kind | string | null | no | — |
label | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.OrgDunningUnrestoredDto
| Property | Type | Required | Description |
|---|---|---|---|
id | string | null | no | — |
kind | string | null | no | — |
name | string | null | no | — |
reason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgHeldSkuDto
| Property | Type | Required | Description |
|---|---|---|---|
family | string | null | no | — |
name | string | null | no | — |
skuId | string | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
subscriptionStatus | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgHeldSkuSetDto
| Property | Type | Required | Description |
|---|---|---|---|
available | boolean | no | — |
held | Essence.Payment.Billing.Application.DTOs.OrgHeldSkuDto[] | null | no | — |
unavailableReason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgInvoiceChainContextDto
| Property | Type | Required | Description |
|---|---|---|---|
invoicingPartyName | string | null | no | — |
invoicingPartyOrgId | string (uuid) | no | — |
invoicingPartyRole | string | null | no | — |
relationshipManagerEmail | string | null | no | — |
relationshipManagerName | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgInvoiceDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | null | no | — |
currency | string | null | no | — |
invoiceId | string (uuid) | no | — |
number | string | null | no | — |
raisedAt | string (date-time) | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgInvoiceListDto
| Property | Type | Required | Description |
|---|---|---|---|
chainContext | Essence.Payment.Billing.Application.DTOs.OrgInvoiceChainContextDto | no | — |
hasMore | boolean | no | — |
invoices | Essence.Payment.Billing.Application.DTOs.OrgInvoiceDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgModuleLineDto
| Property | Type | Required | Description |
|---|---|---|---|
cancelAtPeriodEnd | boolean | no | — |
cancelBlockedReason | string | null | no | — |
cancelEffectiveAt | string (date-time) | null | no | — |
cancelableAtPeriodEnd | boolean | no | — |
entitlementEndsAt | string (date-time) | null | no | — |
isBaseModule | boolean | no | — |
name | string | null | no | — |
offeringId | string (uuid) | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgSeatRegisterDto
| Property | Type | Required | Description |
|---|---|---|---|
assignedSeats | integer (int32) | null | no | — |
enrolled | boolean | no | — |
enrolledAt | string (date-time) | null | no | — |
organizationId | string (uuid) | no | — |
registeredSeats | integer (int32) | null | no | — |
seats | Essence.Payment.Billing.Application.DTOs.RegisteredSeatDto[] | null | no | — |
unavailableReason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgSubscriptionLineDto
| Property | Type | Required | Description |
|---|---|---|---|
commercialRoute | string | null | no | — |
endsAt | string (date-time) | null | no | — |
isBaseSubscription | boolean | no | — |
licenceFamily | string | null | no | — |
licenceTier | integer (int32) | null | no | — |
licensedSeats | integer (int32) | null | no | — |
minimumSeats | integer (int32) | null | no | — |
minimumTermMonths | integer (int32) | null | no | — |
payerOrganizationId | string (uuid) | null | no | — |
periodAmount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
planName | string | null | no | — |
primarySkuCode | string | null | no | — |
renewalDate | string (date-time) | null | no | — |
skus | Essence.Payment.Billing.Application.DTOs.OrgHeldSkuDto[] | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
termCommitmentEndUtc | string (date-time) | null | no | — |
tier | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.OrgSubscriptionSummaryDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
billedThroughDisplayName | string | null | no | — |
commercialRoute | string | null | no | — |
entitlementActive | boolean | no | — |
modules | Essence.Payment.Billing.Application.DTOs.OrgModuleLineDto[] | null | no | — |
paymentTermsDays | integer (int32) | null | no | — |
pricesHidden | boolean | no | — |
privileges | Essence.Payment.Billing.Application.DTOs.PlanPrivilegeDto[] | null | no | — |
privilegesFromPlanName | string | null | no | — |
seatsAssigned | Essence.Payment.Billing.Application.DTOs.SeatFigureDto | no | — |
seatsBilled | Essence.Payment.Billing.Application.DTOs.SeatFigureDto | no | — |
skus | Essence.Payment.Billing.Application.DTOs.OrgHeldSkuSetDto | no | — |
subscriptions | Essence.Payment.Billing.Application.DTOs.OrgSubscriptionLineDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.OverageDetectionResultDto
| Property | Type | Required | Description |
|---|---|---|---|
hasOverages | boolean | no | — |
hasWarnings | boolean | no | — |
overages | Essence.Payment.Billing.Application.DTOs.OverageDto[] | null | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
subscriptionId | string (uuid) | no | — |
totalIssues | integer (int32) | no | — |
userId | string (uuid) | no | — |
warnings | Essence.Payment.Billing.Application.DTOs.UsageWarningDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.OverageDto
| Property | Type | Required | Description |
|---|---|---|---|
currentUsage | number (double) | no | — |
estimatedCost | number (double) | no | — |
limit | number (double) | no | — |
metricType | Essence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricType | no | — |
overageAmount | number (double) | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
unit | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PackageVersionMigrationDeltaDto
| Property | Type | Required | Description |
|---|---|---|---|
appliedAt | string (date-time) | null | no | — |
appliedDocumentId | string (uuid) | null | no | — |
appliedDocumentReference | string | null | no | — |
chargeAmount | number (double) | no | — |
createdAt | string (date-time) | null | no | — |
creditAmount | number (double) | no | — |
currencyCode | string | null | no | — |
currentPeriodEnd | string (date-time) | no | — |
currentPeriodStart | string (date-time) | no | — |
currentVersionPrice | number (double) | no | — |
fromVersion | string | null | no | — |
id | string (uuid) | null | no | — |
lineType | string | null | no | — |
migrationEffectiveAt | string (date-time) | no | — |
netAmount | number (double) | no | — |
newVersionPrice | number (double) | no | — |
organizationId | string (uuid) | no | — |
packageCode | string | null | no | — |
remainingDays | integer (int32) | no | — |
status | string | null | no | — |
subscriberUserId | string (uuid) | no | — |
subscriptionId | string (uuid) | no | — |
termDays | integer (int32) | no | — |
toVersion | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PartnerAnalyticsDto
| Property | Type | Required | Description |
|---|---|---|---|
activeSubscriptions | integer (int32) | no | — |
averageCustomerLifetimeValue | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
averageTransactionValue | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
canceledSubscriptions | integer (int32) | no | — |
commissionRate | number (double) | no | — |
failedPayments | integer (int32) | no | — |
monthlyRevenue | Essence.Payment.Billing.Application.DTOs.MonthlyRevenueDto[] | null | no | — |
partnerId | string (uuid) | no | — |
partnerName | string | null | no | — |
paymentSuccessRate | number (double) | no | — |
pendingCommission | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
revenueGrowthRate | number (double) | null | no | — |
successfulPayments | integer (int32) | no | — |
topPlans | Essence.Payment.Billing.Application.DTOs.PlanPerformanceDto[] | null | no | — |
totalCommission | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
totalCommissionPaidOut | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
totalPayments | integer (int32) | no | — |
totalRevenue | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
totalSubscriptions | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.PartnerCommissionLineQueriesDto
| Property | Type | Required | Description |
|---|---|---|---|
items | Essence.Payment.Billing.Application.DTOs.CommissionLineQueryDto[] | null | no | — |
openCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.PartnerDashboardSummaryDto
| Property | Type | Required | Description |
|---|---|---|---|
activeSubscriptionCount | integer (int32) | no | — |
commissionRate | number (double) | no | — |
currentMonthCommission | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
currentMonthRevenue | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
lifetimeCommission | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
lifetimeRevenue | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
partnerId | string (uuid) | no | — |
partnerName | string | null | no | — |
paymentSuccessRate | number (double) | no | — |
status | string | null | no | — |
totalCustomerCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.PartnerPayoutDestinationDto
| Property | Type | Required | Description |
|---|---|---|---|
accountReference | string | null | no | — |
currency | string | null | no | — |
method | string | null | no | — |
minimumPayoutAmount | number (double) | no | — |
onFile | boolean | no | — |
partnerStatus | string | null | no | — |
readyToBePaid | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.PartnerPayoutSettingsDto
| Property | Type | Required | Description |
|---|---|---|---|
destination | Essence.Payment.Billing.Application.DTOs.PartnerPayoutDestinationDto | no | — |
partnerId | string (uuid) | no | — |
withholding | Essence.Payment.Billing.Application.DTOs.PartnerWithholdingDeclarationDto | no | — |
withholdingCalculation | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PartnerWithholdingDeclarationDto
| Property | Type | Required | Description |
|---|---|---|---|
claimsTreatyBenefits | boolean | no | — |
declaredAt | string (date-time) | no | — |
entityType | string | null | no | — |
id | string (uuid) | no | — |
revision | integer (int32) | no | — |
taxResidenceCountry | string | null | no | — |
treatyArticle | string | null | no | — |
treatyRatePercent | number (double) | null | no | — |
Essence.Payment.Billing.Application.DTOs.PaymentDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
createdAt | string (date-time) | no | — |
failureReason | string | null | no | — |
gatewayPaymentId | string | null | no | — |
gatewayResponse | string | null | no | — |
id | string (uuid) | no | — |
invoiceId | string (uuid) | null | no | — |
metadata | map<string, string> | null | no | — |
paymentGateway | string | null | no | — |
paymentMethod | string | null | no | — |
processedAt | string (date-time) | null | no | — |
retryCount | integer (int32) | no | — |
status | string | null | no | — |
updatedAt | string (date-time) | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.PaymentIntentDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
clientSecret | string | null | no | — |
createdAt | string (date-time) | no | — |
customerId | string | null | no | — |
declineCode | string | null | no | — |
errorCode | string | null | no | — |
errorMessage | string | null | no | — |
invoiceId | string (uuid) | null | no | — |
invoiceStatus | string | null | no | — |
isTestMode | boolean | no | — |
metadata | map<string, string | null> | null | no | — |
nextAction | string | null | no | — |
outcome | string | null | no | — |
paymentId | string (uuid) | null | no | — |
paymentIntentId | string | null | no | — |
paymentMethodId | string | null | no | — |
requiresAction | boolean | no | — |
status | string | null | no | — |
threeDSecureUrl | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PaymentMethodDto
| Property | Type | Required | Description |
|---|---|---|---|
brand | string | null | no | — |
createdAt | string (date-time) | no | — |
expiryMonth | integer (int32) | null | no | — |
expiryYear | integer (int32) | null | no | — |
gateway | string | null | no | — |
id | string (uuid) | no | — |
isDefault | boolean | no | — |
lastFour | string | null | no | — |
overdueSettlement | string | null | no | — |
type | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PaymentMethodSetupDto
| Property | Type | Required | Description |
|---|---|---|---|
clientSdkUrl | string | null | no | — |
clientSecret | string | null | no | — |
customerId | string | null | no | — |
environment | string | null | no | — |
gateway | string | null | no | — |
paymentMethodTypes | string[] | null | no | — |
publishableKey | string | null | no | — |
setupIntentId | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PaymentPageScriptDto
| Property | Type | Required | Description |
|---|---|---|---|
authorisingChangeRecord | string | null | no | — |
businessJustification | string | null | no | — |
createdAt | string (date-time) | no | — |
id | string (uuid) | no | — |
lastVerifiedAt | string (date-time) | null | no | — |
scriptUrl | string | null | no | — |
status | string | null | no | — |
subresourceIntegrityHash | string | null | no | — |
vendor | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PaymentPageScriptRegisterDto
| Property | Type | Required | Description |
|---|---|---|---|
environmentKey | string | null | no | — |
history | Essence.Payment.Billing.Application.DTOs.PaymentPageScriptStatusChangeDto[] | null | no | — |
id | string (uuid) | no | — |
scripts | Essence.Payment.Billing.Application.DTOs.PaymentPageScriptDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.PaymentPageScriptStatusChangeDto
| Property | Type | Required | Description |
|---|---|---|---|
changeRecord | string | null | no | — |
changedAt | string (date-time) | no | — |
changedBy | string | null | no | — |
id | string (uuid) | no | — |
newStatus | string | null | no | — |
previousStatus | string | null | no | — |
scriptId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.PayoutDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
approvalValueGbp | number (double) | null | no | — |
approvedAt | string (date-time) | null | no | — |
approvedBy | string | null | no | — |
awaitingApproval | boolean | no | — |
batchId | string | null | no | — |
createdAt | string (date-time) | no | — |
failureCount | integer (int32) | no | — |
failureReason | string | null | no | — |
firstFailedAt | string (date-time) | null | no | — |
gatewayPayoutId | string | null | no | — |
id | string (uuid) | no | — |
items | Essence.Payment.Billing.Application.DTOs.PayoutItemDto[] | null | no | — |
metadata | map<string, string> | null | no | — |
netAmount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
nextRetryAt | string (date-time) | null | no | — |
partnerId | string (uuid) | no | — |
payoutDate | string (date-time) | null | no | — |
payoutMethod | string | null | no | — |
requiresApproval | boolean | no | — |
statement | Essence.Payment.Billing.Application.DTOs.PayoutStatementDto | no | — |
status | string | null | no | — |
taxWithheld | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
updatedAt | string (date-time) | no | — |
Essence.Payment.Billing.Application.DTOs.PayoutItemDto
| Property | Type | Required | Description |
|---|---|---|---|
baseAmount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
commissionAmount | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
commissionRate | number (double) | no | — |
createdAt | string (date-time) | no | — |
id | string (uuid) | no | — |
metadata | map<string, string> | null | no | — |
payoutId | string (uuid) | no | — |
transactionId | string (uuid) | no | — |
transactionType | string | null | no | — |
updatedAt | string (date-time) | no | — |
Essence.Payment.Billing.Application.DTOs.PayoutManualReissueTaskDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
currency | string | null | no | — |
failureReason | string | null | no | — |
id | string (uuid) | no | — |
manualReference | string | null | no | — |
partnerId | string (uuid) | no | — |
payoutId | string (uuid) | no | — |
raisedAt | string (date-time) | no | — |
resolvedAt | string (date-time) | null | no | — |
retriesAttempted | integer (int32) | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PayoutStatementDto
| Property | Type | Required | Description |
|---|---|---|---|
archivedAt | string (date-time) | null | no | — |
available | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.PayoutStreamLineDto
| Property | Type | Required | Description |
|---|---|---|---|
commissionCount | integer (int32) | no | — |
commissionsTotal | number (double) | no | — |
gaps | string[] | null | no | — |
kind | string | null | no | — |
payoutCount | integer (int32) | no | — |
payoutsTotal | number (double) | no | — |
pendingTotal | number (double) | no | — |
taxWithheldTotal | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.PayoutStreamReconciliationDto
| Property | Type | Required | Description |
|---|---|---|---|
channel | Essence.Payment.Billing.Application.DTOs.PayoutStreamLineDto | no | — |
gaps | string[] | null | no | — |
isBalanced | boolean | no | — |
marketplace | Essence.Payment.Billing.Application.DTOs.PayoutStreamLineDto | no | — |
partnerId | string (uuid) | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
Essence.Payment.Billing.Application.DTOs.PlanPerformanceDto
| Property | Type | Required | Description |
|---|---|---|---|
commission | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
planId | string (uuid) | no | — |
planName | string | null | no | — |
revenue | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
subscriptionCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.PlanPrivilegeDto
| Property | Type | Required | Description |
|---|---|---|---|
code | string | null | no | — |
description | string | null | no | — |
group | string | null | no | — |
label | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PremiumFinanceInstalmentDto
| Property | Type | Required | Description |
|---|---|---|---|
amountMinor | integer (int64) | no | — |
amountPaidMinor | integer (int64) | no | — |
attempts | Essence.Payment.Billing.Application.DTOs.InstalmentAttemptDto[] | null | no | — |
dueOn | string | null | no | — |
lastFailureCode | string | null | no | — |
sequence | integer (int32) | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PremiumFinancePlanDto
| Property | Type | Required | Description |
|---|---|---|---|
agreementId | string | null | no | — |
arrearsEpisodes | Essence.Payment.Billing.Application.DTOs.ArrearsEpisodeDto[] | null | no | — |
arrearsPayments | Essence.Payment.Billing.Application.DTOs.ArrearsPaymentDto[] | null | no | — |
asOf | string (date-time) | no | — |
creditAgreementReference | string | null | no | — |
currency | string | null | no | — |
financedAmountMinor | integer (int64) | no | — |
instalments | Essence.Payment.Billing.Application.DTOs.PremiumFinanceInstalmentDto[] | null | no | — |
insurerOrganizationId | string (uuid) | no | — |
mandateReference | string | null | no | — |
outstandingArrearsMinor | integer (int64) | no | — |
policyReference | string | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PremiumFinancePositionDto
| Property | Type | Required | Description |
|---|---|---|---|
agreementId | string | null | no | — |
arrearsEpisodeNumber | integer (int32) | null | no | — |
arrearsSince | string (date-time) | null | no | — |
asOf | string (date-time) | no | — |
currency | string | null | no | — |
inArrears | boolean | no | — |
instalmentCount | integer (int32) | no | — |
instalmentsCollected | integer (int32) | no | — |
instalmentsInArrears | integer (int32) | no | — |
nextInstalment | Essence.Payment.Billing.Application.DTOs.PremiumFinanceInstalmentDto | no | — |
outstandingArrearsMinor | integer (int64) | no | — |
planStatus | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PricingPlanDto
| Property | Type | Required | Description |
|---|---|---|---|
additionalPrivileges | Essence.Payment.Billing.Application.DTOs.PlanPrivilegeDto[] | null | no | — |
audience | string | null | no | — |
basePrice | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
billingPeriod | Essence.Payment.Billing.Application.DTOs.BillingPeriodDto | no | — |
billingUnit | string | null | no | — |
createdAt | string (date-time) | no | — |
description | string | null | no | — |
features | map<string, unspecified> | null | no | — |
id | string (uuid) | no | — |
includesEverythingFrom | string | null | no | — |
isActive | boolean | no | — |
licenceFamily | string | null | no | — |
licenceTier | integer (int32) | null | no | — |
metadata | map<string, string> | null | no | — |
minimumSeats | integer (int32) | null | no | — |
minimumTermMonths | integer (int32) | null | no | — |
name | string | null | no | — |
privileges | Essence.Payment.Billing.Application.DTOs.PlanPrivilegeDto[] | null | no | — |
skuCodes | string[] | null | no | — |
tier | string | null | no | — |
trialDays | integer (int32) | no | — |
updatedAt | string (date-time) | no | — |
version | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.ProRataInvoiceLineDto
| Property | Type | Required | Description |
|---|---|---|---|
amountMinor | integer (int64) | no | — |
description | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.PurchaseSandboxLicenceRequest
| Property | Type | Required | Description |
|---|---|---|---|
convertsSponsoredSubscriptionId | string (uuid) | null | no | — |
organizationId | string (uuid) | null | no | — |
purchaseId | string (uuid) | no | — |
skuCode | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.QuotaCheckRequestDto
| Property | Type | Required | Description |
|---|---|---|---|
metricCode | string | null | no | — |
organisationId | string | null | no | — |
organizationId | string | null | no | — |
requestedUnits | number (double) | null | no | — |
sku | string | null | no | — |
subjectId | string | null | no | — |
subscriptionId | string | null | no | — |
units | number (double) | null | no | — |
usage | number (double) | null | no | — |
Essence.Payment.Billing.Application.DTOs.QuotaCheckResponseDto
| Property | Type | Required | Description |
|---|---|---|---|
allowed | boolean | no | — |
limit | integer (int64) | null | no | — |
limitExact | number (double) | null | no | — |
message | string | null | no | — |
reason | string | null | no | — |
reasonCode | string | null | no | — |
remaining | number (double) | null | no | — |
requiredAction | string | null | no | — |
retryAfterSeconds | integer (int32) | null | no | — |
subscriptionId | string (uuid) | null | no | — |
used | integer (int64) | null | no | — |
usedExact | number (double) | null | no | — |
withinLimit | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.QuotaInfoDto
| Property | Type | Required | Description |
|---|---|---|---|
currentUsage | number (double) | no | — |
isNearLimit | boolean | no | — |
isOverLimit | boolean | no | — |
limit | number (double) | no | — |
metricType | Essence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricType | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
remaining | number (double) | no | — |
subscriptionId | string (uuid) | no | — |
unit | string | null | no | — |
usagePercentage | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.QuotaLeaseRequestDto
| Property | Type | Required | Description |
|---|---|---|---|
blockUnits | integer (int32) | null | no | — |
idempotencyKey | string | null | no | — |
metricCode | string | null | no | — |
organisationId | string | null | no | — |
organizationId | string | null | no | — |
requestedUnits | number (double) | null | no | — |
sku | string | null | no | — |
subjectId | string | null | no | — |
subscriptionId | string | null | no | — |
ttlSeconds | integer (int32) | null | no | — |
units | number (double) | null | no | — |
usage | number (double) | null | no | — |
Essence.Payment.Billing.Application.DTOs.QuotaLeaseResponseDto
| Property | Type | Required | Description |
|---|---|---|---|
allowed | boolean | no | — |
expiresAt | string (date-time) | null | no | — |
grantedUnits | integer (int32) | no | — |
idempotencyKey | string | null | no | — |
leaseId | string (uuid) | null | no | — |
leaseKey | string | null | no | — |
limit | integer (int64) | null | no | — |
limitExact | number (double) | null | no | — |
message | string | null | no | — |
outstandingHeld | number (double) | null | no | — |
overageUnits | number (double) | null | no | — |
reason | string | null | no | — |
reasonCode | string | null | no | — |
remaining | number (double) | null | no | — |
replayed | boolean | no | — |
requiredAction | string | null | no | — |
retryAfterSeconds | integer (int32) | null | no | — |
subscriptionId | string (uuid) | null | no | — |
ttlSeconds | integer (int32) | null | no | — |
used | integer (int64) | null | no | — |
usedExact | number (double) | null | no | — |
withinLimit | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.QuotaLeaseSettleRequestDto
| Property | Type | Required | Description |
|---|---|---|---|
sequence | integer (int64) | null | no | — |
usedUnits | number (double) | null | no | — |
Essence.Payment.Billing.Application.DTOs.QuotaLeaseSettleResponseDto
| Property | Type | Required | Description |
|---|---|---|---|
grantedUnits | number (double) | no | — |
leaseId | string (uuid) | no | — |
outcome | string | null | no | — |
recordedUnits | number (double) | no | — |
replayed | boolean | no | — |
returnedUnits | number (double) | no | — |
sequence | integer (int64) | no | — |
usedUnits | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.QuotaReservationReleaseRequestDto
| Property | Type | Required | Description |
|---|---|---|---|
idempotencyKey | string | null | no | — |
metricCode | string | null | no | — |
organisationId | string | null | no | — |
organizationId | string | null | no | — |
requestedUnits | number (double) | null | no | — |
sku | string | null | no | — |
subjectId | string | null | no | — |
subscriptionId | string | null | no | — |
units | number (double) | null | no | — |
usage | number (double) | null | no | — |
Essence.Payment.Billing.Application.DTOs.QuotaReservationRequestDto
| Property | Type | Required | Description |
|---|---|---|---|
actionDigest | string | null | no | — |
idempotencyKey | string | null | no | — |
metricCode | string | null | no | — |
organisationId | string | null | no | — |
organizationId | string | null | no | — |
requestedUnits | number (double) | null | no | — |
sku | string | null | no | — |
subjectId | string | null | no | — |
subscriptionId | string | null | no | — |
units | number (double) | null | no | — |
usage | number (double) | null | no | — |
Essence.Payment.Billing.Application.DTOs.QuotaReservationResponseDto
| Property | Type | Required | Description |
|---|---|---|---|
allowed | boolean | no | — |
expiresAt | string (date-time) | null | no | — |
idempotencyKey | string | null | no | — |
isOverage | boolean | no | — |
limit | integer (int64) | null | no | — |
limitExact | number (double) | null | no | — |
message | string | null | no | — |
outstandingReserved | number (double) | null | no | — |
overageUnits | number (double) | null | no | — |
reason | string | null | no | — |
reasonCode | string | null | no | — |
remaining | number (double) | null | no | — |
replayed | boolean | no | — |
requiredAction | string | null | no | — |
reservationId | string (uuid) | null | no | — |
retryAfterSeconds | integer (int32) | null | no | — |
subscriptionId | string (uuid) | null | no | — |
used | integer (int64) | null | no | — |
usedExact | number (double) | null | no | — |
withinLimit | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.RecordUsageEventRequestDto
| Property | Type | Required | Description |
|---|---|---|---|
metadata | map<string, unspecified> | null | no | — |
metric | string | null | no | — |
occurredAt | string (date-time) | no | — |
quantity | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.RecordUsageEventResponseDto
| Property | Type | Required | Description |
|---|---|---|---|
replayed | boolean | no | — |
subscriptionId | string (uuid) | no | — |
usageRecordId | string (uuid) | null | no | — |
Essence.Payment.Billing.Application.DTOs.RefundDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
currency | string | null | no | — |
estimatedArrivalDate | string (date-time) | null | no | — |
paymentId | string (uuid) | no | — |
processedAt | string (date-time) | no | — |
reason | string | null | no | — |
refundId | string | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.RefundQueueItemDto
| Property | Type | Required | Description |
|---|---|---|---|
applicationReference | string | null | no | — |
createdAt | string (date-time) | no | — |
currency | string | null | no | — |
invoiceId | string (uuid) | no | — |
invoiceNumber | string | null | no | — |
onboardingSessionId | string (uuid) | null | no | — |
organizationId | string (uuid) | null | no | — |
reason | string | null | no | — |
resolution | Essence.Payment.Billing.Application.DTOs.RefundResolutionDto | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | null | no | — |
totalAmount | number (double) | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.RefundResolutionDto
| Property | Type | Required | Description |
|---|---|---|---|
note | string | null | no | — |
outcome | string | null | no | — |
reference | string | null | no | — |
resolvedAt | string (date-time) | no | — |
resolvedBy | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.RegisteredSeatDto
| Property | Type | Required | Description |
|---|---|---|---|
assignedAt | string (date-time) | null | no | — |
holderRef | string (uuid) | null | no | — |
lastChangedAt | string (date-time) | no | — |
origin | string | null | no | — |
planLabel | string | null | no | — |
releasedAt | string (date-time) | null | no | — |
seatRef | string | null | no | — |
status | string | null | no | — |
subscriptionRef | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.RehomeDepartingMemberRequestDto
| Property | Type | Required | Description |
|---|---|---|---|
departingMemberUserId | string (uuid) | no | — |
familyOwnerUserId | string (uuid) | no | — |
familySubscriptionId | string | null | no | — |
occurredAt | string (date-time) | null | no | — |
rehomeRequestId | string (uuid) | no | — |
seatId | string | null | no | — |
targetPlanId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.ReimbursementClaimStatusDto
| Property | Type | Required | Description |
|---|---|---|---|
adjustmentId | string | null | no | — |
claimId | string | null | no | — |
claimedAmountMinor | integer (int64) | no | — |
currency | string | null | no | — |
disbursementRef | string | null | no | — |
paidAt | string | null | no | — |
rejectionReason | string | null | no | — |
state | string | null | no | — |
submittedAt | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.RenewalPriceResolutionDto
| Property | Type | Required | Description |
|---|---|---|---|
currencyCode | string | null | no | — |
effectivePeriodStart | string (date-time) | no | — |
grandfatherLockApplied | boolean | no | — |
grandfatherLockedUntil | string (date-time) | null | no | — |
grandfatherPriceLockId | string (uuid) | null | no | — |
id | string (uuid) | no | — |
listAmountForegone | number (double) | null | no | — |
priceSource | string | null | no | — |
pricingPlanId | string (uuid) | no | — |
resolvedAmount | number (double) | no | — |
resolvedAt | string (date-time) | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.ReprovisionedSubscriptionDto
| Property | Type | Required | Description |
|---|---|---|---|
addedFeatureCodes | string[] | null | no | — |
featureCodes | string[] | null | no | — |
organizationId | string (uuid) | null | no | — |
pricingPlanId | string (uuid) | no | — |
published | boolean | no | — |
skipReason | string | null | no | — |
subscriptionId | string (uuid) | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.ReprovisionSubscriptionEntitlementsResultDto
| Property | Type | Required | Description |
|---|---|---|---|
baselined | integer (int32) | no | — |
dryRun | boolean | no | — |
evidenceFallbacks | integer (int32) | no | — |
evidenceIndexesReady | boolean | no | — |
examined | integer (int32) | no | — |
nextCursor | string (uuid) | null | no | — |
reprovisioned | integer (int32) | no | — |
skippedMissingPlan | integer (int32) | no | — |
subscriptions | Essence.Payment.Billing.Application.DTOs.ReprovisionedSubscriptionDto[] | null | no | — |
unchanged | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.RetainerTrustFundingDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
clearedAt | string (date-time) | null | no | — |
clientUserId | string (uuid) | no | — |
createdAt | string (date-time) | no | — |
currencyCode | string | null | no | — |
failedAt | string (date-time) | null | no | — |
failureReason | string | null | no | — |
feeBasis | string | null | no | — |
id | string (uuid) | no | — |
lawFirmOrganizationId | string (uuid) | no | — |
matterReference | string | null | no | — |
payment | Essence.Payment.Billing.Application.DTOs.RetainerTrustFundingPaymentDto | no | — |
paymentReference | string | null | no | — |
refundedAt | string (date-time) | null | no | — |
releasedToMatterAt | string (date-time) | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.RetainerTrustFundingPaymentDto
| Property | Type | Required | Description |
|---|---|---|---|
clientSdkUrl | string | null | no | — |
clientSecret | string | null | no | — |
environment | string | null | no | — |
gateway | string | null | no | — |
paymentIntentId | string | null | no | — |
publishableKey | string | null | no | — |
requiresAction | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.RevenueByCurrencyDto
| Property | Type | Required | Description |
|---|---|---|---|
currency | string | null | no | — |
revenue | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.RevenueBySourceDto
| Property | Type | Required | Description |
|---|---|---|---|
revenue | number (double) | no | — |
source | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.RevenueByStreamReportDto
| Property | Type | Required | Description |
|---|---|---|---|
currency | string | null | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
streams | Essence.Payment.Billing.Application.DTOs.RevenueStreamLineDto[] | null | no | — |
totalRevenue | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.RevenueByTierDto
| Property | Type | Required | Description |
|---|---|---|---|
revenue | number (double) | no | — |
subscriptionCount | integer (int32) | no | — |
tier | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.RevenueClassificationAssignmentDto
| Property | Type | Required | Description |
|---|---|---|---|
class | string | null | no | — |
classifiedBy | string | null | no | — |
effectiveFrom | string (date-time) | no | — |
reason | string | null | no | — |
recordedAtUtc | string (date-time) | no | — |
Essence.Payment.Billing.Application.DTOs.RevenueClassificationExceptionDto
| Property | Type | Required | Description |
|---|---|---|---|
exceptionId | string (uuid) | no | — |
firstContext | string | null | no | — |
firstObservedAtUtc | string (date-time) | no | — |
lastObservedAtUtc | string (date-time) | no | — |
observationCount | integer (int32) | no | — |
tenantId | string (uuid) | no | — |
tenantType | Essence.Payment.Billing.Contracts.RevenueClassification.RevenueTenantType | no | — |
Essence.Payment.Billing.Application.DTOs.RevenueExclusionDisclosureDto
| Property | Type | Required | Description |
|---|---|---|---|
byClass | Essence.Payment.Billing.Application.DTOs.RevenueExclusionLineDto[] | null | no | — |
excludedTenantCount | integer (int32) | no | — |
exclusionApplied | boolean | no | — |
summary | string | null | no | — |
totalExcludedAmount | number (double) | no | — |
unclassifiedAmount | number (double) | no | — |
unclassifiedTenantCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.RevenueExclusionLineDto
| Property | Type | Required | Description |
|---|---|---|---|
class | string | null | no | — |
excludedAmount | number (double) | no | — |
tenantCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.RevenueReportDto
| Property | Type | Required | Description |
|---|---|---|---|
byCurrency | Essence.Payment.Billing.Application.DTOs.RevenueByCurrencyDto[] | null | no | — |
bySource | Essence.Payment.Billing.Application.DTOs.RevenueBySourceDto[] | null | no | — |
byTier | Essence.Payment.Billing.Application.DTOs.RevenueByTierDto[] | null | no | — |
currency | string | null | no | — |
exclusions | Essence.Payment.Billing.Application.DTOs.RevenueExclusionDisclosureDto | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
totalRevenue | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.RevenueStreamLineDto
| Property | Type | Required | Description |
|---|---|---|---|
description | string | null | no | — |
revenue | number (double) | no | — |
stream | string | null | no | — |
transactionCount | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.RollbackSandboxLicenceRequest
| Property | Type | Required | Description |
|---|---|---|---|
purchaseId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.RoutedSeatTrueUpDto
| Property | Type | Required | Description |
|---|---|---|---|
commercialRoute | string | null | no | — |
organizationId | string (uuid) | no | — |
pricesHidden | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.SandboxLicenceContextDto
| Property | Type | Required | Description |
|---|---|---|---|
audience | string | null | no | — |
billedThroughDisplayName | string | null | no | — |
held | Essence.Payment.Billing.Application.DTOs.HeldSandboxLicenceDto[] | null | no | — |
highestHeldInstanceTier | integer (int32) | null | no | — |
mode | string | null | no | — |
offers | Essence.Payment.Billing.Application.DTOs.SandboxLicenceOfferDto[] | null | no | — |
onBehalfOfPayer | boolean | no | — |
ownerOrganizationId | string (uuid) | no | — |
partnerStanding | string | null | no | — |
pricesHidden | boolean | no | — |
route | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SandboxLicenceOfferDto
| Property | Type | Required | Description |
|---|---|---|---|
cadence | string | null | no | — |
currency | string | null | no | — |
eligible | boolean | no | — |
licenceTier | integer (int32) | null | no | — |
maxPerOwner | integer (int32) | null | no | — |
name | string | null | no | — |
price | number (double) | null | no | — |
refusal | Essence.Payment.Billing.Application.DTOs.SandboxLicenceRefusalDto | no | — |
selfServicePurchasable | boolean | no | — |
skuCode | string | null | no | — |
subname | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SandboxLicencePurchaseDto
| Property | Type | Required | Description |
|---|---|---|---|
amountDue | number (double) | null | no | — |
awaitingPaymentInvoiceId | string (uuid) | null | no | — |
commercialRoute | string | null | no | — |
convertedFromSubscriptionId | string (uuid) | null | no | — |
convertsSponsoredSubscriptionId | string (uuid) | null | no | — |
currency | string | null | no | — |
currentPeriodEnd | string (date-time) | no | — |
endDate | string (date-time) | null | no | — |
invoiceToOrganizationId | string (uuid) | null | no | — |
licenceFamily | string | null | no | — |
licenceTier | integer (int32) | null | no | — |
ownerOrganizationId | string (uuid) | no | — |
replay | boolean | no | — |
skuCode | string | null | no | — |
sponsored | boolean | no | — |
sponsoredUntil | string (date-time) | null | no | — |
sponsorshipPurpose | string | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SandboxLicenceRefusalDto
| Property | Type | Required | Description |
|---|---|---|---|
code | string | null | no | — |
heldSubscriptionId | string (uuid) | null | no | — |
reason | string | null | no | — |
rule | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SandboxLicenceRollbackDto
| Property | Type | Required | Description |
|---|---|---|---|
invoiceSettlement | string | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SandboxSponsorshipDto
| Property | Type | Required | Description |
|---|---|---|---|
extensions | Essence.Payment.Billing.Application.DTOs.SandboxSponsorshipExtensionDto[] | null | no | — |
grantedAt | string (date-time) | null | no | — |
grantedBy | string | null | no | — |
licenceFamily | string | null | no | — |
licenceTier | integer (int32) | null | no | — |
ownerOrganizationId | string (uuid) | no | — |
reference | string | null | no | — |
replay | boolean | no | — |
skuCode | string | null | no | — |
sponsored | boolean | no | — |
sponsoredUntil | string (date-time) | null | no | — |
sponsorshipPurpose | string | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SandboxSponsorshipExtensionDto
| Property | Type | Required | Description |
|---|---|---|---|
extendedAt | string (date-time) | no | — |
extendedBy | string | null | no | — |
from | string (date-time) | no | — |
reason | string | null | no | — |
to | string (date-time) | no | — |
Essence.Payment.Billing.Application.DTOs.SeatBillingSpanDto
| Property | Type | Required | Description |
|---|---|---|---|
activeFrom | string (date-time) | no | — |
activeTo | string (date-time) | null | no | — |
held | boolean | no | — |
holdReason | string | null | no | — |
seatRef | string | null | no | — |
stoppedReason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SeatChangeRecordDto
| Property | Type | Required | Description |
|---|---|---|---|
accessRevokedAt | string (date-time) | null | no | — |
actorRef | string (uuid) | no | — |
consentDisposition | string | null | no | — |
consentGrantsAffected | integer (int32) | null | no | — |
evidenceFailureReason | string | null | no | — |
evidenceState | string | null | no | — |
handoverRoute | string | null | no | — |
id | string (uuid) | no | — |
kept | Essence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto[] | null | no | — |
leaverRef | string (uuid) | no | — |
newHolderRef | string (uuid) | null | no | — |
noNewChargeRaised | boolean | no | — |
personalStateCarriedOver | boolean | no | — |
planLabel | string | null | no | — |
reassignedAt | string (date-time) | null | no | — |
reclaimedAt | string (date-time) | no | — |
revoked | Essence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto[] | null | no | — |
scope | string | null | no | — |
seatRef | string | null | no | — |
seatRefOrigin | string | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SeatDiffRowDto
| Property | Type | Required | Description |
|---|---|---|---|
consentState | string | null | no | — |
driftKind | string | null | no | — |
externalRef | string | null | no | — |
holdsBilledSeat | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.SeatDriftAlertDto
| Property | Type | Required | Description |
|---|---|---|---|
acknowledgedAt | string (date-time) | null | no | — |
acknowledgedBy | string (uuid) | null | no | — |
alertId | string (uuid) | no | — |
billedSeats | integer (int32) | no | — |
closedAt | string (date-time) | null | no | — |
currency | string | null | no | — |
direction | string | null | no | — |
impactAmount | number (double) | null | no | — |
organizationId | string (uuid) | no | — |
raisedAt | string (date-time) | no | — |
resolvedByDecisionId | string (uuid) | null | no | — |
seatDelta | integer (int32) | no | — |
status | string | null | no | — |
syncedSeats | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto
| Property | Type | Required | Description |
|---|---|---|---|
code | string | null | no | — |
entitlementRef | string | null | no | — |
label | string | null | no | — |
revokedAt | string (date-time) | null | no | — |
Essence.Payment.Billing.Application.DTOs.SeatFigureDto
| Property | Type | Required | Description |
|---|---|---|---|
available | boolean | no | — |
seats | integer (int32) | null | no | — |
source | string | null | no | — |
unavailableReason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SeatNoticeDto
| Property | Type | Required | Description |
|---|---|---|---|
consentDisposition | string | null | no | — |
effectiveAt | string (date-time) | no | — |
effectiveAtConfirmed | boolean | no | — |
handoverRoute | string | null | no | — |
inheritedPreviousHolderState | boolean | no | — |
orgFeatures | Essence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto[] | null | no | — |
personalVaultRetained | boolean | no | — |
planLabel | string | null | no | — |
role | string | null | no | — |
seatReassignmentId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SeatReclaimPolicyDto
| Property | Type | Required | Description |
|---|---|---|---|
defaultHandoverRoute | string | null | no | — |
defaultScope | string | null | no | — |
orgConfigured | boolean | no | — |
Essence.Payment.Billing.Application.DTOs.SeatReclaimPreviewDto
| Property | Type | Required | Description |
|---|---|---|---|
canConfirmOffboard | boolean | no | — |
defaultHandoverRoute | string | null | no | — |
defaultScope | string | null | no | — |
defaultsAreOrgConfigured | boolean | no | — |
envelopeUnavailableReason | string | null | no | — |
kept | Essence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto[] | null | no | — |
leaverRef | string (uuid) | no | — |
offboardBlockedReason | string | null | no | — |
revoked | Essence.Payment.Billing.Application.DTOs.SeatEnvelopeLineDto[] | null | no | — |
Essence.Payment.Billing.Application.DTOs.SeatReconciliationDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
assigned | Essence.Payment.Billing.Application.DTOs.SeatFigureDto | no | — |
billed | Essence.Payment.Billing.Application.DTOs.SeatFigureDto | no | — |
billingPeriodEnd | string (date-time) | no | — |
billingPeriodStart | string (date-time) | no | — |
canCommitResolution | boolean | no | — |
contractVersion | string | null | no | — |
costUnavailableReason | string | null | no | — |
currency | string | null | no | — |
daysRemainingInPeriod | integer (int32) | no | — |
direction | string | null | no | — |
directionLabel | string | null | no | — |
openAlert | Essence.Payment.Billing.Application.DTOs.SeatDriftAlertDto | no | — |
organizationId | string (uuid) | no | — |
pendingDecision | Essence.Payment.Billing.Application.DTOs.SeatResolutionDecisionDto | no | — |
perSeatPerMonth | number (double) | null | no | — |
requiresResolution | boolean | no | — |
resolutionUnavailableReason | string | null | no | — |
rosterAvailable | boolean | no | — |
rosterUnavailableReason | string | null | no | — |
seatDelta | integer (int32) | null | no | — |
seats | Essence.Payment.Billing.Application.DTOs.SeatDiffRowDto[] | null | no | — |
synced | Essence.Payment.Billing.Application.DTOs.SeatFigureDto | no | — |
toleranceSeats | integer (int32) | no | — |
trueUpAmount | number (double) | null | no | — |
Essence.Payment.Billing.Application.DTOs.SeatResolutionDecisionDto
| Property | Type | Required | Description |
|---|---|---|---|
authoritativeSource | string | null | no | — |
canUndo | boolean | no | — |
currency | string | null | no | — |
decidedAt | string (date-time) | no | — |
decidedBy | string (uuid) | no | — |
decisionId | string (uuid) | no | — |
effectedAt | string (date-time) | null | no | — |
failureReason | string | null | no | — |
linkedInvoiceId | string (uuid) | null | no | — |
note | string | null | no | — |
organizationId | string (uuid) | no | — |
proratedAmount | number (double) | null | no | — |
recurringMonthlyDelta | number (double) | null | no | — |
seatChange | integer (int32) | no | — |
seatDriftAlertId | string (uuid) | no | — |
seatsAfter | integer (int32) | no | — |
seatsBefore | integer (int32) | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
undoWindowEndsAt | string (date-time) | no | — |
undoneAt | string (date-time) | null | no | — |
Essence.Payment.Billing.Application.DTOs.SeatResolutionPreviewDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
available | boolean | no | — |
contractVersion | string | null | no | — |
costUnavailableReason | string | null | no | — |
currency | string | null | no | — |
currentBilledSeats | integer (int32) | no | — |
daysRemainingInPeriod | integer (int32) | no | — |
organizationId | string (uuid) | no | — |
perSeatPerMonth | number (double) | null | no | — |
proratedAmount | number (double) | null | no | — |
recurringMonthlyDelta | number (double) | null | no | — |
reducesSeats | boolean | no | — |
seatChange | integer (int32) | no | — |
targetSeats | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.SeatTrueUpApprovalDto
| Property | Type | Required | Description |
|---|---|---|---|
approvedAt | string (date-time) | no | — |
approverRef | string (uuid) | no | — |
grossAmountAtApproval | number (double) | no | — |
role | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SeatTrueUpPeriodDto
| Property | Type | Required | Description |
|---|---|---|---|
approvalUnavailableReason | string | null | no | — |
approvals | Essence.Payment.Billing.Application.DTOs.SeatTrueUpApprovalDto[] | null | no | — |
asOf | string (date-time) | no | — |
auditAnchorRef | string | null | no | — |
averageDeployedSeats | number (double) | no | — |
billableSeatMonths | number (double) | no | — |
cadenceIsContractLocked | boolean | no | — |
cadenceLabel | string | null | no | — |
canApprove | boolean | no | — |
canReconcile | boolean | no | — |
chargeDate | string (date-time) | null | no | — |
committedSeats | integer (int32) | no | — |
contractAvailable | boolean | no | — |
contractUnavailableReason | string | null | no | — |
contractVersion | string | null | no | — |
currency | string | null | no | — |
floorDisclosure | string | null | no | — |
grossAmount | number (double) | no | — |
heldGrossAmount | number (double) | no | — |
initiatedByRef | string (uuid) | null | no | — |
lockedAt | string (date-time) | null | no | — |
lockedByApproval | boolean | no | — |
metered | boolean | no | — |
meteringBasis | string | null | no | — |
meteringUnavailableReason | string | null | no | — |
netAmount | number (double) | no | — |
organizationId | string (uuid) | no | — |
outstandingApprovals | integer (int32) | no | — |
overageRatePerSeatPerMonth | number (double) | no | — |
payableGrossAmount | number (double) | no | — |
peakDeployedSeats | integer (int32) | no | — |
periodEnd | string (date-time) | no | — |
periodLabel | string | null | no | — |
periodStart | string (date-time) | no | — |
reconcileWindowClosesAt | string (date-time) | null | no | — |
requiredApprovalTier | string | null | no | — |
requiredApprovalTierReason | string | null | no | — |
runId | string (uuid) | null | no | — |
samples | Essence.Payment.Billing.Application.DTOs.SeatUsageSampleDto[] | null | no | — |
seatSpans | Essence.Payment.Billing.Application.DTOs.SeatBillingSpanDto[] | null | no | — |
seatSpansNote | string | null | no | — |
segments | Essence.Payment.Billing.Application.DTOs.SeatTrueUpSegmentDto[] | null | no | — |
status | string | null | no | — |
statusLabel | string | null | no | — |
taxLabel | string | null | no | — |
vatAmount | number (double) | no | — |
vatRatePercent | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.SeatTrueUpSegmentDto
| Property | Type | Required | Description |
|---|---|---|---|
days | integer (int32) | no | — |
daysInMonth | integer (int32) | no | — |
deployedSeats | integer (int32) | no | — |
end | string (date-time) | no | — |
grossAmount | number (double) | no | — |
netAmount | number (double) | no | — |
overCommittedSeats | integer (int32) | no | — |
start | string (date-time) | no | — |
vatAmount | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.SeatUsageSampleDto
| Property | Type | Required | Description |
|---|---|---|---|
activeSeats | integer (int32) | no | — |
date | string (date-time) | no | — |
overCommittedSeats | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.SetDefaultPaymentMethodResultDto
| Property | Type | Required | Description |
|---|---|---|---|
overdueSettlement | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SkuDto
| Property | Type | Required | Description |
|---|---|---|---|
code | string | null | no | — |
entitlements | map<string, integer (int32)> | null | no | — |
family | string | null | no | — |
id | string (uuid) | no | — |
listPrice | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
name | string | null | no | — |
prerequisites | string[] | null | no | — |
status | string | null | no | — |
successorSkuCode | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SkuSummaryDto
| Property | Type | Required | Description |
|---|---|---|---|
code | string | null | no | — |
disposition | string | null | no | — |
licenceFamily | string | null | no | — |
licenceTier | integer (int32) | null | no | — |
listPrice | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
maxPerOwner | integer (int32) | null | no | — |
minimumInstanceTier | integer (int32) | null | no | — |
minimumTermMonths | integer (int32) | null | no | — |
name | string | null | no | — |
prerequisiteCodes | string[] | null | no | — |
priceBasis | string | null | no | — |
status | string | null | no | — |
successorSkuCode | string | null | no | — |
withdrawalEffectiveAt | string (date-time) | null | no | — |
Essence.Payment.Billing.Application.DTOs.SlaBreachCreditDto
| Property | Type | Required | Description |
|---|---|---|---|
breachDetectedAt | string (date-time) | no | — |
breachId | string (uuid) | no | — |
calculation | string | null | no | — |
creditAmount | number (double) | no | — |
creditIssued | boolean | no | — |
creditPercent | number (double) | no | — |
currency | string | null | no | — |
decidedAt | string (date-time) | no | — |
downtimeMinutes | number (double) | no | — |
ledgerCreditId | string (uuid) | null | no | — |
measuredUptimePct | number (double) | no | — |
measurementPeriod | string | null | no | — |
measurementWindowEnd | string (date-time) | no | — |
measurementWindowStart | string (date-time) | no | — |
outcome | string | null | no | — |
outcomeLabel | string | null | no | — |
recipientPolicy | string | null | no | — |
recordId | string (uuid) | no | — |
serviceName | string | null | no | — |
shortfallPct | number (double) | no | — |
slaBasis | string | null | no | — |
slaBasisLabel | string | null | no | — |
targetUptimePct | number (double) | no | — |
tier | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SlaCreditBandDto
| Property | Type | Required | Description |
|---|---|---|---|
atOrBelowUptimePct | number (double) | no | — |
creditPercentOfMonthlyFee | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.SlaCreditRollupDto
| Property | Type | Required | Description |
|---|---|---|---|
breachCount | integer (int32) | no | — |
creditedCount | integer (int32) | no | — |
currency | string | null | no | — |
exceptionCount | integer (int32) | no | — |
from | string (date-time) | null | no | — |
generatedAt | string (date-time) | no | — |
notEligibleCount | integer (int32) | no | — |
rows | Essence.Payment.Billing.Application.DTOs.SlaBreachCreditDto[] | null | no | — |
scope | string | null | no | — |
scopeId | string (uuid) | no | — |
to | string (date-time) | null | no | — |
totalCreditAmount | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.SlaCreditTermsDto
| Property | Type | Required | Description |
|---|---|---|---|
bands | Essence.Payment.Billing.Application.DTOs.SlaCreditBandDto[] | null | no | — |
currency | string | null | no | — |
recipientPolicy | string | null | no | — |
source | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SpendReconciliationDto
| Property | Type | Required | Description |
|---|---|---|---|
computedAtIso | string | null | no | — |
earlyLeavers | Essence.Payment.Billing.Application.DTOs.EarlyLeaverDto[] | null | no | — |
lines | Essence.Payment.Billing.Application.DTOs.SpendReconciliationLineDto[] | null | no | — |
organizationId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SpendReconciliationLineDto
| Property | Type | Required | Description |
|---|---|---|---|
achievedAtIso | string | null | no | — |
allocationId | string | null | no | — |
apprenticeReference | string | null | no | — |
apprenticeshipId | string | null | no | — |
attributedTo | Essence.Payment.Billing.Application.DTOs.AttributedActorDto | no | — |
drawnPence | integer (int64) | no | — |
isCompletionPayment | boolean | no | — |
lineId | string | null | no | — |
milestoneAchieved | boolean | no | — |
milestoneCode | string | null | no | — |
milestoneTitle | string | null | no | — |
paidToProviderPence | integer (int64) | no | — |
plannedPence | integer (int64) | no | — |
Essence.Payment.Billing.Application.DTOs.SponsoredBillingSummaryDto
| Property | Type | Required | Description |
|---|---|---|---|
activeUserCount | integer (int32) | no | — |
currency | string | null | no | — |
featureSet | string | null | no | — |
gracePeriodEnd | string (date-time) | null | no | — |
maxUsers | integer (int32) | no | — |
monthlyCost | number (double) | no | — |
sponsorOrgId | string | null | no | — |
sponsorshipId | string (uuid) | no | — |
status | string | null | no | — |
wholesalePerSeatPrice | number (double) | null | no | — |
wholesaleRate | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.SponsoredByOrgDto
| Property | Type | Required | Description |
|---|---|---|---|
activeSponsorships | integer (int32) | no | — |
activeUserCount | integer (int32) | no | — |
orgId | string | null | no | — |
revenue | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.SponsoredReportDto
| Property | Type | Required | Description |
|---|---|---|---|
byOrg | Essence.Payment.Billing.Application.DTOs.SponsoredByOrgDto[] | null | no | — |
totalActiveSponsorships | integer (int32) | no | — |
totalSponsoredRevenue | number (double) | no | — |
totalSponsoredUsers | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.SponsorPlanDistributionDto
| Property | Type | Required | Description |
|---|---|---|---|
activeUserCount | integer (int32) | no | — |
featureSet | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SponsorReportDto
| Property | Type | Required | Description |
|---|---|---|---|
activeUserCount | integer (int32) | no | — |
currency | string | null | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
planDistribution | Essence.Payment.Billing.Application.DTOs.SponsorPlanDistributionDto[] | null | no | — |
sponsorOrgId | string | null | no | — |
totalInvoiceAmount | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.SponsorshipDispatchReceiptDto
| Property | Type | Required | Description |
|---|---|---|---|
alreadyDispatchedSkipped | integer (int32) | no | — |
coldInvitesDispatched | integer (int32) | no | — |
existingUsersDeferred | integer (int32) | no | — |
remainingAllowance | integer (int32) | no | — |
sponsorshipId | string (uuid) | no | — |
submitted | integer (int32) | no | — |
suppressedSkipped | integer (int32) | no | — |
unresolvedSkipped | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.SponsorshipDto
| Property | Type | Required | Description |
|---|---|---|---|
attestationAcceptedAt | string (date-time) | null | no | — |
audience | Essence.Payment.Billing.Application.DTOs.AudienceSelectorDto | no | — |
budgetCapMinor | integer (int64) | no | — |
createdAt | string (date-time) | no | — |
currency | string | null | no | — |
expiresAt | string (date-time) | null | no | — |
id | string (uuid) | no | — |
lawfulBasis | Essence.Payment.Billing.Application.DTOs.LawfulBasisRecordDto | no | — |
moduleId | string | null | no | — |
moduleName | string | null | no | — |
sponsorOrgId | string (uuid) | no | — |
startsAt | string (date-time) | no | — |
status | string | null | no | — |
updatedAt | string (date-time) | null | no | — |
Essence.Payment.Billing.Application.DTOs.SponsorshipInvoiceDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
currency | string | null | no | — |
dueDate | string (date-time) | no | — |
invoiceId | string (uuid) | no | — |
invoiceNumber | string | null | no | — |
issuedAt | string (date-time) | no | — |
paidAt | string (date-time) | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SponsorshipLifecycleEntryDto
| Property | Type | Required | Description |
|---|---|---|---|
actorRole | string | null | no | — |
at | string (date-time) | no | — |
eventType | string | null | no | — |
id | string (uuid) | no | — |
sponsorshipId | string (uuid) | no | — |
subjectRedacted | boolean | no | — |
summary | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SponsorshipLifecyclePageDto
| Property | Type | Required | Description |
|---|---|---|---|
page | integer (int32) | no | — |
pageSize | integer (int32) | no | — |
rows | Essence.Payment.Billing.Application.DTOs.SponsorshipLifecycleEntryDto[] | null | no | — |
totalRows | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.SponsorshipUptakeDto
| Property | Type | Required | Description |
|---|---|---|---|
activated | Essence.Payment.Billing.Domain.ValueObjects.KAnonCount | no | — |
asOf | string (date-time) | no | — |
converted | Essence.Payment.Billing.Domain.ValueObjects.KAnonCount | no | — |
granted | Essence.Payment.Billing.Domain.ValueObjects.KAnonCount | no | — |
sponsorshipId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.StrandedOnboardingApplicationDto
| Property | Type | Required | Description |
|---|---|---|---|
application | string | null | no | — |
onboardingSessionId | string (uuid) | null | no | — |
outcome | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.StrandedOnboardingSubscriptionDto
| Property | Type | Required | Description |
|---|---|---|---|
awaitingPaymentInvoiceId | string (uuid) | null | no | — |
licenceFamily | string | null | no | — |
onboardingSessionId | string (uuid) | no | — |
outcome | string | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SubjectErasureObligationDto
| Property | Type | Required | Description |
|---|---|---|---|
endsAt | string (date-time) | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SubjectErasureObligationSummaryDto
| Property | Type | Required | Description |
|---|---|---|---|
evaluatedAt | string (date-time) | no | — |
hasActiveObligation | boolean | no | — |
obligations | Essence.Payment.Billing.Application.DTOs.SubjectErasureObligationDto[] | null | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SubjectSubscriptionDto
| Property | Type | Required | Description |
|---|---|---|---|
currentPeriodEnd | string (date-time) | null | no | — |
currentPeriodStart | string (date-time) | null | no | — |
entitlementActive | boolean | no | — |
startDate | string (date-time) | null | no | — |
status | string | null | no | — |
subjectId | string (uuid) | no | — |
subjectType | string | null | no | — |
subscriptionId | string (uuid) | null | no | — |
tier | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SubjectVaultEntitlementDto
| Property | Type | Required | Description |
|---|---|---|---|
entitlementActive | boolean | no | — |
storageQuotaBytes | integer (int64) | null | no | — |
storageUnlimited | boolean | no | — |
subjectId | string (uuid) | no | — |
subjectType | string | null | no | — |
tier | string | null | no | — |
vaultStrategy | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.SubscriptionDto
| Property | Type | Required | Description |
|---|---|---|---|
awaitingPaymentInvoiceId | string (uuid) | null | no | — |
billingPeriod | Essence.Payment.Billing.Application.DTOs.BillingPeriodDto | no | — |
canceledAt | string (date-time) | null | no | — |
cancellationReason | string | null | no | — |
collectionMethod | string | null | no | — |
commercialRoute | string | null | no | — |
createdAt | string (date-time) | no | — |
currentPeriodEnd | string (date-time) | no | — |
currentPeriodStart | string (date-time) | no | — |
endDate | string (date-time) | null | no | — |
id | string (uuid) | no | — |
invoiceToOrganizationId | string (uuid) | null | no | — |
items | Essence.Payment.Billing.Application.DTOs.SubscriptionItemDto[] | null | no | — |
metadata | map<string, string> | null | no | — |
organizationId | string (uuid) | null | no | — |
pendingPlanChangeId | string (uuid) | null | no | — |
pendingUpgradePlanId | string (uuid) | null | no | — |
planChangeEffectiveDate | string (date-time) | null | no | — |
pricingPlanId | string (uuid) | no | — |
sponsored | boolean | no | — |
sponsoredUntil | string (date-time) | null | no | — |
sponsorshipPurpose | string | null | no | — |
startDate | string (date-time) | no | — |
status | string | null | no | — |
tier | string | null | no | — |
trialEndDate | string (date-time) | null | no | — |
trialStartDate | string (date-time) | null | no | — |
updatedAt | string (date-time) | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SubscriptionGrandfatherStateDto
| Property | Type | Required | Description |
|---|---|---|---|
lock | Essence.Payment.Billing.Application.DTOs.GrandfatherPriceLockDto | no | — |
resolutions | Essence.Payment.Billing.Application.DTOs.RenewalPriceResolutionDto[] | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SubscriptionItemDto
| Property | Type | Required | Description |
|---|---|---|---|
createdAt | string (date-time) | no | — |
id | string (uuid) | no | — |
pricingPlanId | string (uuid) | no | — |
quantity | integer (int32) | no | — |
subscriptionId | string (uuid) | no | — |
unitPrice | Essence.Payment.Billing.Application.DTOs.MoneyDto | no | — |
updatedAt | string (date-time) | no | — |
Essence.Payment.Billing.Application.DTOs.SubscriptionPlanSummaryDto
| Property | Type | Required | Description |
|---|---|---|---|
currentPeriodEnd | string (date-time) | no | — |
currentPeriodStart | string (date-time) | no | — |
organizationId | string (uuid) | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | no | — |
tier | string | null | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.SubscriptionStateHistoryDto
| Property | Type | Required | Description |
|---|---|---|---|
changedAt | string (date-time) | no | — |
changedBy | string | null | no | — |
id | string (uuid) | no | — |
newStatus | string | null | no | — |
previousStatus | string | null | no | — |
reason | string | null | no | — |
subscriptionId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.TaxDeterminationDto
| Property | Type | Required | Description |
|---|---|---|---|
determinedAt | string (date-time) | no | — |
determinedBy | string | null | no | — |
ratePercent | number (double) | no | — |
reason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.TaxPendingQueueItemDto
| Property | Type | Required | Description |
|---|---|---|---|
attempts | integer (int32) | no | — |
currency | string | null | no | — |
determination | Essence.Payment.Billing.Application.DTOs.TaxDeterminationDto | no | — |
escalated | boolean | no | — |
escalatesAt | string (date-time) | null | no | — |
heldForHours | number (double) | null | no | — |
heldSince | string (date-time) | null | no | — |
invoiceId | string (uuid) | no | — |
invoiceNumber | string | null | no | — |
lastFailureReason | string | null | no | — |
lineCount | integer (int32) | no | — |
netAmount | number (double) | no | — |
organizationId | string (uuid) | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | null | no | — |
subscriptionInvoluntarilyPaused | boolean | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.TenantRevenueClassificationDto
| Property | Type | Required | Description |
|---|---|---|---|
asOfUtc | string (date-time) | no | — |
currentClass | string | null | no | — |
history | Essence.Payment.Billing.Application.DTOs.RevenueClassificationAssignmentDto[] | null | no | — |
isRevenueBearing | boolean | no | — |
tenantId | string (uuid) | no | — |
tenantType | Essence.Payment.Billing.Contracts.RevenueClassification.RevenueTenantType | no | — |
Essence.Payment.Billing.Application.DTOs.TopCustomerRevenueDto
| Property | Type | Required | Description |
|---|---|---|---|
customerKey | string | null | no | — |
customerScope | string | null | no | — |
invoiceCount | integer (int32) | no | — |
revenue | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.UpgradeChargePreviewDto
| Property | Type | Required | Description |
|---|---|---|---|
appliesImmediately | boolean | no | — |
awaitingPaymentInvoiceId | string (uuid) | null | no | — |
currency | string | null | no | — |
incomingCharge | number (double) | no | — |
ledgerCredit | number (double) | no | — |
netCharge | number (double) | no | — |
outgoingCredit | number (double) | no | — |
periodEnd | string (date-time) | no | — |
periodTotalDays | integer (int32) | no | — |
planName | string | null | no | — |
pricesIncludeTax | boolean | no | — |
pricingPlanId | string (uuid) | no | — |
remainingDays | integer (int32) | no | — |
subscriptionId | string (uuid) | no | — |
subtotal | number (double) | no | — |
taxAmount | number (double) | no | — |
totalPayable | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.UsageCostDisclosureDto
| Property | Type | Required | Description |
|---|---|---|---|
billableQuantity | number (double) | no | — |
currencyCode | string | null | no | — |
disclosedCost | number (double) | no | — |
includedQuantity | number (double) | no | — |
isBillable | boolean | no | — |
metricType | Essence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricType | no | — |
planName | string | null | no | — |
pricingPlanId | string (uuid) | no | — |
projectedQuantity | number (double) | no | — |
summary | string | null | no | — |
tierBreakdown | Essence.Payment.Billing.Application.DTOs.UsageCostTierDto[] | null | no | — |
unit | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.UsageCostTierDto
| Property | Type | Required | Description |
|---|---|---|---|
cost | number (double) | no | — |
pricePerUnit | number (double) | no | — |
quantity | number (double) | no | — |
tierEnd | number (double) | no | — |
tierStart | number (double) | no | — |
unit | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.UsageRecordDto
| Property | Type | Required | Description |
|---|---|---|---|
aggregated | boolean | no | — |
createdAt | string (date-time) | no | — |
id | string (uuid) | no | — |
metadata | map<string, string> | null | no | — |
metricType | string | null | no | — |
metricValue | number (double) | no | — |
notMetered | boolean | no | — |
organizationId | string (uuid) | null | no | — |
quotaReservationId | string (uuid) | null | no | — |
quotaReservationReplayed | boolean | no | — |
reason | string | null | no | — |
subscriptionId | string (uuid) | no | — |
timestamp | string (date-time) | no | — |
updatedAt | string (date-time) | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.UsageSummaryDto
| Property | Type | Required | Description |
|---|---|---|---|
metadata | map<string, string> | null | no | — |
metricSummaries | Essence.Payment.Billing.Application.DTOs.MetricUsageSummary[] | null | no | — |
organizationId | string (uuid) | null | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
subscriptionId | string (uuid) | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Application.DTOs.UsageWarningDto
| Property | Type | Required | Description |
|---|---|---|---|
alertThresholdPercentage | number (double) | no | — |
currentUsage | number (double) | no | — |
limit | number (double) | no | — |
message | string | null | no | — |
metricType | Essence.Payment.Billing.Domain.Aggregates.UsageRecord.UsageMetricType | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
unit | string | null | no | — |
usagePercentage | number (double) | no | — |
Essence.Payment.Billing.Application.DTOs.UseWearDeductionDto
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
appliedAt | string (date-time) | no | — |
appliedByPartyId | string (uuid) | no | — |
consumerDisputeReason | string | null | no | — |
consumerReviewedAt | string (date-time) | null | no | — |
jurisdiction | string | null | no | — |
legalBasis | string | null | no | — |
reviewStatus | string | null | no | — |
sellerStatedReason | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.VoidStrandedOnboardingSubscriptionsResultDto
| Property | Type | Required | Description |
|---|---|---|---|
applications | Essence.Payment.Billing.Application.DTOs.StrandedOnboardingApplicationDto[] | null | no | — |
dryRun | boolean | no | — |
eligible | integer (int32) | no | — |
subscriptions | Essence.Payment.Billing.Application.DTOs.StrandedOnboardingSubscriptionDto[] | null | no | — |
voided | integer (int32) | no | — |
Essence.Payment.Billing.Application.DTOs.WriteOffApprovalDto
| Property | Type | Required | Description |
|---|---|---|---|
amountAtApproval | number (double) | no | — |
approvedAt | string (date-time) | no | — |
approverRef | string | null | no | — |
role | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.WriteOffProposalDto
| Property | Type | Required | Description |
|---|---|---|---|
accountId | string (uuid) | no | — |
accountKey | string | null | no | — |
accountKind | string | null | no | — |
ageDays | integer (int32) | no | — |
amount | number (double) | no | — |
anchoredAt | string (date-time) | null | no | — |
approvals | Essence.Payment.Billing.Application.DTOs.WriteOffApprovalDto[] | null | no | — |
auditAnchorReference | string | null | no | — |
currencyCode | string | null | no | — |
executedAt | string (date-time) | null | no | — |
executedByRef | string | null | no | — |
id | string (uuid) | no | — |
invoices | Essence.Payment.Billing.Application.DTOs.WriteOffProposalInvoiceDto[] | null | no | — |
justification | string | null | no | — |
reasonCode | string | null | no | — |
rejectedByRef | string | null | no | — |
rejectionReason | string | null | no | — |
requestedAt | string (date-time) | no | — |
requestedByRef | string | null | no | — |
requiredApproverCount | integer (int32) | no | — |
requiredTier | string | null | no | — |
requiresCfoSignOff | boolean | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.DTOs.WriteOffProposalInvoiceDto
| Property | Type | Required | Description |
|---|---|---|---|
invoiceId | string (uuid) | no | — |
invoiceNumber | string | null | no | — |
outstandingAmount | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.AccountHealth.AccountHealthSignalDto
| Property | Type | Required | Description |
|---|---|---|---|
normalisedValue | number (double) | no | — |
observedAt | string (date-time) | no | — |
rawValue | number (double) | no | — |
signalKey | string | null | no | — |
Essence.Payment.Billing.Application.Queries.AccountHealth.AccountHealthSignalsResponse
| Property | Type | Required | Description |
|---|---|---|---|
signals | Essence.Payment.Billing.Application.Queries.AccountHealth.AccountHealthSignalDto[] | null | no | — |
windowEnd | string (date-time) | no | — |
windowStart | string (date-time) | no | — |
Essence.Payment.Billing.Application.Queries.Channel.RoutedOrganisationDto
| Property | Type | Required | Description |
|---|---|---|---|
amountError | string | null | no | — |
commercialRoute | string | null | no | — |
currency | string | null | no | — |
instanceSkuCode | string | null | no | — |
licencePosture | string | null | no | — |
licensedSeats | integer (int32) | null | no | — |
nextInvoiceDate | string (date-time) | null | no | — |
nextPeriodBuyAmount | number (double) | null | no | — |
organizationDisplayName | string | null | no | — |
organizationId | string (uuid) | null | no | — |
paymentTermsDays | integer (int32) | null | no | — |
status | string | null | no | — |
userLicenceSkuCode | string | null | no | — |
Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerCurrencyPosition
| Property | Type | Required | Description |
|---|---|---|---|
bucket | string | null | no | — |
byBucket | map<string, number (double)> | null | no | — |
currencyCode | string | null | no | — |
daysPastDue | integer (int32) | no | — |
oldestDueDate | string (date-time) | no | — |
openItemCount | integer (int32) | no | — |
totalOutstanding | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerReceivableItem
| Property | Type | Required | Description |
|---|---|---|---|
bucket | string | null | no | — |
channelOrderId | string (uuid) | null | no | — |
currencyCode | string | null | no | — |
daysPastDue | integer (int32) | no | — |
dueDate | string (date-time) | no | — |
invoiceDate | string (date-time) | no | — |
invoiceId | string (uuid) | no | — |
invoiceNumber | string | null | no | — |
kind | string | null | no | — |
outstanding | number (double) | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerReceivablesPosition
| Property | Type | Required | Description |
|---|---|---|---|
ageingBasis | string | null | no | — |
asOf | string (date-time) | no | — |
items | Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerReceivableItem[] | null | no | — |
partnerId | string (uuid) | no | — |
positions | Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerCurrencyPosition[] | null | no | — |
uninvoicedBuySellOrders | integer (int32) | no | — |
writtenOff | Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerWrittenOff[] | null | no | — |
Essence.Payment.Billing.Application.Queries.ChannelReceivables.PartnerWrittenOff
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
currencyCode | string | null | no | — |
Essence.Payment.Billing.Application.Queries.Commissions.CommissionDto
| Property | Type | Required | Description |
|---|---|---|---|
commissionAmount | number (double) | no | — |
commissionRate | number (double) | no | — |
commissionType | string | null | no | — |
currency | string | null | no | — |
earnedDate | string (date-time) | no | — |
id | string (uuid) | no | — |
invoiceId | string (uuid) | null | no | — |
paidDate | string (date-time) | null | no | — |
partnerCode | string | null | no | — |
partnerId | string (uuid) | no | — |
paymentId | string (uuid) | null | no | — |
payoutId | string (uuid) | null | no | — |
productType | string | null | no | — |
status | string | null | no | — |
subscriptionId | string (uuid) | null | no | — |
transactionAmount | number (double) | no | — |
transactionDate | string (date-time) | no | — |
Essence.Payment.Billing.Application.Queries.Commissions.PendingBalanceDto
| Property | Type | Required | Description |
|---|---|---|---|
commissionCount | integer (int32) | no | — |
currency | string | null | no | — |
partnerId | string (uuid) | no | — |
pendingAmount | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.CorporateGroups.CorporateGroupBillingRollupDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
basis | string | null | no | — |
complete | boolean | no | — |
entities | Essence.Payment.Billing.Application.Queries.CorporateGroups.GroupEntityBillingDto[] | null | no | — |
excludedCount | integer (int32) | no | — |
parentOrgId | string (uuid) | no | — |
periodEnd | string (date-time) | no | — |
periodStart | string (date-time) | no | — |
totals | Essence.Payment.Billing.Application.Queries.CorporateGroups.GroupCurrencyTotalDto[] | null | no | — |
Essence.Payment.Billing.Application.Queries.CorporateGroups.GroupCurrencyAmountDto
| Property | Type | Required | Description |
|---|---|---|---|
credited | number (double) | no | — |
currency | string | null | no | — |
invoiceCount | integer (int32) | no | — |
oneTime | number (double) | no | — |
subscription | number (double) | no | — |
total | number (double) | no | — |
usage | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.CorporateGroups.GroupCurrencyTotalDto
| Property | Type | Required | Description |
|---|---|---|---|
credited | number (double) | no | — |
currency | string | null | no | — |
entityCount | integer (int32) | no | — |
invoiceCount | integer (int32) | no | — |
oneTime | number (double) | no | — |
subscription | number (double) | no | — |
total | number (double) | no | — |
usage | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.CorporateGroups.GroupEntityBillingDto
| Property | Type | Required | Description |
|---|---|---|---|
amounts | Essence.Payment.Billing.Application.Queries.CorporateGroups.GroupCurrencyAmountDto[] | null | no | — |
invoiceCount | integer (int32) | null | no | — |
isCrossBorder | boolean | no | — |
organizationId | string (uuid) | no | — |
reason | string | null | no | — |
residencyJurisdiction | string | null | no | — |
role | string | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.Queries.Licences.OrganisationLicencePostureDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
cause | string | null | no | — |
offboardedAt | string (date-time) | null | no | — |
organizationId | string (uuid) | no | — |
posture | string | null | no | — |
retentionEndsAt | string (date-time) | null | no | — |
since | string (date-time) | null | no | — |
suspendedLicences | Essence.Payment.Billing.Application.Queries.Licences.SuspendedLicenceDto[] | null | no | — |
Essence.Payment.Billing.Application.Queries.Licences.SuspendedLicenceDto
| Property | Type | Required | Description |
|---|---|---|---|
licenceFamily | string | null | no | — |
subscriptionId | string (uuid) | no | — |
suspendedAtUtc | string (date-time) | null | no | — |
Essence.Payment.Billing.Application.Queries.Marketplace.CloudMarketplaceSettlementBreakDto
| Property | Type | Required | Description |
|---|---|---|---|
ageDays | integer (int32) | no | — |
importedAtUtc | string (date-time) | no | — |
line | Essence.Payment.Billing.Application.Commands.Marketplace.CloudMarketplaceSettlementLineDto | no | — |
marketplaceCode | string | null | no | — |
reportReference | string | null | no | — |
Essence.Payment.Billing.Application.Queries.Marketplace.CloudMarketplaceSettlementExceptionsDto
| Property | Type | Required | Description |
|---|---|---|---|
breaks | Essence.Payment.Billing.Application.Queries.Marketplace.CloudMarketplaceSettlementBreakDto[] | null | no | — |
count | integer (int32) | no | — |
truncated | boolean | no | — |
Essence.Payment.Billing.Application.Queries.Marketplace.CloudMarketplaceSettlementPeriodCloseDto
| Property | Type | Required | Description |
|---|---|---|---|
dispositionedCount | integer (int32) | no | — |
isClosed | boolean | no | — |
lineCount | integer (int32) | no | — |
marketplaceCode | string | null | no | — |
matchedCount | integer (int32) | no | — |
openCount | integer (int32) | no | — |
periodEndUtc | string (date-time) | no | — |
periodStartUtc | string (date-time) | no | — |
reportCount | integer (int32) | no | — |
reportReferences | string[] | null | no | — |
state | string | null | no | — |
Essence.Payment.Billing.Application.Queries.Partners.CommissionSummaryDto
| Property | Type | Required | Description |
|---|---|---|---|
averageCommissionAmount | number (double) | no | — |
currency | string | null | no | — |
earliestCommission | string (date-time) | null | no | — |
excludedForeignCurrencyCommissions | integer (int32) | no | — |
latestCommission | string (date-time) | null | no | — |
totalCommissions | integer (int32) | no | — |
totalEarned | number (double) | no | — |
totalPaid | number (double) | no | — |
totalPending | number (double) | no | — |
totalVoided | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Partners.MonthlyTrendDto
| Property | Type | Required | Description |
|---|---|---|---|
commissionCount | integer (int32) | no | — |
month | integer (int32) | no | — |
monthName | string | null | no | — |
payoutCount | integer (int32) | no | — |
totalEarned | number (double) | no | — |
totalPaid | number (double) | no | — |
year | integer (int32) | no | — |
Essence.Payment.Billing.Application.Queries.Partners.PartnerFinancialReportDto
| Property | Type | Required | Description |
|---|---|---|---|
commissionSummary | Essence.Payment.Billing.Application.Queries.Partners.CommissionSummaryDto | no | — |
generatedAt | string (date-time) | no | — |
monthlyTrends | Essence.Payment.Billing.Application.Queries.Partners.MonthlyTrendDto[] | null | no | — |
partnerCode | string | null | no | — |
partnerId | string (uuid) | no | — |
partnerName | string | null | no | — |
payoutSummary | Essence.Payment.Billing.Application.Queries.Partners.PayoutSummaryDto | no | — |
reportPeriodEnd | string (date-time) | no | — |
reportPeriodStart | string (date-time) | no | — |
revenueShareBreakdown | Essence.Payment.Billing.Application.Queries.Partners.RevenueShareBreakdownDto[] | null | no | — |
status | string | null | no | — |
Essence.Payment.Billing.Application.Queries.Partners.PayoutSummaryDto
| Property | Type | Required | Description |
|---|---|---|---|
averagePayoutAmount | number (double) | no | — |
currency | string | null | no | — |
lastPayoutDate | string (date-time) | null | no | — |
nextScheduledPayout | string (date-time) | null | no | — |
oldestPendingManualFirstFailedAt | string (date-time) | null | no | — |
pendingManualCount | integer (int32) | no | — |
pendingManualForeignCurrencyCount | integer (int32) | no | — |
totalFailed | number (double) | no | — |
totalPaidOut | number (double) | no | — |
totalPayouts | integer (int32) | no | — |
totalPending | number (double) | no | — |
totalPendingManual | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Receivables.AccountCollectionsDetail
| Property | Type | Required | Description |
|---|---|---|---|
arrangementNote | string | null | no | — |
constituents | Essence.Payment.Billing.Application.Queries.Receivables.ReceivableConstituent[] | null | no | — |
escalationHistory | Essence.Payment.Billing.Application.Queries.Receivables.EscalationHistoryEntry[] | null | no | — |
holdCount | integer (int32) | no | — |
ladderStageAtHold | integer (int32) | no | — |
position | Essence.Payment.Billing.Application.Queries.Receivables.AccountReceivablesPosition | no | — |
Essence.Payment.Billing.Application.Queries.Receivables.AccountCollectionsDetailDto
| Property | Type | Required | Description |
|---|---|---|---|
detail | Essence.Payment.Billing.Application.Queries.Receivables.AccountCollectionsDetail | no | — |
state | Essence.Payment.Billing.Application.DTOs.AccountCollectionsStateDto | no | — |
writeOffProposals | Essence.Payment.Billing.Application.DTOs.WriteOffProposalDto[] | null | no | — |
Essence.Payment.Billing.Application.Queries.Receivables.AccountReceivablesPosition
| Property | Type | Required | Description |
|---|---|---|---|
accountId | string (uuid) | no | — |
accountKey | string | null | no | — |
accountKind | Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsAccountKind | no | — |
bucket | Essence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucket | no | — |
currencyCode | string | null | no | — |
daysPastDue | integer (int32) | no | — |
holdReason | string | null | no | — |
holdUntil | string (date-time) | null | no | — |
lastContactAt | string (date-time) | null | no | — |
lastContactLadder | Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderKind | no | — |
lastContactStage | integer (int32) | null | no | — |
oldestBasisDate | string (date-time) | no | — |
openItemCount | integer (int32) | no | — |
ownerRef | string | null | no | — |
ownership | Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderOwnership | no | — |
pastEscalationWindow | boolean | no | — |
suppressionReason | string | null | no | — |
totalOutstanding | number (double) | no | — |
writtenOffValue | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Receivables.AgeingBandTotal
| Property | Type | Required | Description |
|---|---|---|---|
accountCount | integer (int32) | no | — |
bucket | Essence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucket | no | — |
value | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Receivables.CollectionsPerformance
| Property | Type | Required | Description |
|---|---|---|---|
billedInWindow | number (double) | no | — |
closingReceivables | number (double) | no | — |
collectedInWindow | number (double) | no | — |
currencyCode | string | null | no | — |
daysSalesOutstanding | number (double) | null | no | — |
openingReceivables | number (double) | no | — |
overNinetyValue | number (double) | no | — |
pendingWriteOffValue | number (double) | no | — |
recoveryRate | number (double) | null | no | — |
writeOffRate | number (double) | null | no | — |
writtenOffInWindow | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Receivables.CollectionsWorklistPage
| Property | Type | Required | Description |
|---|---|---|---|
asAt | string (date-time) | no | — |
basisDescription | string | null | no | — |
currencySubtotals | map<string, number (double)> | null | no | — |
positions | Essence.Payment.Billing.Application.Queries.Receivables.AccountReceivablesPosition[] | null | no | — |
totalMatching | integer (int32) | no | — |
truncated | boolean | no | — |
Essence.Payment.Billing.Application.Queries.Receivables.CurrencyAgeingSummary
| Property | Type | Required | Description |
|---|---|---|---|
bands | Essence.Payment.Billing.Application.Queries.Receivables.AgeingBandTotal[] | null | no | — |
currencyCode | string | null | no | — |
totalAccounts | integer (int32) | no | — |
totalOutstanding | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Receivables.EscalationHistoryEntry
| Property | Type | Required | Description |
|---|---|---|---|
attemptedAt | string (date-time) | no | — |
currencyCode | string | null | no | — |
detail | string | null | no | — |
ladder | Essence.Payment.Billing.Domain.Aggregates.Collections.CollectionsLadderKind | no | — |
nextActionDate | string (date-time) | null | no | — |
outcome | Essence.Payment.Billing.Domain.Aggregates.Collections.EscalationOutcome | no | — |
stage | integer (int32) | no | — |
totalOutstanding | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Receivables.ReceivableConstituent
| Property | Type | Required | Description |
|---|---|---|---|
bucket | Essence.Payment.Billing.Domain.Aggregates.Collections.ReceivablesAgeingBucket | no | — |
currencyCode | string | null | no | — |
daysPastDue | integer (int32) | no | — |
dueDate | string (date-time) | no | — |
invoiceDate | string (date-time) | no | — |
invoiceId | string (uuid) | no | — |
invoiceNumber | string | null | no | — |
outstanding | number (double) | no | — |
status | Essence.Payment.Billing.Domain.Aggregates.Invoice.InvoiceStatus | no | — |
type | Essence.Payment.Billing.Domain.Aggregates.Invoice.InvoiceType | no | — |
Essence.Payment.Billing.Application.Queries.Receivables.ReceivablesAgeingSummary
| Property | Type | Required | Description |
|---|---|---|---|
asAt | string (date-time) | no | — |
basisDescription | string | null | no | — |
currencies | Essence.Payment.Billing.Application.Queries.Receivables.CurrencyAgeingSummary[] | null | no | — |
scannedItemCount | integer (int32) | no | — |
truncated | boolean | no | — |
Essence.Payment.Billing.Application.Queries.SeatReconciliation.SeatDriftExposureDayDto
| Property | Type | Required | Description |
|---|---|---|---|
billedSeats | integer (int32) | null | no | — |
day | string (date-time) | no | — |
exposure | number (double) | null | no | — |
lastObservedAt | string (date-time) | null | no | — |
observations | integer (int32) | no | — |
observed | boolean | no | — |
overSeats | integer (int32) | null | no | — |
peakOverSeats | integer (int32) | null | no | — |
perSeatPerMonth | number (double) | null | no | — |
seatDelta | integer (int32) | null | no | — |
syncedSeats | integer (int32) | null | no | — |
Essence.Payment.Billing.Application.Queries.SeatReconciliation.SeatDriftExposureDto
| Property | Type | Required | Description |
|---|---|---|---|
asOf | string (date-time) | no | — |
contractVersion | string | null | no | — |
costUnavailableReason | string | null | no | — |
cumulativeExposure | number (double) | null | no | — |
currency | string | null | no | — |
days | Essence.Payment.Billing.Application.Queries.SeatReconciliation.SeatDriftExposureDayDto[] | null | no | — |
exposureComplete | boolean | no | — |
from | string (date-time) | no | — |
observedDays | integer (int32) | no | — |
organizationId | string (uuid) | no | — |
outstanding | Essence.Payment.Billing.Application.Queries.SeatReconciliation.SeatDriftExposureDayDto | no | — |
overProvisionedSeatDays | integer (int32) | no | — |
overSeatDays | integer (int32) | no | — |
to | string (date-time) | no | — |
underBilledDays | integer (int32) | no | — |
unobservedDays | integer (int32) | no | — |
unpricedUnderBilledDays | integer (int32) | no | — |
Essence.Payment.Billing.Application.Queries.SeatReconciliation.SeatReconciliationHistoryDto
| Property | Type | Required | Description |
|---|---|---|---|
alerts | Essence.Payment.Billing.Application.DTOs.SeatDriftAlertDto[] | null | no | — |
asOf | string (date-time) | no | — |
decisions | Essence.Payment.Billing.Application.DTOs.SeatResolutionDecisionDto[] | null | no | — |
organizationId | string (uuid) | no | — |
Essence.Payment.Billing.Application.Queries.Subledger.BillingsSnapshot
| Property | Type | Required | Description |
|---|---|---|---|
billingEventIds | (string (uuid))[] | null | no | — |
invoices | Essence.Payment.Billing.Application.Queries.Subledger.SubledgerInvoice[] | null | no | — |
total | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Subledger.DiscountApprovalAttribution
0 | 1 | 2 with no declared properties.
Essence.Payment.Billing.Application.Queries.Subledger.DiscountObservation
| Property | Type | Required | Description |
|---|---|---|---|
approvalLevel | string | null | no | — |
approvedBy | string | null | no | — |
approvedValue | number (double) | null | no | — |
attribution | Essence.Payment.Billing.Application.Queries.Subledger.DiscountApprovalAttribution | no | — |
authorisationReference | string | null | no | — |
dealDeskCaseId | string (uuid) | null | no | — |
reference | string | null | no | — |
value | number (double) | no | — |
withinApprovalPolicy | boolean | no | — |
Essence.Payment.Billing.Application.Queries.Subledger.EntitlementObservation
| Property | Type | Required | Description |
|---|---|---|---|
estimatedValue | number (double) | no | — |
hasActiveSubscription | boolean | no | — |
isFromLapsedPlan | boolean | no | — |
reference | string | null | no | — |
skuCode | string | null | no | — |
Essence.Payment.Billing.Application.Queries.Subledger.LeakageObservations
Essence.Payment.Billing.Application.Queries.Subledger.PricedSkuObservation
| Property | Type | Required | Description |
|---|---|---|---|
hasMeteringPath | boolean | no | — |
price | number (double) | no | — |
skuCode | string | null | no | — |
Essence.Payment.Billing.Application.Queries.Subledger.ReceivablesSnapshot
| Property | Type | Required | Description |
|---|---|---|---|
items | Essence.Payment.Billing.Application.Queries.Subledger.SubledgerItem[] | null | no | — |
oldestItemAgeDays | integer (int32) | no | — |
total | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Subledger.SubledgerInvoice
| Property | Type | Required | Description |
|---|---|---|---|
hasPostedJournal | boolean | no | — |
reference | string | null | no | — |
value | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Subledger.SubledgerItem
| Property | Type | Required | Description |
|---|---|---|---|
amount | number (double) | no | — |
label | string | null | no | — |
reference | string | null | no | — |
Essence.Payment.Billing.Application.Queries.Subledger.UsageObservation
| Property | Type | Required | Description |
|---|---|---|---|
hasInvoiceLine | boolean | no | — |
reference | string | null | no | — |
skuCode | string | null | no | — |
value | number (double) | no | — |
Essence.Payment.Billing.Application.Queries.Usage.VerificationCheckUsageDto
| Property | Type | Required | Description |
|---|---|---|---|
items | Essence.Payment.Billing.Application.Queries.Usage.VerificationCheckUsageLineDto[] | null | no | — |
propertyId | string | null | no | — |
recordedCount | integer (int32) | no | — |
requestId | string | null | no | — |
subscriptionId | string (uuid) | no | — |
truncated | boolean | no | — |
Essence.Payment.Billing.Application.Queries.Usage.VerificationCheckUsageLineDto
| Property | Type | Required | Description |
|---|---|---|---|
amountMinor | integer (int64) | null | no | — |
applicantId | string | null | no | — |
check | string | null | no | — |
currency | string | null | no | — |
includedAllowance | number (double) | null | no | — |
includedInPlan | boolean | no | — |
metricCode | string | null | no | — |
occurredAt | string (date-time) | no | — |
pricing | string | null | no | — |
propertyId | string | null | no | — |
quantity | number (double) | no | — |
sku | string | null | no | — |
unitPriceMinor | integer (int64) | null | no | — |
usageRecordId | string (uuid) | no | — |
verificationId | string | null | no | — |
Essence.Payment.Billing.Application.Services.EntitlementEvidenceIndexReadiness
| Property | Type | Required | Description |
|---|---|---|---|
indexes | map<string, string> | null | no | — |
ready | boolean | no | — |
Essence.Payment.Billing.Contracts.Entitlements.CapacityCheckRequestDto
| Property | Type | Required | Description |
|---|---|---|---|
currentCount | integer (int64) | no | — |
featureCode | string | null | no | — |
organizationId | string (uuid) | null | no | — |
requested | integer (int64) | no | — |
userId | string (uuid) | no | — |
Essence.Payment.Billing.Contracts.Entitlements.CapacityCheckResponseDto
| Property | Type | Required | Description |
|---|---|---|---|
addOn | integer (int64) | no | — |
allowance | integer (int64) | null | no | — |
allowed | boolean | no | — |
currentCount | integer (int64) | no | — |
decision | string | null | no | — |
included | integer (int64) | null | no | — |
message | string | null | no | — |
remaining | integer (int64) | null | no | — |
requested | integer (int64) | no | — |
upgradeMessage | string | null | no | — |
Essence.Payment.Billing.Contracts.Entitlements.CheckEntitlementRequestDto
| Property | Type | Required | Description |
|---|---|---|---|
featureCode | string | null | no | — |
organizationId | string (uuid) | no | — |
pricingPlanId | string (uuid) | null | no | — |
Essence.Payment.Billing.Contracts.Entitlements.CheckEntitlementResponseDto
| Property | Type | Required | Description |
|---|---|---|---|
hasAccess | boolean | no | — |
quotaExhausted | boolean | no | — |
reason | string | null | no | — |
requiredPlanTier | string | null | no | — |
Essence.Payment.Billing.Contracts.Entitlements.ModuleProvisioningEntitlementResponseDto
| Property | Type | Required | Description |
|---|---|---|---|
moduleSlotLimit | integer (int32) | no | — |
requiredPlanTier | string | null | no | — |
subscriptionActive | boolean | no | — |
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
| Property | Type | Required | Description |
|---|---|---|---|
floor | integer (int32) | no | — |
suppressed | boolean | no | — |
value | integer (int32) | null | no | — |
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]]
| Property | Type | Required | Description |
|---|---|---|---|
hasMore | boolean | no | — |
items | Essence.Payment.Billing.Application.DTOs.PayoutDto[] | null | no | — |
nextCursor | string | null | no | — |
pageSize | integer (int32) | no | — |
previousCursor | string | null | no | — |
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]]
| Property | Type | Required | Description |
|---|---|---|---|
hasMore | boolean | no | — |
items | Essence.Payment.Billing.Application.Queries.Channel.RoutedOrganisationDto[] | null | no | — |
nextCursor | string | null | no | — |
pageSize | integer (int32) | no | — |
previousCursor | string | null | no | — |
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]]
| Property | Type | Required | Description |
|---|---|---|---|
hasNextPage | boolean | no | — |
hasPreviousPage | boolean | no | — |
items | Essence.Payment.Billing.Application.DTOs.SkuSummaryDto[] | null | no | — |
pageNumber | integer (int32) | no | — |
pageSize | integer (int32) | no | — |
totalCount | integer (int32) | no | — |
totalPages | integer (int32) | no | — |
Microsoft.AspNetCore.Mvc.ProblemDetails
| Property | Type | Required | Description |
|---|---|---|---|
detail | string | null | no | — |
instance | string | null | no | — |
status | integer (int32) | null | no | — |
title | string | null | no | — |
type | string | null | no | — |