---
id: object/table/8061
type: object
title: Table 8061 "Billing Line"
summary: Table 8061 "Billing Line" in Subscription Billing (Microsoft.SubscriptionBilling). 35 fields, 21 public procedures, 2 events. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - table
  - subscription billing
versions:
  introduced: "29"
  last_changed: null
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 6ed6215b361ef8133ce03c21c1b3f38749c089989b062e8bdb67290f1aa9dfa6
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/Subscription%20Billing/app/Billing/Tables/BillingLine.Table.al
    title: src/Apps/W1/Subscription Billing/app/Billing/Tables/BillingLine.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/SRB/billing-automation
    - https://learn.microsoft.com/dynamics365/business-central/SRB/examples
    - https://learn.microsoft.com/dynamics365/business-central/SRB/recurring-billing
    - https://learn.microsoft.com/dynamics365/business-central/SRB/welcome
    - https://learn.microsoft.com/dynamics365/business-central/SRB/working-with-contracts/contract-deferrals-per-contract-line
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/sales/subscription-billing
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/10235
    - change/bcapps/8553
object_type: table
object_id: 8061
name: Billing Line
namespace: Microsoft.SubscriptionBilling
app: Subscription Billing
extends: null
first_version: "29"
last_version: "30"
present_in:
  - "29"
  - "30"
changed_in: []
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 35
  procedures: 31
  events: 2
  subscribers: 0
relations:
  out: 17
  referenced_by: 3
  pages: 4
  extended_by: 0
  event_subscribers: 0
  calls: 0
  called_by: 0
  implements: 0
---

# Table 8061 "Billing Line"

> Table 8061 "Billing Line" in Subscription Billing (Microsoft.SubscriptionBilling). 35 fields, 21 public procedures, 2 events. Introduced in BC29, still in BC30.

Subscription Billing · Microsoft.SubscriptionBilling · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/Subscription%20Billing/app/Billing/Tables/BillingLine.Table.al) · facts from BC29

Learn documents this table through its pages: [Page 8067 "Recurring Billing"](../page/8067.md) (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. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | AutoIncrement |
| 2 | User ID | Code[50] | Specifies the user who created the line. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation [Table 91 "User Setup"](../table/91.md) (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. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation [Table 18 "Customer"](../table/18.md), [Table 23 "Vendor"](../table/23.md) (if (Partner = const(Customer)) Customer else if (Partner = const(Vendor)) Vendor) |
| 20 | Subscription Contract No. | Code[20] | Specifies the number of the Subscription Contract. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation [Table 8052 "Customer Subscription Contract"](../table/8052.md), [Table 8063 "Vendor Subscription Contract"](../table/8063.md) (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. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation [Table 8062 "Cust. Sub. Contract Line"](../table/8062.md), [Table 8065 "Vend. Sub. Contract Line"](../table/8065.md) (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. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation [Table 8057 "Subscription Header"](../table/8057.md) (Subscription Header) |
| 31 | Subscription Line Entry No. | Integer | Specifies the value of the Subscription Line Entry No. field. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation [Table 8059 "Subscription Line"](../table/8059.md) ("Subscription Line"."Entry No.") |
| 32 | Subscription Description | Text[100] | Specifies a description of the Subscription. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | 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. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 34 | Subscription Line Start Date | Date | Specifies the date from which the Subscription Line is valid and will be invoiced. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 35 | Subscription Line End Date | Date | Specifies the date up to which the Subscription Line is valid. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 36 | Partner | Enum "Service Partner" | Specifies the value of the Partner field. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | enum [Enum 8053 "Service Partner"](../enum/8053.md) |
| 38 | Discount | Boolean | Specifies whether the Subscription Line is used as a basis for periodic invoicing or discounts. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 39 | Service Object Quantity | Decimal | Specifies the quantity from the Subscription. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 50 | Billing from | Date | Specifies the date from which the Subscription Line is billed. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 51 | Billing to | Date | Specifies the date to which the Subscription Line is billed. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 52 | Amount | Decimal | Specifies the amount for the Subscription Line including discount. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 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. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 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. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 55 | Document Type | Enum "Rec. Billing Document Type" | Specifies the document type of the document created for posting. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | enum [Enum 8054 "Rec. Billing Document Type"](../enum/8054.md) |
| 56 | Document No. | Code[20] | Specifies the document number of the document created for posting. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation [Table 36 "Sales Header"](../table/36.md) (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. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 58 | Discount % | Decimal | Specifies the Discount % for the subscription line billing period. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 60 | Correction Document Type | Enum "Rec. Billing Document Type" | Specifies the value of the Correction Document Type field. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | enum [Enum 8054 "Rec. Billing Document Type"](../enum/8054.md) |
| 61 | Correction Document No. | Code[20] | Specifies the value of the Correction Document No. field. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation [Table 112 "Sales Invoice Header"](../table/112.md), [Table 114 "Sales Cr.Memo Header"](../table/114.md) (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. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation [Table 37 "Sales Line"](../table/37.md) (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. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation [Table 8060 "Billing Template"](../table/8060.md) (Billing Template) |
| 101 | Currency Code | Code[20] | Specifies the value of the Code field. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | TableRelation Currency.Code |
| 102 | Unit Cost | Decimal | — | not editable |
| 103 | Unit Cost (LCY) | Decimal | Specifies the unit cost for the billing period. <small>via [Page 8074 "Billing Lines"](../page/8074.md)</small> |  |
| 200 | Indent | Integer | Specifies the value of the Indent field. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> |  |
| 201 | Detail Overview | Enum "Contract Detail Overview" | Specifies the value of the Detail Overview field. <small>via [Page 8016 "Billing Lines List"](../page/8016.md)</small> | enum [Enum 8060 "Contract Detail Overview"](../enum/8060.md) |
| 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(): Boolean`
- `GetSign(): 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"](../page/8074.md)
- lookup page [Page 8074 "Billing Lines"](../page/8074.md)
- Correction Document No.: TableRelation [Table 112 "Sales Invoice Header"](../table/112.md) (conditional)
- Correction Document No.: TableRelation [Table 114 "Sales Cr.Memo Header"](../table/114.md) (conditional)
- Partner No.: TableRelation [Table 18 "Customer"](../table/18.md) (conditional)
- Partner No.: TableRelation [Table 23 "Vendor"](../table/23.md) (conditional)
- Document No.: TableRelation [Table 36 "Sales Header"](../table/36.md) (conditional)
- Document Line No.: TableRelation [Table 37 "Sales Line"](../table/37.md) (conditional)
- Subscription Contract No.: TableRelation [Table 8052 "Customer Subscription Contract"](../table/8052.md) (conditional)
- Subscription Description: CalcFormula [Table 8057 "Subscription Header"](../table/8057.md)
- Subscription Header No.: TableRelation [Table 8057 "Subscription Header"](../table/8057.md)
- Subscription Line Entry No.: TableRelation [Table 8059 "Subscription Line"](../table/8059.md)
- Billing Template Code: TableRelation [Table 8060 "Billing Template"](../table/8060.md)
- Subscription Contract Line No.: TableRelation [Table 8062 "Cust. Sub. Contract Line"](../table/8062.md) (conditional)
- Subscription Contract No.: TableRelation [Table 8063 "Vendor Subscription Contract"](../table/8063.md) (conditional)
- Subscription Contract Line No.: TableRelation [Table 8065 "Vend. Sub. Contract Line"](../table/8065.md) (conditional)
- User ID: TableRelation [Table 91 "User Setup"](../table/91.md)

## Referenced by

3 fields in 3 objects relate to this table (TableRelation or CalcFormula).

- [Table 8006 "Usage Data Billing"](../table/8006.md): Billing Line Entry No.
- [Table 8070 "Subscription Billing Cue"](../table/8070.md): Not Invoiced
- [Table extension 8065 "Purchase Line"](../tableextension/8065.md): Attached to Sub. Contract line

## Pages and codeunits on this table

- [Page 8016 "Billing Lines List"](../page/8016.md) (source table)
- [Page 8021 "Billing Lines API"](../page/8021.md) (source table)
- [Page 8067 "Recurring Billing"](../page/8067.md) (source table)
- [Page 8074 "Billing Lines"](../page/8074.md) (source table)
- [Codeunit 8060 "Create Billing Documents"](../codeunit/8060.md) (codeunit runs on it)

## Recent changes

- 2026-08-29 [#10235 [Bug][SubscriptionBilling] Enforce Subscription Line Start Date change rules on all edit paths](../../changes/bcapps/10235.md) (main, BC30, fix)
- 2026-07-30 [#8553 [Bug][SubscriptionBilling]: Performance: Billing document creation does not scale to large datasets (4M+ subscription lines)](../../changes/bcapps/8553.md) (main, BC30, performance)

## Across versions

- Present in: BC29-30
- Changed (declaration) in: none

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## 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.
