Table 8061 "Billing Line"
Subscription Billing · Microsoft.SubscriptionBilling
Across versions
- BC23-28not present
- BC29-30present
Neighbourhood 27 connected objects and pages
Subscription Billing · Microsoft.SubscriptionBilling · BC29-30 · source at ea08af5e · facts from BC29
Learn documents this table through its pages: Page 8067 “Recurring Billing” (5 Learn pages).
Properties
| Property | Value |
|---|---|
| Caption | Billing Line |
| DataClassification | CustomerContent |
| LookupPageId | Billing Lines |
| DrillDownPageId | Billing Lines |
Fields
Explanation: the field’s ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.
| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | Entry No. | Integer | Specifies the value of the Entry No. field. via Page 8016 “Billing Lines List” | AutoIncrement |
| 2 | User ID | Code[50] | Specifies the user who created the line. via Page 8016 “Billing Lines List” | TableRelation Table 91 “User Setup” (User Setup); not editable; DataClassification EndUserIdentifiableInformation |
| 10 | Partner No. | Code[20] | Specifies the number of the partner who will receive the contract components and be billed by default. via Page 8016 “Billing Lines List” | TableRelation Table 18 “Customer”, Table 23 “Vendor” (if (Partner = const(Customer)) Customer else if (Partner = const(Vendor)) Vendor) |
| 20 | Subscription Contract No. | Code[20] | Specifies the number of the Subscription Contract. via Page 8016 “Billing Lines List” | TableRelation Table 8052 “Customer Subscription Contract”, Table 8063 “Vendor Subscription Contract” (if (Partner = const(Customer)) “Customer Subscription Contract” else if (Partner = const(Vendor)) “Vendor Subscription Contract”) |
| 21 | Subscription Contract Line No. | Integer | Specifies the value of the Contract Line No. field. via Page 8016 “Billing Lines List” | TableRelation Table 8062 “Cust. Sub. Contract Line”, Table 8065 “Vend. Sub. Contract Line” (if (Partner = const(Customer)) “Cust. Sub. Contract Line”.“Line No.” where(“Subscription Contract No.” = field(“Subscription Contract No.”)) else if (Partner = const(Vendor)) “Vend. Sub. Contract Line”.“Line No.” where(“Subscription Contract No.” = field(“Subscription Contract No.”))) |
| 30 | Subscription Header No. | Code[20] | Specifies the number of the Subscription. via Page 8016 “Billing Lines List” | TableRelation Table 8057 “Subscription Header” (Subscription Header) |
| 31 | Subscription Line Entry No. | Integer | Specifies the value of the Subscription Line Entry No. field. via Page 8016 “Billing Lines List” | TableRelation Table 8059 “Subscription Line” (“Subscription Line”.“Entry No.”) |
| 32 | Subscription Description | Text[100] | Specifies a description of the Subscription. via Page 8016 “Billing Lines List” | FlowField: lookup(“Subscription Header”.Description where(“No.” = field(“Subscription Header No.”))); not editable |
| 33 | Subscription Line Description | Text[100] | Specifies the description of the Subscription Line. via Page 8016 “Billing Lines List” | |
| 34 | Subscription Line Start Date | Date | Specifies the date from which the Subscription Line is valid and will be invoiced. via Page 8016 “Billing Lines List” | |
| 35 | Subscription Line End Date | Date | Specifies the date up to which the Subscription Line is valid. via Page 8016 “Billing Lines List” | |
| 36 | Partner | Enum “Service Partner” | Specifies the value of the Partner field. via Page 8016 “Billing Lines List” | enum Enum 8053 “Service Partner” |
| 38 | Discount | Boolean | Specifies whether the Subscription Line is used as a basis for periodic invoicing or discounts. via Page 8016 “Billing Lines List” | |
| 39 | Service Object Quantity | Decimal | Specifies the quantity from the Subscription. via Page 8016 “Billing Lines List” | |
| 50 | Billing from | Date | Specifies the date from which the Subscription Line is billed. via Page 8016 “Billing Lines List” | |
| 51 | Billing to | Date | Specifies the date to which the Subscription Line is billed. via Page 8016 “Billing Lines List” | |
| 52 | Amount | Decimal | Specifies the amount for the Subscription Line including discount. via Page 8016 “Billing Lines List” | |
| 53 | Billing Rhythm | DateFormula | Specifies the Dateformula for rhythm in which the Subscription Line is invoiced. Using a Dateformula rhythm can be, for example, a monthly, a quarterly or a yearly invoicing. via Page 8016 “Billing Lines List” | |
| 54 | Update Required | Boolean | Specifies whether the associated Subscription Line has been changed. The “Create Billing Proposal” function must be called up again before the billing document is created. via Page 8016 “Billing Lines List” | |
| 55 | Document Type | Enum “Rec. Billing Document Type” | Specifies the document type of the document created for posting. via Page 8016 “Billing Lines List” | enum Enum 8054 “Rec. Billing Document Type” |
| 56 | Document No. | Code[20] | Specifies the document number of the document created for posting. via Page 8016 “Billing Lines List” | TableRelation Table 36 “Sales Header” (if (“Document Type” = const(Invoice), Partner = const(Customer)) “Sales Header”.“No.” where(“Document Type” = const(Invoice)) else if (“Document Type” = const(“Credit Memo”), Partner = const(Customer)) “Sales Header”.“No.” where(“Document Type” = const(“Credit Memo”)) else if (“Document Type” = cons…) |
| 57 | Unit Price | Decimal | Specifies the Unit Price for the subscription line billing period without discount. via Page 8016 “Billing Lines List” | |
| 58 | Discount % | Decimal | Specifies the Discount % for the subscription line billing period. via Page 8016 “Billing Lines List” | |
| 60 | Correction Document Type | Enum “Rec. Billing Document Type” | Specifies the value of the Correction Document Type field. via Page 8016 “Billing Lines List” | enum Enum 8054 “Rec. Billing Document Type” |
| 61 | Correction Document No. | Code[20] | Specifies the value of the Correction Document No. field. via Page 8016 “Billing Lines List” | TableRelation Table 112 “Sales Invoice Header”, Table 114 “Sales Cr.Memo Header” (if (“Correction Document Type” = const(Invoice), Partner = const(Customer)) “Sales Invoice Header”.“No.” else if (“Correction Document Type” = const(“Credit Memo”), Partner = const(Customer)) “Sales Cr.Memo Header”.“No.” else if (“Correction Document Type” = const(Invoice), Partner = const(Vendor)) …) |
| 62 | Document Line No. | Integer | Specifies the document line number of the document created for posting. via Page 8016 “Billing Lines List” | TableRelation Table 37 “Sales Line” (if (Partner = const(Customer), “Document Type” = const(Invoice)) “Sales Line”.“Line No.” where(“Document Type” = const(Invoice), “Document No.” = field(“Document No.”)) else if (Partner = const(Customer), “Document Type” = const(“Credit Memo”)) “Sales Line”.“Line No.” where(“Document Type” = const(“…) |
| 63 | Billing Reference Date Changed | Boolean | Specifies whether the billing period has been adjusted manually. This is taken into account by the period calculation and may have an effect on the creation of future billing proposals. | |
| 70 | Billing Error Log Entry No. | Integer | Specifies the entry number of the related billing error log, if any. | |
| 100 | Billing Template Code | Code[20] | Specifies the template code. via Page 8016 “Billing Lines List” | TableRelation Table 8060 “Billing Template” (Billing Template) |
| 101 | Currency Code | Code[20] | Specifies the value of the Code field. via Page 8016 “Billing Lines List” | TableRelation Currency.Code |
| 102 | Unit Cost | Decimal | — | not editable |
| 103 | Unit Cost (LCY) | Decimal | Specifies the unit cost for the billing period. via Page 8074 “Billing Lines” | |
| 200 | Indent | Integer | Specifies the value of the Indent field. via Page 8016 “Billing Lines List” | |
| 201 | Detail Overview | Enum “Contract Detail Overview” | Specifies the value of the Detail Overview field. via Page 8016 “Billing Lines List” | enum Enum 8060 “Contract Detail Overview” |
| 202 | Rebilling | Boolean | — |
Keys
- PK: Entry No. (clustered)
- SK1: Subscription Header No., Subscription Line Entry No., Billing to
- SK2: Partner No., Subscription Contract No., Subscription Contract Line No., Billing from
- SK3: Subscription Contract No., Subscription Contract Line No., Billing from
- SK4: Billing Template Code, Subscription Contract No.
- SK5: Document Type, Document No.
- SK6: Billing Template Code, Partner
- SK7: Subscription Line Entry No.
Events published
OnBeforeUpdateNextBillingDateInResetSubscriptionLineNextBillingDate(var SubscriptionLine: Record "Subscription Line")(integration)OnBeforeOpenSalesDocumentCard(BillingLine: Record "Billing Line"; var IsHandled: Boolean)(integration)
Procedures
FindFirstBillingLineForServiceCommitment(var BillingLine2: Record "Billing Line")(internal)ResetServiceCommitmentNextBillingDate()GetSalesDocumentTypeForContractNo(): Enum "Sales Document Type"(internal)GetPurchaseDocumentTypeForContractNo(): Enum "Purchase Document Type"(internal)GetSalesDocumentTypeForCustomerNo(): Enum "Sales Document Type"(internal)GetPurchaseDocumentTypeForVendorNo(): Enum "Purchase Document Type"(internal)GetSalesDocumentTypeFromBillingDocumentType(): Enum "Sales Document Type"GetPurchaseDocumentTypeFromBillingDocumentType(): Enum "Purchase Document Type"GetBillingDocumentTypeFromSalesDocumentType(SalesDocumentType: Enum "Sales Document Type"): Enum "Rec. Billing Document Type"GetBillingDocumentTypeFromPurchaseDocumentType(PurchaseDocumentType: Enum "Purchase Document Type"): Enum "Rec. Billing Document Type"InitNewBillingLine()(internal)OpenDocumentCard()(internal)FilterBillingLineOnContract(ServicePartner: Enum "Service Partner"; ContractNo: Code[20])FilterBillingLineOnContractLine(ServicePartner: Enum "Service Partner"; ContractNo: Code[20]; ContractLineNo: Integer)FilterBillingLineOnServiceCommitment(ServiceCommitmentEntryNo: Integer)(internal)IsPartnerVendor(): BooleanGetSign(): Integer(internal)GetCorrectionDocumentNo(ServicePartner: Enum "Service Partner"; DocumentNo: Code[20]): Code[20](internal)FilterBillingLineOnDocumentLine(DocumentType: Enum "Rec. Billing Document Type"; DocumentNo: Code[20]; DocumentLineNo: Integer)GetServiceCommitment(var ServiceCommitment: Record "Subscription Line"): Boolean(internal)RebillingUsageDataExist(): Boolean(internal)
Plus 8 local procedures.
Triggers
OnDelete
Relations
- drill-down page Page 8074 “Billing Lines”
- lookup page Page 8074 “Billing Lines”
- Correction Document No.: TableRelation Table 112 “Sales Invoice Header” (conditional)
- Correction Document No.: TableRelation Table 114 “Sales Cr.Memo Header” (conditional)
- Partner No.: TableRelation Table 18 “Customer” (conditional)
- Partner No.: TableRelation Table 23 “Vendor” (conditional)
- Document No.: TableRelation Table 36 “Sales Header” (conditional)
- Document Line No.: TableRelation Table 37 “Sales Line” (conditional)
- Subscription Contract No.: TableRelation Table 8052 “Customer Subscription Contract” (conditional)
- Subscription Description: CalcFormula Table 8057 “Subscription Header”
- Subscription Header No.: TableRelation Table 8057 “Subscription Header”
- Subscription Line Entry No.: TableRelation Table 8059 “Subscription Line”
- Billing Template Code: TableRelation Table 8060 “Billing Template”
- Subscription Contract Line No.: TableRelation Table 8062 “Cust. Sub. Contract Line” (conditional)
- Subscription Contract No.: TableRelation Table 8063 “Vendor Subscription Contract” (conditional)
- Subscription Contract Line No.: TableRelation Table 8065 “Vend. Sub. Contract Line” (conditional)
- User ID: TableRelation Table 91 “User Setup”
Referenced by
3 fields in 3 objects relate to this table (TableRelation or CalcFormula).
- Table 8006 “Usage Data Billing”: Billing Line Entry No.
- Table 8070 “Subscription Billing Cue”: Not Invoiced
- Table extension 8065 “Purchase Line”: Attached to Sub. Contract line
Pages and codeunits on this table
- Page 8016 “Billing Lines List” (source table)
- Page 8021 “Billing Lines API” (source table)
- Page 8067 “Recurring Billing” (source table)
- Page 8074 “Billing Lines” (source table)
- Codeunit 8060 “Create Billing Documents” (codeunit runs on it)
Recent changes
- 2026-08-29 #10235 [Bug][SubscriptionBilling] Enforce Subscription Line Start Date change rules on all edit paths (main, BC30, fix)
- 2026-07-30 #8553 [Bug][SubscriptionBilling]: Performance: Billing document creation does not scale to large datasets (4M+ subscription lines) (main, BC30, performance)
Ask your agent
Procedure bodies are not stored here (D10). For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "table", object_name: "Billing Line"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.