# Get revenue record detail

`GET https://api.suger.cloud/org/{orgId}/revenue/record/{partner}/{recordId}`

Return one unified revenue record in full, including its billing, cash-collection, and disbursement amounts and its lifecycle stage. A unified revenue record is a single billing event normalized across channels. Use ListUnifiedRevenueRecords to find record IDs, and GetRevenueRecordEvents for the record's provenance chain.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `orgId` | path | string | yes | Organization ID |
| `partner` | path | string | yes | Channel the record belongs to (AWS, AZURE, GCP, STRIPE, or a CRM_* source) |
| `recordId` | path | string | yes | Unified revenue record ID, as returned by ListUnifiedRevenueRecords |

## Responses

### 200 — OK

Content-Type: `application/json` · Schema: `RevenueRecordInfo`

**`RevenueRecordInfo`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `awsListingFeeTaxAmount` | number | no | AwsListingFeeTaxAmount is the net VAT AWS charges the seller on its listing fee. It is stored separately from ChannelFeeAmount and added only when a tax-inclusive marketplace charge is needed. |
| `awsRevenueRecords` | array<AwsBillingEvent> | no | For raw revenue records in AWS Marketplace |
| `azureRevenueRecords` | array<AzureCmaRevenue> | no | For raw revenue records in Azure Marketplace |
| `bankTraceId` | string | no | The bank trace ID of the revenue record if applicable |
| `billingModel` | RevenueBillingModel | no |  |
| `cancellationEffectiveDate` | string | no | CancellationEffectiveDate is the date a subscription was actually terminated (ISO 8601 date or date-time string). Used by the analytics waterfall churn rule (F30) to distinguish records that were active at a measurement date but later canceled — those still count toward starting ARR and contribute to churn. Empty string means no explicit cancellation date; downstream code falls back to recognition_trigger_date when payment_status=CANCELED. |
| `channel` | RevenueChannel | no |  |
| `chargebeeInvoiceId` | string | no | The Chargebee invoice ID for this revenue record if synced to Chargebee |
| `chargebeePaymentTransactionId` | string | no | The Chargebee payment transaction ID for this revenue record if a payment was recorded in Chargebee |
| `chargebeeRefundTransactionId` | string | no | The Chargebee refund transaction ID for this revenue record if a refund was recorded in Chargebee |
| `createNotificationDigestId` | string | no | Stable audited identity for the CREATE digest batch. It survives activity retries so a successful enqueue followed by an acknowledgement failure is deduplicated on replay. |
| `createNotificationDigestPending` | boolean | no | Whether this record still needs to be included in the human-channel CREATE digest after its invoice projection has completed successfully. |
| `createNotificationPending` | boolean | no | Whether the per-record CREATE notification still needs to be delivered. Persisting this with the revenue row makes notification delivery retryable after a partially-completed sync. |
| `creditAmount` | number | no | The credit amount used in the revenue record. |
| `crmDealName` | string | no | Human-readable CRM deal/opportunity name for unbilled queue display. |
| `crmOpportunityId` | string | no | Native CRM opportunity/deal identifier used for idempotent booking upsert and later cancellation/invoice matching. |
| `crmPartner` | string | no | CRM source that produced a booking-stage revenue record. V1 CRM inbound stores booking facts here because billing.revenue_record remains the canonical lifecycle record and no separate CRM booking table exists. |
| `crmStage` | string | no | Native CRM stage at the time Suger last polled the deal. |
| `dealNotInvoicedAlertedAt` | string | no | DealNotInvoicedAlertedAt is the RFC3339 timestamp of the last fired DEAL_NOT_INVOICED alert for this record (D07 durable dedup). Prevents the alert from re-firing daily for the same long-unbilled deal — the alert fires once, then suppressed until manually cleared. |
| `disbursementBillingEventId` | string | no | The disbursement ID of the revenue record if applicable |
| `disbursementNotificationSent` | boolean | no | Whether the disbursement notification has been sent to the seller/ISV. |
| `disbursementReferenceNumber` | string | no | The disbursement reference number generated by AWS upon creating each disbursement request. It can be used to correlate seller bank-provided deposit notifications and reports to invoices in AWS Marketplace reports. |
| `dismissReason` | string | no | DismissReason is the free-text reason recorded on manual dismiss (D03). |
| `dismissedBy` | string | no | DismissedBy is the user ID that performed the manual dismiss (D03 audit). |
| `dismissedFromQueueAt` | string | no | DismissedFromQueueAt is the RFC3339 timestamp at which a CRM booking record was manually removed from the unbilled queue (D03). Only valid for direct/Stripe deals with no linked marketplace offer in ACCEPTED state; the dismiss handler rejects marketplace-accepted deals because those can only exit via auto-removal on entitlement provisioning (F27). |
| `earningId` | string | no | The earning ID of the revenue record if applicable |
| `gcpRevenueRecords` | array<GcpChargeUsage> | no | For raw revenue records in GCP Marketplace |
| `idSource` | string | no | Source of the revenue record ID. |
| `invoiceId` | string | no | The invoice ID of the revenue record if applicable |
| `paymentId` | string | no | The payment  ID of the revenue record if applicable |
| `prepayCreditAmount` | number | no | The prepay credit amount drawn down on this revenue record. Applicable only to GCP Marketplace. Sourced from the "Prepay Credits" column of the GCP Charges and Usage V2 report. |
| `queueAutoRemovedAt` | string | no | QueueAutoRemovedAt is the RFC3339 timestamp at which the unbilled queue reconciliation removed a marketplace CRM booking because its linked offer was provisioned into an active entitlement (F27 auto-removal). Distinct from DismissedFromQueueAt so the audit trail differentiates manual finance action from automatic system reconciliation. |
| `relatedEntitlementIDs` | array<string> | no | RelatedEntitlementIDs is populated on aggregated invoice projections when one provider invoice contains revenue relationships for multiple contracts. |
| `resellerId` | string | no | The reseller ID of the revenue record if applicable |
| `resellerName` | string | no | The reseller name of the revenue record if application |
| `resource` | string | no | Resource name for the revenue record. Applicable only to GCP Marketplace. |
| `usagePeriodEndDate` | string | no | The end of the usage period covered by this revenue record, if applicable. |
| `usagePeriodStartDate` | string | no | The start of the usage period covered by this revenue record, if applicable. |

**`AwsBillingEvent`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `action` | string | no |  |
| `actionDate` | NullableTime | no |  |
| `agreementID` | string | no |  |
| `amount` | number | no |  |
| `balanceImpacting` | integer | no |  |
| `bankTraceID` | string | no |  |
| `billingAddressID` | string | no |  |
| `brokerID` | string | no |  |
| `buyerID` | string | no |  |
| `buyerTransactionReferenceID` | string | no |  |
| `currency` | string | no |  |
| `dataFeedProductID` | string | no |  |
| `disbursementBillingEventID` | string | no |  |
| `disbursementReferenceNumber` | string | no |  |
| `endUserAccountID` | string | no |  |
| `entitlementID` | string | no |  |
| `fromAccountID` | string | no |  |
| `id` | string | no |  |
| `insertDate` | NullableTime | no |  |
| `invoiceDate` | NullableTime | no |  |
| `invoiceID` | string | no |  |
| `offerID` | string | no |  |
| `organizationID` | string | no |  |
| `parentBillingEventID` | string | no |  |
| `paymentDueDate` | NullableTime | no |  |
| `productID` | string | no |  |
| `refundedBuyerTransactionReferenceID` | string | no |  |
| `toAccountID` | string | no |  |
| `transactionReferenceID` | string | no |  |
| `transactionType` | string | no |  |
| `usagePeriodEndDate` | NullableTime | no |  |
| `usagePeriodStartDate` | NullableTime | no |  |

**`AzureCmaRevenue`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `azureAssetID` | string | no |  |
| `azureBillingAccountID` | string | no |  |
| `azureCustomerID` | string | no |  |
| `azureOfferID` | string | no |  |
| `azurePlanID` | string | no |  |
| `billingModel` | string | no |  |
| `buyerID` | string | no |  |
| `earningID` | string | no |  |
| `earningUsd` | number | no |  |
| `entitlementID` | string | no |  |
| `estimatedPayoutMonth` | NullableTime | no |  |
| `invoiceDate` | NullableTime | no |  |
| `invoiceDueDate` | NullableTime | no |  |
| `invoiceID` | string | no |  |
| `offerID` | string | no |  |
| `organizationID` | string | no |  |
| `paymentID` | string | no |  |
| `paymentSentDate` | NullableTime | no |  |
| `paymentStatus` | string | no |  |
| `payoutStatus` | string | no |  |
| `productID` | string | no |  |
| `programName` | string | no |  |
| `purchaseRecordID` | string | no |  |
| `resellerCity` | string | no |  |
| `resellerCompany` | string | no |  |
| `resellerCountry` | string | no |  |
| `resellerEmail` | string | no |  |
| `resellerID` | string | no |  |
| `resellerState` | string | no |  |
| `revenueUsd` | number | no |  |
| `termEndDate` | string | no |  |
| `termStartDate` | string | no |  |
| `transactionDate` | NullableTime | no |  |

**`GcpChargeUsage`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `abandoned` | number | no |  |
| `accountID` | string | no |  |
| `buyerID` | string | no |  |
| `charges` | number | no |  |
| `currency` | string | no |  |
| `dueVendor` | number | no |  |
| `entitlementID` | string | no |  |
| `googleEntity` | string | no |  |
| `insightAccountID` | string | no |  |
| `offerID` | string | no |  |
| `ordinal` | integer | no |  |
| `organizationID` | string | no |  |
| `paymentSchedule` | string | no |  |
| `paymentType` | string | no |  |
| `prepayCredits` | number | no |  |
| `productID` | string | no |  |
| `refundBalanceDeductedThisMonth` | number | no |  |
| `refundBalanceOutstanding` | number | no |  |
| `refundReason` | string | no |  |
| `released` | number | no |  |
| `reportDate` | string | no |  |
| `resource` | string | no |  |
| `sku` | string | no |  |
| `trialUse` | number | no |  |
| `unit` | string | no |  |
| `usage` | number | no |  |
| `usedBy` | string | no |  |
| `withheld` | number | no |  |

**`NullableTime`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `Time` | string | no |  |
| `Valid` | boolean | no | Valid is true if Time is not NULL. |

### 401 — Missing or invalid access token, or the caller lacks the revenue read permission

Content-Type: `application/json`

### 404 — No record with this ID exists for the organization and partner

Content-Type: `application/json`

### 500 — Failed to query the record

Content-Type: `application/json`

---

Interactive API reference: https://doc.suger.io/api/
