---
id: object/table/18
type: object
title: Table 18 "Customer"
summary: Table 18 "Customer" in Base Application (Microsoft.Sales.Customer). 165 fields, 71 public procedures, 63 events. Present since at least BC23, still in BC30, changed in BC24-29.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "29"
  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: 6ba0277b6b8c197cc0ff8c75da20961e95e5b2c21df30da1efb65ea014357404
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Sales/Customer/Customer.Table.al
    title: src/Layers/W1/BaseApp/Sales/Customer/Customer.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/across-online-maps
    - https://learn.microsoft.com/dynamics365/business-central/finance-consolidate-customer-vendor-balances
    - https://learn.microsoft.com/dynamics365/business-central/finance-how-to-set-up-cash-customers
    - https://learn.microsoft.com/dynamics365/business-central/LocalFunctionality/France/finance-sales-invoice-specifics
    - https://learn.microsoft.com/dynamics365/business-central/LocalFunctionality/Norway/ehf-electronic-invoicing-in-norway
    - https://learn.microsoft.com/dynamics365/business-central/LocalFunctionality/Norway/how-to-set-up-customers-for-ehf
    - https://learn.microsoft.com/dynamics365/business-central/sales-how-register-new-customers
    - https://learn.microsoft.com/dynamics365/business-central/ui-create-number-series
    - https://learn.microsoft.com/dynamics365/business-central/ui-define-customer-vendor-document-layouts
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_customer_create_defaultdimensions
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_customer_create
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_customer_delete_defaultdimensions
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_customer_delete
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_customer_get_defaultdimensions
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_customer_get
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_customer_update_defaultdimensions
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_customer_update
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/resources/dynamics_customer
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v1.0/api/dynamics_customer_create_defaultdimensions
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v1.0/api/dynamics_customer_delete_defaultdimensions
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v1.0/api/dynamics_customer_delete
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v1.0/api/dynamics_customer_get_defaultdimensions
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v1.0/api/dynamics_customer_get
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v1.0/api/dynamics_customer_update_defaultdimensions
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v1.0/api/dynamics_customer_update
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v1.0/resources/dynamics_customer
    - https://learn.microsoft.com/dynamics365/business-central/analysis-assist
    - https://learn.microsoft.com/dynamics365/business-central/analysis-mode
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_customerfinancialdetail_get
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/resources/dynamics_customerFinancialDetail
  objects: []
  features: []
  topics:
    - topic/business-central/analytics-business-intelligence-and-repo/ad-hoc-data-analysis
    - topic/business-central/business-functionality/finance/manage-payables
    - topic/business-central/business-functionality/finance/manage-receivables
    - topic/business-central/business-functionality/general-business-functionality
    - topic/business-central/business-functionality/local-functionality/norway/banking-and-payments
    - topic/business-central/business-functionality/sales
    - topic/business-central/business-functionality/set-up-business-central
    - topic/business-central/business-functionality/set-up-business-central/set-up-finance
    - topic/business-central/business-functionality/set-up-business-central/set-up-sales
    - topic/business-central/copilot-and-agent-capabilities/analysis-assist
    - topic/business-central/get-started/get-productive-in-business-central/change-the-look-of-externally-facing-doc
    - topic/dev-itpro/development/data-analytics-and-reporting
    - topic/dev-itpro/development/programming-in-the-al-language/developing-reports/report-layouts
    - topic/dev-itpro/development/programming-in-the-al-language/tables-and-data/using-query-objects
  localizations:
    - localization/au
    - localization/be
    - localization/ca
    - localization/ch
    - localization/es
    - localization/fr
    - localization/it
    - localization/mx
    - localization/nl
    - localization/no
    - localization/nz
    - localization/ru
    - localization/us
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/10559
    - change/bcapps/9089
object_type: table
object_id: 18
name: Customer
namespace: Microsoft.Sales.Customer
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
source_major: "29"
obsolete: null
countries:
  - au
  - be
  - ca
  - ch
  - es
  - fr
  - it
  - mx
  - nl
  - "no"
  - nz
  - ru
  - us
ms_search_form_ids: []
counts:
  fields: 165
  procedures: 160
  events: 63
  subscribers: 0
relations:
  out: 104
  referenced_by: 260
  pages: 30
  extended_by: 4
  event_subscribers: 18
  calls: 25
  called_by: 0
  implements: 0
---

# Table 18 "Customer"

> Table 18 "Customer" in Base Application (Microsoft.Sales.Customer). 165 fields, 71 public procedures, 63 events. Present since at least BC23, still in BC30, changed in BC24-29.

Base Application · Microsoft.Sales.Customer · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Sales/Customer/Customer.Table.al) · facts from BC29

Learn documents this table through its pages: [Page 21 "Customer Card"](../page/21.md) (9 Learn pages), [Page 30009 "APIV2 - Customers"](../page/30009.md) (9), [Page 20009 "APIV1 - Customers"](../page/20009.md) (8), [Page 22 "Customer List"](../page/22.md) (5), [Page 30048 "APIV2 - Cust Financial Details"](../page/30048.md) (2), [Page 33 "Customer Lookup"](../page/33.md) (1), [Page 785 "Customer Picture"](../page/785.md) (1), [Page 7177 "Available Credit"](../page/7177.md) (1), [Page 9080 "Sales Hist. Sell-to FactBox"](../page/9080.md) (1), [Page 9081 "Sales Hist. Bill-to FactBox"](../page/9081.md) (1), [Page 9084 "Customer Details FactBox"](../page/9084.md) (1).

## Properties

| Property | Value |
|---|---|
| Caption | Customer |
| DataClassification | CustomerContent |
| Permissions | TableData "Cust. Ledger Entry" = r, TableData Job = r, tabledata "VAT Business Posting Group" = R, TableData "VAT Registration Log" = rd, tabledata "Payment Terms" = R, TableData "Price List Header" = rd, TableData "Price List Line" = rd, TableData "Sales Price" = rd, TableData "Sales Line Discount"... |

## 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 | No. | Code[20] | Specifies the number of the customer. The field is either filled automatically from a defined number series, or you enter the number manually because you have enabled manual number entry in the number-series setup. |  |
| 2 | Name | Text[100] | Specifies the customer's name that appears on all related documents. For companies, specify the company's name here, and then add the relevant people as contacts that you link to this customer. |  |
| 3 | Search Name | Code[100] | Specifies an alternate name that you can use to search for a customer. |  |
| 4 | Name 2 | Text[50] | Specifies an additional part of the name. |  |
| 5 | Address | Text[100] | Specifies the customer's address. This address will appear on all sales documents for the customer. |  |
| 6 | Address 2 | Text[50] | Specifies additional address information. |  |
| 7 | City | Text[30] | Specifies the customer's city. | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Country/Region Code" = const('')) "Post Code".City else if ("Country/Region Code" = filter(<> '')) "Post Code".City where("Country/Region Code" = field("Country/Region Code"))) |
| 8 | Contact | Text[100] | Specifies the name of the person you regularly contact when you do business with this customer. |  |
| 9 | Phone No. | Text[30] | Specifies the customer's telephone number. |  |
| 10 | Telex No. | Text[20] | — |  |
| 11 | Document Sending Profile | Code[20] | Specifies the preferred method of sending documents to this customer, so that you do not have to select a sending option every time that you post and send a document to the customer. Sales documents to this customer will be sent using the specified sending profile and will override the default docum... | TableRelation [Table 60 "Document Sending Profile"](../table/60.md) ("Document Sending Profile".Code) |
| 12 | Ship-to Code | Code[10] | Specifies the code for another shipment address than the customer's own address, which is entered by default. | TableRelation [Table 222 "Ship-to Address"](../table/222.md) ("Ship-to Address".Code where("Customer No." = field("No."))) |
| 14 | Our Account No. | Text[20] | — |  |
| 15 | Territory Code | Code[10] | — | TableRelation [Table 286 "Territory"](../table/286.md) |
| 16 | Global Dimension 1 Code | Code[20] | — | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(1), Blocked = const(false))) |
| 17 | Global Dimension 2 Code | Code[20] | — | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(2), Blocked = const(false))) |
| 18 | Chain Name | Code[10] | — |  |
| 19 | Budgeted Amount | Decimal | — |  |
| 20 | Credit Limit (LCY) | Decimal | Specifies the maximum amount of credit that you extend to the customer for their purchases before you issue warnings. The value 0 represents unlimited credit. |  |
| 21 | Customer Posting Group | Code[20] | Specifies the customer's market type to link business transactions to. | TableRelation [Table 92 "Customer Posting Group"](../table/92.md) (Customer Posting Group) |
| 22 | Currency Code | Code[10] | Specifies the default currency for the customer. | TableRelation [Table 4 "Currency"](../table/4.md) |
| 23 | Customer Price Group | Code[10] | Specifies the customer price group code, which you can use to set up special sales prices in the Sales Prices window. | TableRelation [Table 6 "Customer Price Group"](../table/6.md) (Customer Price Group) |
| 24 | Language Code | Code[10] | Specifies the language that is used when translating specified text on documents to foreign business partner, such as an item description on an order confirmation. | TableRelation [Table 8 "Language"](../table/8.md) |
| 25 | Registration Number | Text[50] | Specifies the registration number of the customer. You can enter a maximum of 20 characters, both numbers and letters. |  |
| 26 | Statistics Group | Integer | Specifies the statistics group. |  |
| 27 | Payment Terms Code | Code[10] | Specifies a code that indicates the payment terms that you require of the customer. | TableRelation [Table 3 "Payment Terms"](../table/3.md) (Payment Terms) |
| 28 | Fin. Charge Terms Code | Code[10] | Specifies the code for the involved finance charges in case of late payment. | TableRelation [Table 5 "Finance Charge Terms"](../table/5.md) (Finance Charge Terms) |
| 29 | Salesperson Code | Code[20] | Specifies a code for the salesperson who normally handles this customer's account. | TableRelation [Table 13 "Salesperson/Purchaser"](../table/13.md) ("Salesperson/Purchaser" where(Blocked = const(false))) |
| 30 | Shipment Method Code | Code[10] | Specifies which shipment method to use when you ship items to the customer. | TableRelation [Table 10 "Shipment Method"](../table/10.md) (Shipment Method) |
| 31 | Shipping Agent Code | Code[10] | Specifies which shipping company is used when you ship items to the customer. | TableRelation [Table 291 "Shipping Agent"](../table/291.md) (Shipping Agent) |
| 32 | Place of Export | Code[20] | — |  |
| 33 | Invoice Disc. Code | Code[20] | Specifies a code for the invoice discount terms that you have defined for the customer. | TableRelation [Table 18 "Customer"](../table/18.md) |
| 34 | Customer Disc. Group | Code[20] | Specifies the customer discount group code, which you can use as a criterion to set up special discounts in the Sales Line Discounts window. | TableRelation [Table 340 "Customer Discount Group"](../table/340.md) (Customer Discount Group) |
| 35 | Country/Region Code | Code[10] | Specifies the country/region of the address. | TableRelation [Table 9 "Country/Region"](../table/9.md) (Country/Region) |
| 36 | Collection Method | Code[20] | — |  |
| 37 | Amount | Decimal | — |  |
| 38 | Comment | Boolean | — | FlowField: exist("Comment Line" where("Table Name" = const(Customer), "No." = field("No."))); not editable |
| 39 | Blocked | Enum "Customer Blocked" | Specifies which transactions with the customer that cannot be processed, for example, because the customer is insolvent. | enum [Enum 139 "Customer Blocked"](../enum/139.md) |
| 40 | Invoice Copies | Integer | — | obsolete Pending 27.0; #if not CLEANSCHEMA30 |
| 41 | Last Statement No. | Integer | Specifies the number of the last statement that was printed for this customer. |  |
| 42 | Print Statements | Boolean | Specifies whether to include this customer when you print the Statement report. |  |
| 45 | Bill-to Customer No. | Code[20] | Specifies a different customer who will be invoiced for products that you sell to the customer in the Name field on the customer card. | TableRelation [Table 18 "Customer"](../table/18.md) |
| 46 | Priority | Integer | Specifies a number that corresponds to the priority you give the customer. The higher the number, the higher the priority. |  |
| 47 | Payment Method Code | Code[10] | Specifies how the customer usually submits payment, such as bank transfer or check. | TableRelation [Table 289 "Payment Method"](../table/289.md) (Payment Method) |
| 48 | Format Region | Text[80] | Specifies the Format Region to be used on printouts for this customer. | TableRelation "Language Selection"."Language Tag" |
| 52 | First Transaction Date | Date | Specifies the date of the first transaction with the customer. | FlowField: min("Cust. Ledger Entry"."Posting Date" where("Customer No." = field("No."))) |
| 53 | Last Modified Date Time | DateTime | — | not editable |
| 54 | Last Date Modified | Date | Specifies when the customer card was last modified. | not editable |
| 55 | Date Filter | Date | — | FlowFilter |
| 56 | Global Dimension 1 Filter | Code[20] | — | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(1))); FlowFilter |
| 57 | Global Dimension 2 Filter | Code[20] | — | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(2))); FlowFilter |
| 58 | Balance | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry".Amount where("Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Currency Code" = field("Currency Filter"), "Excluded from calculation" = const(false))...; not editable |
| 59 | Balance (LCY) | Decimal | Specifies the total amount the customer owes you, or you owe them, based on all sales and credits for the customer. A positive amount means they owe you, and a negative amount means you owe them. The amount isn't necessarily due today though. The customer's payment terms determine due dates. Select ... | FlowField: sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Currency Code" = field("Currency Filter"), "Excluded from calculation" = const...; not editable |
| 60 | Net Change | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry".Amount where("Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Posting Date" = field("Date Filter"), "Currency Code" = field("Currency Filter"), "Exc...; not editable |
| 61 | Net Change (LCY) | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Posting Date" = field("Date Filter"), "Currency Code" = field("Currency Filter...; not editable |
| 62 | Sales (LCY) | Decimal | Specifies the total net amount of sales to the customer in LCY. | FlowField: sum("Cust. Ledger Entry"."Sales (LCY)" where("Customer No." = field("No."), "Global Dimension 1 Code" = field("Global Dimension 1 Filter"), "Global Dimension 2 Code" = field("Global Dimension 2 Filter"), "Posting Date" = field("Date Filter"), "Currency Code" = field("Currency Filter"))); not editable |
| 63 | Profit (LCY) | Decimal | — | FlowField: sum("Cust. Ledger Entry"."Profit (LCY)" where("Customer No." = field("No."), "Global Dimension 1 Code" = field("Global Dimension 1 Filter"), "Global Dimension 2 Code" = field("Global Dimension 2 Filter"), "Posting Date" = field("Date Filter"), "Currency Code" = field("Currency Filter"))); not editable |
| 64 | Inv. Discounts (LCY) | Decimal | — | FlowField: sum("Cust. Ledger Entry"."Inv. Discount (LCY)" where("Customer No." = field("No."), "Global Dimension 1 Code" = field("Global Dimension 1 Filter"), "Global Dimension 2 Code" = field("Global Dimension 2 Filter"), "Posting Date" = field("Date Filter"), "Currency Code" = field("Currency Filter"))); not editable |
| 65 | Pmt. Discounts (LCY) | Decimal | — | FlowField: - sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Customer No." = field("No."), "Entry Type" = filter("Payment Discount" .. "Payment Discount (VAT Adjustment)"), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filte...; not editable |
| 66 | Balance Due | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry".Amount where("Customer No." = field("No."), "Initial Entry Due Date" = field(upperlimit("Date Filter")), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Currency Code" = field("C...; not editable |
| 67 | Balance Due (LCY) | Decimal | Specifies the total amount that's due from the customer as of today. Consider using reminders to minimize late payments and optimize cashflow. | FlowField: sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Customer No." = field("No."), "Initial Entry Due Date" = field(upperlimit("Date Filter")), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Currency Code" = ...; not editable |
| 69 | Payments | Decimal | — | FlowField: - sum("Detailed Cust. Ledg. Entry".Amount where("Initial Document Type" = const(Payment), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Pos...; not editable |
| 70 | Invoice Amounts | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry".Amount where("Initial Document Type" = const(Invoice), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Posti...; not editable |
| 71 | Cr. Memo Amounts | Decimal | — | FlowField: - sum("Detailed Cust. Ledg. Entry".Amount where("Initial Document Type" = const("Credit Memo"), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter")...; not editable |
| 72 | Finance Charge Memo Amounts | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry".Amount where("Initial Document Type" = const("Finance Charge Memo"), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Fi...; not editable |
| 74 | Payments (LCY) | Decimal | Specifies the sum of payments received from the customer. | FlowField: - sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Initial Document Type" = const(Payment), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter...; not editable |
| 75 | Inv. Amounts (LCY) | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Initial Document Type" = const(Invoice), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter")...; not editable |
| 76 | Cr. Memo Amounts (LCY) | Decimal | — | FlowField: - sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Initial Document Type" = const("Credit Memo"), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 ...; not editable |
| 77 | Fin. Charge Memo Amounts (LCY) | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Initial Document Type" = const("Finance Charge Memo"), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimens...; not editable |
| 78 | Outstanding Orders | Decimal | — | FlowField: sum("Sales Line"."Outstanding Amount" where("Document Type" = const(Order), "Bill-to Customer No." = field("No."), "Shortcut Dimension 1 Code" = field("Global Dimension 1 Filter"), "Shortcut Dimension 2 Code" = field("Global Dimension 2 Filter"), "Currency Code" = field("Currency Filter"))); not editable |
| 79 | Shipped Not Invoiced | Decimal | — | FlowField: sum("Sales Line"."Shipped Not Invoiced" where("Document Type" = const(Order), "Bill-to Customer No." = field("No."), "Shortcut Dimension 1 Code" = field("Global Dimension 1 Filter"), "Shortcut Dimension 2 Code" = field("Global Dimension 2 Filter"), "Currency Code" = field("Currency Filter"))); not editable |
| 80 | Application Method | Enum "Application Method" | Specifies how to apply payments to entries for this customer. | enum [Enum 1381 "Application Method"](../enum/1381.md) |
| 82 | Prices Including VAT | Boolean | Specifies if the Unit Price and Line Amount fields on document lines should be shown with or without VAT. |  |
| 83 | Location Code | Code[10] | Specifies from which location sales to this customer will be processed by default. | TableRelation [Table 14 "Location"](../table/14.md) (Location where("Use As In-Transit" = const(false))) |
| 84 | Fax No. | Text[30] | Specifies the customer's fax number. |  |
| 85 | Telex Answer Back | Text[20] | — |  |
| 86 | VAT Registration No. | Text[20] | Specifies the customer's VAT registration number for customers in EU countries/regions. |  |
| 87 | Combine Shipments | Boolean | Specifies if several orders delivered to the customer can appear on the same sales invoice. |  |
| 88 | Gen. Bus. Posting Group | Code[20] | Specifies the customer's trade type to link transactions made for this customer with the appropriate general ledger account according to the general posting setup. | TableRelation [Table 250 "Gen. Business Posting Group"](../table/250.md) (Gen. Business Posting Group) |
| 90 | GLN | Code[13] | Specifies the customer in connection with electronic document sending. |  |
| 91 | Post Code | Code[20] | Specifies the post code. | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Country/Region Code" = const('')) "Post Code" else if ("Country/Region Code" = filter(<> '')) "Post Code" where("Country/Region Code" = field("Country/Region Code"))) |
| 92 | County | Text[30] | Specifies the state, province or county as a part of the address. |  |
| 93 | EORI Number | Text[40] | Specifies the Economic Operators Registration and Identification number that is used when you exchange information with the customs authorities due to trade into or out of the European Union. |  |
| 95 | Use GLN in Electronic Document | Boolean | Specifies whether the GLN is used in electronic documents as a party identification number. |  |
| 97 | Debit Amount | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry"."Debit Amount" where("Customer No." = field("No."), "Entry Type" = filter(<> Application), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Posting Date" = field("Date Filter"), "...; not editable |
| 98 | Credit Amount | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry"."Credit Amount" where("Customer No." = field("No."), "Entry Type" = filter(<> Application), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Posting Date" = field("Date Filter"), ...; not editable |
| 99 | Debit Amount (LCY) | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry"."Debit Amount (LCY)" where("Customer No." = field("No."), "Entry Type" = filter(<> Application), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Posting Date" = field("Date Filte...; not editable |
| 100 | Credit Amount (LCY) | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry"."Credit Amount (LCY)" where("Customer No." = field("No."), "Entry Type" = filter(<> Application), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Posting Date" = field("Date Filt...; not editable |
| 102 | E-Mail | Text[80] | Specifies the customer's email address. |  |
| 103 | Home Page | Text[255] | Specifies the customer's home page address. |  |
| 104 | Reminder Terms Code | Code[10] | Specifies how reminders about late payments are handled for this customer. | TableRelation [Table 292 "Reminder Terms"](../table/292.md) (Reminder Terms) |
| 105 | Reminder Amounts | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry".Amount where("Initial Document Type" = const(Reminder), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Post...; not editable |
| 106 | Reminder Amounts (LCY) | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Initial Document Type" = const(Reminder), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"...; not editable |
| 107 | No. Series | Code[20] | — | TableRelation [Table 308 "No. Series"](../table/308.md) (No. Series); not editable |
| 108 | Tax Area Code | Code[20] | Specifies the tax area that is used to calculate and post sales tax. | TableRelation [Table 318 "Tax Area"](../table/318.md) (Tax Area) |
| 109 | Tax Liable | Boolean | Specifies if the customer or vendor is liable for sales tax. |  |
| 110 | VAT Bus. Posting Group | Code[20] | Specifies the customer's VAT specification to link transactions made for this customer to. | TableRelation [Table 323 "VAT Business Posting Group"](../table/323.md) (VAT Business Posting Group) |
| 111 | Currency Filter | Code[10] | — | TableRelation [Table 4 "Currency"](../table/4.md); FlowFilter |
| 113 | Outstanding Orders (LCY) | Decimal | Specifies your expected sales income from the customer in LCY based on ongoing sales orders. | FlowField: sum("Sales Line"."Outstanding Amount (LCY)" where("Document Type" = const(Order), "Bill-to Customer No." = field("No."), "Shortcut Dimension 1 Code" = field("Global Dimension 1 Filter"), "Shortcut Dimension 2 Code" = field("Global Dimension 2 Filter"), "Currency Code" = field("Currency Filter"))); not editable |
| 114 | Shipped Not Invoiced (LCY) | Decimal | Specifies your expected sales income from the customer in LCY based on ongoing sales orders where items have been shipped. | FlowField: sum("Sales Line"."Shipped Not Invoiced (LCY)" where("Document Type" = const(Order), "Bill-to Customer No." = field("No."), "Shortcut Dimension 1 Code" = field("Global Dimension 1 Filter"), "Shortcut Dimension 2 Code" = field("Global Dimension 2 Filter"), "Currency Code" = field("Currency Filter"))); not editable |
| 115 | Reserve | Enum "Reserve Method" | Specifies whether items will never, automatically (Always), or optionally be reserved for this customer. Optional means that you must manually reserve items for this customer. | enum [Enum 100 "Reserve Method"](../enum/100.md) |
| 116 | Block Payment Tolerance | Boolean | Specifies that the customer is not allowed a payment tolerance. |  |
| 117 | Pmt. Disc. Tolerance (LCY) | Decimal | — | FlowField: - sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Customer No." = field("No."), "Entry Type" = filter("Payment Discount Tolerance" \| "Payment Discount Tolerance (VAT Adjustment)" \| "Payment Discount Tolerance (VAT Excl.)"), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "...; not editable |
| 118 | Pmt. Tolerance (LCY) | Decimal | — | FlowField: - sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Customer No." = field("No."), "Entry Type" = filter("Payment Tolerance" \| "Payment Tolerance (VAT Adjustment)" \| "Payment Tolerance (VAT Excl.)"), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2...; not editable |
| 119 | IC Partner Code | Code[20] | Specifies the customer's intercompany partner code. | TableRelation [Table 413 "IC Partner"](../table/413.md) (IC Partner) |
| 120 | Refunds | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry".Amount where("Initial Document Type" = const(Refund), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Postin... |
| 121 | Refunds (LCY) | Decimal | Specifies the sum of refunds received from the customer. | FlowField: sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Initial Document Type" = const(Refund), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"),... |
| 122 | Other Amounts | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry".Amount where("Initial Document Type" = const(" "), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "Posting D... |
| 123 | Other Amounts (LCY) | Decimal | — | FlowField: sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" where("Initial Document Type" = const(" "), "Entry Type" = const("Initial Entry"), "Customer No." = field("No."), "Initial Entry Global Dim. 1" = field("Global Dimension 1 Filter"), "Initial Entry Global Dim. 2" = field("Global Dimension 2 Filter"), "P... |
| 124 | Prepayment % | Decimal | Specifies a prepayment percentage that applies to all orders for this customer, regardless of the items or services on the order lines. |  |
| 125 | Outstanding Invoices (LCY) | Decimal | Specifies your expected sales income from the customer in LCY based on unpaid sales invoices. | FlowField: sum("Sales Line"."Outstanding Amount (LCY)" where("Document Type" = const(Invoice), "Bill-to Customer No." = field("No."), "Shortcut Dimension 1 Code" = field("Global Dimension 1 Filter"), "Shortcut Dimension 2 Code" = field("Global Dimension 2 Filter"), "Currency Code" = field("Currency Filter"))); not editable |
| 126 | Outstanding Invoices | Decimal | — | FlowField: sum("Sales Line"."Outstanding Amount" where("Document Type" = const(Invoice), "Bill-to Customer No." = field("No."), "Shortcut Dimension 1 Code" = field("Global Dimension 1 Filter"), "Shortcut Dimension 2 Code" = field("Global Dimension 2 Filter"), "Currency Code" = field("Currency Filter"))); not editable |
| 130 | Bill-to No. Of Archived Doc. | Integer | Bill-to No. Of Sales Archived Doc. <small>caption</small> | FlowField: count("Sales Header Archive" where("Document Type" = const(Order), "Bill-to Customer No." = field("No."))) |
| 131 | Sell-to No. Of Archived Doc. | Integer | Sell-to No. Of Sales Archived Doc. <small>caption</small> | FlowField: count("Sales Header Archive" where("Document Type" = const(Order), "Sell-to Customer No." = field("No."))) |
| 132 | Partner Type | Enum "Partner Type" | Specifies for direct debit collections if the customer that the payment is collected from is a person or a company. | enum [Enum 134 "Partner Type"](../enum/134.md) |
| 133 | Intrastat Partner Type | Enum "Partner Type" | Specifies for Intrastat reporting if the customer is a person or a company. | enum [Enum 134 "Partner Type"](../enum/134.md) |
| 134 | Exclude from Pmt. Practices | Boolean | Specifies that the customer must be excluded from Payment Practices calculations. |  |
| 140 | Image | Media | Specifies the picture of the customer, for example, a logo. |  |
| 150 | Privacy Blocked | Boolean | Specifies whether to limit access to data for the data subject during daily operations. This is useful, for example, when protecting data from changes while it is under privacy review. |  |
| 160 | Disable Search by Name | Boolean | Specifies that you can change the customer name on open sales documents. The change applies only to the documents. | DataClassification SystemMetadata |
| 175 | Allow Multiple Posting Groups | Boolean | Specifies if multiple posting groups can be used for posting business transactions for this customer. | DataClassification SystemMetadata |
| 288 | Preferred Bank Account Code | Code[20] | Specifies the customer's bank account that will be used by default when you process refunds to the customer and direct debit collections. | TableRelation [Table 287 "Customer Bank Account"](../table/287.md) ("Customer Bank Account".Code where("Customer No." = field("No."))) |
| 720 | Coupled to CRM | Boolean | Coupled to Dataverse <small>caption</small> | obsolete Removed 26.0; #if not CLEANSCHEMA26; not editable |
| 721 | Coupled to Dataverse | Boolean | Specifies that the customer is coupled to an account in Dataverse. | FlowField: exist("CRM Integration Record" where("Integration ID" = field(SystemId), "Table ID" = const(Database::Customer))); not editable |
| 840 | Cash Flow Payment Terms Code | Code[10] | Specifies a payment term that will be used to calculate cash flow for the customer. | TableRelation [Table 3 "Payment Terms"](../table/3.md) (Payment Terms) |
| 5049 | Primary Contact No. | Code[20] | Specifies the contact number for the customer. | TableRelation [Table 5050 "Contact"](../table/5050.md) |
| 5050 | Contact Type | Enum "Contact Type" | — | enum [Enum 5050 "Contact Type"](../enum/5050.md) |
| 5061 | Mobile Phone No. | Text[30] | Specifies the customer's mobile telephone number. |  |
| 5700 | Responsibility Center | Code[10] | Specifies the code for the responsibility center that will administer this customer by default. | TableRelation [Table 5714 "Responsibility Center"](../table/5714.md) (Responsibility Center) |
| 5750 | Shipping Advice | Enum "Sales Header Shipping Advice" | Specifies if the customer accepts partial shipment of orders. | enum [Enum 3657 "Sales Header Shipping Advice"](../enum/3657.md) |
| 5790 | Shipping Time | DateFormula | Specifies how long it takes from when the items are shipped from the warehouse to when they are delivered. |  |
| 5792 | Shipping Agent Service Code | Code[10] | Specifies the code for the shipping agent service to use for this customer. | TableRelation [Table 5790 "Shipping Agent Services"](../table/5790.md) ("Shipping Agent Services".Code where("Shipping Agent Code" = field("Shipping Agent Code"))) |
| 7000 | Price Calculation Method | Enum "Price Calculation Method" | Specifies the default price calculation method. | enum [Enum 7000 "Price Calculation Method"](../enum/7000.md) |
| 7001 | Allow Line Disc. | Boolean | Specifies if a sales line discount is calculated when a special sales price is offered according to setup in the Sales Prices window. |  |
| 7171 | No. of Quotes | Integer | Specifies the number of sales quotes that have been registered for the customer. | FlowField: count("Sales Header" where("Document Type" = const(Quote), "Sell-to Customer No." = field("No."))); not editable |
| 7172 | No. of Blanket Orders | Integer | Specifies the number of sales blanket orders that have been registered for the customer. | FlowField: count("Sales Header" where("Document Type" = const("Blanket Order"), "Sell-to Customer No." = field("No."))); not editable |
| 7173 | No. of Orders | Integer | Specifies the number of sales orders that have been registered for the customer. | FlowField: count("Sales Header" where("Document Type" = const(Order), "Sell-to Customer No." = field("No."))); not editable |
| 7174 | No. of Invoices | Integer | Specifies the number of unposted sales invoices that have been registered for the customer. | FlowField: count("Sales Header" where("Document Type" = const(Invoice), "Sell-to Customer No." = field("No."))); not editable |
| 7175 | No. of Return Orders | Integer | Specifies the number of sales return orders that have been registered for the customer. | FlowField: count("Sales Header" where("Document Type" = const("Return Order"), "Sell-to Customer No." = field("No."))); not editable |
| 7176 | No. of Credit Memos | Integer | Specifies the number of unposted sales credit memos that have been registered for the customer. | FlowField: count("Sales Header" where("Document Type" = const("Credit Memo"), "Sell-to Customer No." = field("No."))); not editable |
| 7177 | No. of Pstd. Shipments | Integer | Specifies the number of posted sales shipments that have been registered for the customer. | FlowField: count("Sales Shipment Header" where("Sell-to Customer No." = field("No."))); not editable |
| 7178 | No. of Pstd. Invoices | Integer | Specifies the number of posted sales invoices that have been registered for the customer. | FlowField: count("Sales Invoice Header" where("Sell-to Customer No." = field("No."))); not editable |
| 7179 | No. of Pstd. Return Receipts | Integer | Specifies the number of posted sales return receipts that have been registered for the customer. | FlowField: count("Return Receipt Header" where("Sell-to Customer No." = field("No."))); not editable |
| 7180 | No. of Pstd. Credit Memos | Integer | Specifies the number of posted sales credit memos that have been registered for the customer. | FlowField: count("Sales Cr.Memo Header" where("Sell-to Customer No." = field("No."))); not editable |
| 7181 | No. of Ship-to Addresses | Integer | — | FlowField: count("Ship-to Address" where("Customer No." = field("No."))); not editable |
| 7182 | Bill-To No. of Quotes | Integer | Specifies how many quotes have been registered for the customer when the customer acts as the bill-to customer. | FlowField: count("Sales Header" where("Document Type" = const(Quote), "Bill-to Customer No." = field("No."))); not editable |
| 7183 | Bill-To No. of Blanket Orders | Integer | Specifies how many blanket orders have been registered for the customer when the customer acts as the bill-to customer. | FlowField: count("Sales Header" where("Document Type" = const("Blanket Order"), "Bill-to Customer No." = field("No."))); not editable |
| 7184 | Bill-To No. of Orders | Integer | Specifies how many sales orders have been registered for the customer when the customer acts as the bill-to customer. | FlowField: count("Sales Header" where("Document Type" = const(Order), "Bill-to Customer No." = field("No."))); not editable |
| 7185 | Bill-To No. of Invoices | Integer | Specifies how many invoices have been registered for the customer when the customer acts as the bill-to customer. | FlowField: count("Sales Header" where("Document Type" = const(Invoice), "Bill-to Customer No." = field("No."))); not editable |
| 7186 | Bill-To No. of Return Orders | Integer | Specifies how many return orders have been registered for the customer when the customer acts as the bill-to customer. | FlowField: count("Sales Header" where("Document Type" = const("Return Order"), "Bill-to Customer No." = field("No."))); not editable |
| 7187 | Bill-To No. of Credit Memos | Integer | Specifies how many credit memos have been registered for the customer when the customer acts as the bill-to customer. | FlowField: count("Sales Header" where("Document Type" = const("Credit Memo"), "Bill-to Customer No." = field("No."))); not editable |
| 7188 | Bill-To No. of Pstd. Shipments | Integer | Specifies how many posted shipments have been registered for the customer when the customer acts as the bill-to customer. | FlowField: count("Sales Shipment Header" where("Bill-to Customer No." = field("No."))); not editable |
| 7189 | Bill-To No. of Pstd. Invoices | Integer | Specifies how many posted invoices have been registered for the customer when the customer acts as the bill-to customer. | FlowField: count("Sales Invoice Header" where("Bill-to Customer No." = field("No."))); not editable |
| 7190 | Bill-To No. of Pstd. Return R. | Integer | Specifies how many posted return receipts have been registered for the customer when the customer acts as the bill-to customer. | FlowField: count("Return Receipt Header" where("Bill-to Customer No." = field("No."))); not editable |
| 7191 | Bill-To No. of Pstd. Cr. Memos | Integer | Specifies how many posted credit memos have been registered for the customer when the customer acts as the bill-to customer. | FlowField: count("Sales Cr.Memo Header" where("Bill-to Customer No." = field("No."))); not editable |
| 7600 | Base Calendar Code | Code[10] | Specifies a customizable calendar for shipment planning that holds the customer's working days and holidays. | TableRelation [Table 7600 "Base Calendar"](../table/7600.md) (Base Calendar) |
| 7601 | Copy Sell-to Addr. to Qte From | Enum "Contact Type" | Specifies which customer address is inserted on sales quotes that you create for the customer. | enum [Enum 5050 "Contact Type"](../enum/5050.md) |
| 7602 | Validate EU Vat Reg. No. | Boolean | Validate EU VAT Reg. No. <small>caption</small> |  |
| 8001 | Currency Id | Guid | — | TableRelation Currency.SystemId |
| 8002 | Payment Terms Id | Guid | — | TableRelation [Table 3 "Payment Terms"](../table/3.md) ("Payment Terms".SystemId) |
| 8003 | Shipment Method Id | Guid | — | TableRelation [Table 10 "Shipment Method"](../table/10.md) ("Shipment Method".SystemId) |
| 8004 | Payment Method Id | Guid | — | TableRelation [Table 289 "Payment Method"](../table/289.md) ("Payment Method".SystemId) |
| 9003 | Tax Area ID | Guid | — |  |
| 9005 | Contact ID | Guid | — |  |
| 9006 | Contact Graph Id | Text[250] | — |  |

## Keys

- Key1: No. (clustered)
- Key2: Search Name
- Key3: Customer Posting Group
- Key4: Currency Code
- Key5: Country/Region Code
- Key6: Gen. Bus. Posting Group
- Key7: Name, Address, City
- Key8: VAT Registration No.
- Key9: Name
- Key10: City
- Key11: Post Code
- Key12: Phone No.
- Key13: Contact
- Key14: Blocked
- Key15: Primary Contact No.
- Key16: Salesperson Code
- Key17: SystemModifiedAt
- Key20: Partner Type, Country/Region Code
- Key22: IC Partner Code

## Events published

- `OnBeforeIsContactUpdateNeeded(Customer: Record Customer; xCustomer: Record Customer; var UpdateNeeded: Boolean; ForceUpdateContact: Boolean)` (integration): Raised before determining if the associated contact needs to be updated.
- `OnAfterCopyFromNewCustomerTemplate(var Customer: Record Customer; CustomerTemplate: Record "Customer Templ.")` (integration): Raised after copying field values from a customer template to the customer record.
- `OnAfterDeleteRelatedData(Customer: Record Customer)` (integration): Raised after deleting all related data for the customer.
  - subscribers: [Codeunit 6450 "Serv. Integration Mgt."](../codeunit/6450.md) CustomerOnAfterDelete
- `OnAfterGetTopCustomerHeadlineQueryDocumentTypeFilter(var DocumentTypeFilter: Text)` (integration): Raised after getting the document type filter for the top customer headline query.
- `OnAfterHasAnyOpenOrPostedDocuments(var Customer: Record Customer; var HasAnyDocs: Boolean)` (integration): Raised after checking if the customer has any open or posted documents.
- `OnAfterHasAddressIgnoreCountryCode(Customer: Record Customer; var Result: Boolean)` (integration): Raised after checking if the customer has address fields populated (excluding country/region).
- `OnAfterHasDifferentAddress(Customer: Record Customer; OtherCustomer: Record Customer; var Result: Boolean)` (integration): Raised after comparing the customer's address with another customer.
- `OnAfterLookupCity(var Customer: Record Customer; var PostCodeRec: Record "Post Code")` (integration): Raised after looking up the city from the post code table.
- `OnAfterLookupPostCode(var Customer: Record Customer; xCustomer: Record Customer; var PostCodeRec: Record "Post Code")` (integration): Raised after looking up the post code.
- `OnAfterOnInsert(var Customer: Record Customer; xCustomer: Record Customer)` (integration): Raised after inserting a new customer record.
- `OnAfterSetLastModifiedDateTime(var Customer: Record Customer)` (integration): Raised after setting the last modified date and time on the customer record.
- `OnAfterValidateCity(var Customer: Record Customer; xCustomer: Record Customer)` (integration): Raised after validating the city field on the customer record.
- `OnAfterValidatePostCode(var Customer: Record Customer; xCustomer: Record Customer)` (integration): Raised after validating the post code field on the customer record.
- `OnAfterValidateShortcutDimCode(var Customer: Record Customer; var xCustomer: Record Customer; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration): Raised after validating and saving a shortcut dimension code.
- `OnAssistEditOnBeforeExit(var Customer: Record Customer)` (integration): Raised before exiting the AssistEdit procedure after selecting a number series.
- `OnBeforeCheckBlockedCust(Customer: Record Customer; Source: Option Journal,Document; DocType: Option; Shipment: Boolean; Transaction: Boolean; var IsHandled: Boolean)` (integration): Raised before checking if a customer is blocked for documents or journals.
- `OnBeforeCheckBlockedCustOnJnls(Customer: Record Customer; var GenJnlLine: Record "Gen. Journal Line"; Transaction: Boolean; var IsHandled: Boolean)` (integration): Raised before checking if a customer is blocked for journal lines.
- `OnBeforeCheckIfOrderSalesLinesExist(var Customer: Record Customer; var IsHandled: Boolean)` (integration): Raised before checking if sales order lines exist for the customer.
- `OnBeforeCreateNewCustomer(CustomerName: Text[100]; ShowCustomerCard: Boolean; var NewCustomerCode: Code[20]; var IsHandled: Boolean)` (integration): Raised before creating a new customer record.
- `OnBeforeGetCustNoOpenCard(CustomerText: Text; ShowCustomerCard: Boolean; var ShowCreateCustomerOption: Boolean; var CustomerNo: Code[20]; var IsHandled: Boolean)` (integration): Raised before getting the customer number with card display options.
- `OnBeforeCalcOverdueBalance(var Customer: Record Customer; var OverdueBalance: Decimal; var IsHandled: Boolean)` (integration): Raised before calculating the overdue balance.
- `OnBeforeGetInvoicedPrepmtAmountLCY(var Customer: Record Customer; var InvoicedPrepmtAmountLCY: Decimal; var IsHandled: Boolean)` (integration): Raised before getting the invoiced prepayment amount in local currency.
- `OnBeforeGetTotalAmountLCY(var Customer: Record Customer; var TotalAmountLCY: Decimal; var IsHandled: Boolean)` (integration): Raised before getting the total amount in local currency.
- `OnBeforeGetTotalAmountLCYUI(var Customer: Record Customer)` (integration): Raised before getting the total amount in local currency for UI display.
- `OnBeforeGetTotalAmountLCYCommon(var Customer: Record Customer; var AdditionalAmountLCY: Decimal; var IsHandled: Boolean)` (integration): Raised before getting the common total amount in local currency calculation.
- `OnBeforeGetSalesLCY(var Customer: Record Customer; var CustomerSalesYTD: Record Customer; var SalesLCY: Decimal; var IsHandled: Boolean)` (integration): Raised before getting the sales in local currency for the fiscal year.
- `OnBeforeInsert(var Customer: Record Customer; var IsHandled: Boolean)` (integration): Raised before inserting a new customer record.
- `OnBeforeLookupCity(var Customer: Record Customer; var PostCodeRec: Record "Post Code")` (integration): Raised before looking up the city from the post code table.
- `OnBeforeLookupContactList(var Customer: Record Customer; var IsHandled: Boolean; FieldNumber: Integer)` (integration): Raised before looking up the contact list for the customer.
- `OnBeforeLookupPostCode(var Customer: Record Customer; var PostCodeRec: Record "Post Code")` (integration): Raised before looking up the post code.
- `OnBeforeOpenCustomerLedgerEntries(var Customer: Record Customer; var DetailedCustLedgEntry: Record "Detailed Cust. Ledg. Entry"; FilterOnDueEntries: Boolean; var IsHandled: Boolean)` (integration): Raised before opening customer ledger entries.
- `OnBeforeOnDelete(var Customer: Record Customer; var IsHandled: Boolean)` (integration): Raised before deleting a customer record.
- `OnBeforeOnRename(var Customer: Record Customer; xCustomer: Record Customer; var IsHandled: Boolean)` (integration): Raised before renaming a customer record.
- `OnBeforeSetDefaultSalesperson(var Customer: Record Customer; var IsHandled: Boolean)` (integration): Raised before setting the default salesperson for a new customer.
- `OnBeforeTestNoSeries(var Customer: Record Customer; xCustomer: Record Customer; var IsHandled: Boolean)` (integration): Raised before testing the number series configuration.
- `OnBeforeUpdateDirectDebitPmtTermsCode(var Customer: Record Customer; var IsHandled: Boolean)` (integration): Raised before updating the payment terms code for direct debit.
- `OnBeforeValidateCity(var Customer: Record Customer; var PostCodeRec: Record "Post Code"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration): Raised before validating the city field.
- `OnBeforeValidateVATRegistrationNo(var Customer: Record "Customer"; xCustomer: Record "Customer"; FieldNumber: Integer; var IsHandled: Boolean)` (integration): Raised before validating the VAT registration number.
- `OnBeforeValidatePostCode(var Customer: Record Customer; var PostCodeRec: Record "Post Code"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration): Raised before validating the post code field.
- `OnBeforeValidateShortcutDimCode(var Customer: Record Customer; var xCustomer: Record Customer; FieldNumber: Integer; var ShortcutDimCode: Code[20]; var IsHandled: Boolean)` (integration): Raised before validating a shortcut dimension code.
- `OnBeforeVATRegistrationValidation(var Customer: Record Customer; var IsHandled: Boolean)` (integration): Raised before validating the VAT registration number format and VIES service.
- `OnGetCustNoOpenCardOnBeforeCustomerFindSet(var Customer: Record Customer)` (integration): Raised before the customer find set operation in GetCustNoOpenCard.
- `OnGetCustNoOpenCardOnBeforeFilterCustomer(var Customer: Record Customer)` (integration): Raised before filtering the customer in GetCustNoOpenCard.
- `OnGetCustNoOpenCardOnAfterSetCustomerFilters(var Customer: Record Customer; var CustomerFilterContains: Text)` (integration): Raised after setting customer filters in GetCustNoOpenCard.
- `OnMarkCustomersWithSimilarNameOnBeforeCustomerFindSet(var Customer: Record Customer)` (integration): Raised before searching for customers with similar names.
- `OnBeforeCheckCustomerContactRelation(Cont: Record Contact; ContBusRel: Record "Contact Business Relation"; var IsHandled: Boolean)` (integration): Raised before checking the customer-contact business relation.
- `OnBeforeValidateContact(var IsHandled: Boolean; var Customer: Record Customer)` (integration): Raised before validating the Contact field.
- `OnBeforeValidateEmail(var Customer: Record Customer; var IsHandled: Boolean; xCustomer: Record Customer)` (integration): Raised before validating the email address field.
- `OnBeforeShowContact(var Customer: Record Customer; var ContactBusinessRelation: Record "Contact Business Relation")` (integration): Raised before executing the ShowContact procedure.
- `OnShowContactOnBeforeOpenContactCard(var Contact: Record Contact; var ContactPageID: Integer)` (integration): Raised before opening the contact card from ShowContact.
- `OnShowContactOnBeforeOpenContactList(var Contact: Record Contact; var ContactPageID: Integer)` (integration): Raised before opening the contact list from ShowContact.
- `OnGetCustNoOpenCardOnAfterOnAfterCustomerFilterFromStart(var Customer: Record Customer)` (integration): Raised after applying the initial customer filter from start in GetCustNoOpenCard.
- `OnGetCustNoOpenCardOnBeforeCustomerFindFirst(var Customer: Record Customer; var IsHandled: Boolean)` (integration): Raised before the Customer.FindFirst() operation after setting the name filter in GetCustNoOpenCard.
- `OnBeforeCustBlockedErrorMessage(Cust2: Record Customer; Transaction: Boolean; var IsHandled: Boolean)` (integration): Raised before displaying the customer blocked error message.
- `OnBeforeCalcAvailableCreditCommon(var Rec: Record Customer; CalledFromUI: Boolean; var CreditLimitLCY: Decimal; var Result: Decimal; var IsHandled: Boolean)` (integration): Raised before calculating available credit.
- `OnGetBalanceAsVendorOnBeforeCalcBalance(var Vendor: Record Vendor)` (integration): Raised before calculating the balance from the linked vendor.
- `OnBeforeValidateRegistrationNumber(var Customer: Record Customer; var IsHandled: Boolean)` (integration): Raised before validating the registration number.
- `OnBeforeCheckAllowMultiplePostingGroups(var IsHandled: Boolean)` (integration): Raised before checking if multiple posting groups are allowed.
- `OnGetCustNoOpenCardOnAfterMarkCustomersWithSimilarName(var Customer: Record Customer)` (integration): Raised after marking customers with similar names in GetCustNoOpenCard.
- `OnGetTotalAmountLCYOnAfterCalcFields(var Customer: Record Customer)` (integration): Raised after calculating fields in GetTotalAmountLCY.
  - subscribers: [Codeunit 6450 "Serv. Integration Mgt."](../codeunit/6450.md) OnGetTotalAmountLCYOnAfterCalcFields
- `OnGetTotalAmountLCYUIOnAfterSetAutoCalcFields(var Customer: Record Customer)` (integration): Raised after setting auto-calculated fields in GetTotalAmountLCYUI.
  - subscribers: [Codeunit 6450 "Serv. Integration Mgt."](../codeunit/6450.md) OnGetTotalAmountLCYUIOnAfterSetAutoCalcFields
- `OnAfterGetTotalAmountLCYCommon(var Customer: Record Customer; var TotalAmountLCY: Decimal)` (integration): Raised after calculating the common total amount in local currency.
  - subscribers: [Codeunit 6450 "Serv. Integration Mgt."](../codeunit/6450.md) OnAfterGetTotalAmountLCYCommon
- `OnAfterGetVATRegistrationNo(var Customer: Record Customer; var VATRegNo: Text[20])` (integration): Raised after getting the VAT registration number.

## Trigger event subscribers

- OnAfterDeleteEvent: [Codeunit 1173 "Document Attachment Mgmt"](../codeunit/1173.md) DeleteAttachedDocumentsOnAfterDeleteCustomer, [Codeunit 1535 "Approvals Mgmt."](../codeunit/1535.md) DeleteApprovalEntriesAfterDeleteCustomer, [Codeunit 5702 "Dist. Integration"](../codeunit/5702.md) CustomerOnAfterDelete, [Codeunit 7006 "Price Helper - V16"](../codeunit/7006.md) AfterDeleteCustomer, [Codeunit 7019 "Price Helper - V15"](../codeunit/7019.md) AfterDeleteCustomer
- OnAfterModifyEvent: [Codeunit 1520 "Workflow Event Handling"](../codeunit/1520.md) RunWorkflowOnCustomerChanged
- OnAfterRenameEvent: [Codeunit 1173 "Document Attachment Mgmt"](../codeunit/1173.md) MoveAttachedDocumentsOnAfterRenameCustomer, [Codeunit 1520 "Workflow Event Handling"](../codeunit/1520.md) RunWorkflowOnCustomerRenamed, [Codeunit 7006 "Price Helper - V16"](../codeunit/7006.md) AfterRenameCustomer
- OnAfterValidateEvent(Blocked): [Codeunit 38502 "AR External Events"](../codeunit/38502.md) OnAfterValidateCustomerBlocked
- OnBeforeDeleteEvent: [Codeunit 1550 "Record Restriction Mgt."](../codeunit/1550.md) RemoveCustomerRestrictionsBeforeDelete, [Codeunit 8059 "Sub. Contracts General Mgt."](../codeunit/8059.md) CheckIfCustomerContractOrServiceObjectExistWhenDeleteCustomer
- OnBeforeInsertEvent: [Codeunit 5152 "API - Update Referenced Fields"](../codeunit/5152.md) UpdateReferencedIdsCustomerOnInsert
- OnBeforeModifyEvent: [Codeunit 5152 "API - Update Referenced Fields"](../codeunit/5152.md) UpdateReferencedIdsCustomerOnModify

## Procedures

- `AssistEdit(OldCust: Record Customer): Boolean`: Assists the user in selecting or generating a new customer number from the configured number series.
- `ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`: Validates and saves the specified shortcut dimension code for the customer.
- `ShowContact()`: Opens the contact card or contact list for the customer's associated contact.
- `LookupContactList()`: Opens a lookup page for selecting a contact associated with the customer.
- `SetInsertFromContact(FromContact: Boolean)`: Sets whether the customer is being inserted from a contact record.
- `CheckBlockedCustOnDocs(Cust2: Record Customer; DocType: Enum "Sales Document Type"; Shipment: Boolean; Transaction: Boolean)`: Checks if the customer is blocked for the specified document type and raises an error if blocked.
- `CheckBlockedCustOnJnls(Cust2: Record Customer; DocType: Enum "Gen. Journal Document Type"; Transaction: Boolean)`: Checks if the customer is blocked for the specified journal document type and raises an error if blocked.
- `CheckBlockedCustOnJnls(Cust2: Record Customer; var GenJnlLine: Record "Gen. Journal Line"; Transaction: Boolean)`: Checks if the customer is blocked for the specified general journal line and raises an error if blocked.
- `CustBlockedErrorMessage(Cust2: Record Customer; Transaction: Boolean)`: Raises an error message indicating that the customer is blocked.
- `CustPrivacyBlockedErrorMessage(Cust2: Record Customer; Transaction: Boolean)`: Raises an error message indicating that the customer is blocked for privacy reasons.
- `GetPrivacyBlockedGenericErrorText(Cust2: Record Customer): Text[250]`: Gets a generic error text for a privacy-blocked customer.
- `DisplayMap()`: Displays the customer's address on an online map service.
- `GetPriceCalculationMethod(): Enum "Price Calculation Method"`: Gets the price calculation method for the customer, considering customer price group and sales setup defaults.
- `GetPrimaryContact(CustomerNo: Code[20]; var PrimaryContact: Record Contact)`: Gets the primary contact for the specified customer.
- `GetTotalAmountLCY(): Decimal`: Calculates the total amount in local currency including balance, outstanding orders, shipped not invoiced, and outstanding invoices.
- `GetTotalAmountLCYUI(): Decimal`: Calculates the total amount in local currency for UI display purposes using auto-calculated fields.
- `GetSalesLCY(): Decimal`: Gets the total sales in local currency for the current fiscal year.
- `GetTopCustomerHeadlineQueryDocumentTypeFilter(): Text`: Gets the document type filter for the top customer headline query.
- `CalcAvailableCredit(): Decimal`: Calculates the available credit for the customer based on their credit limit and total outstanding amount.
- `CalcAvailableCreditUI(): Decimal`: Calculates the available credit for UI display using auto-calculated fields.
- `CalcOverdueBalance(): Decimal`: Calculates the total overdue balance in local currency for the customer.
- `GetLegalEntityType(): Text`: Gets the legal entity type as text from the Partner Type field.
- `GetLegalEntityTypeLbl(): Text`: Gets the label for the legal entity type field.
- `SetStyle(): Text`: Determines the display style for the customer based on available credit.
- `HasValidDDMandate(Date: Date): Boolean`: Checks if the customer has a valid SEPA direct debit mandate for the specified date.
- `GetReturnRcdNotInvAmountLCY(): Decimal`: Gets the total return received not invoiced amount in local currency for the customer.
- `GetInvoicedPrepmtAmountLCY(): Decimal`: Gets the total invoiced prepayment amount in local currency for the customer.
- `CalcCreditLimitLCYExpendedPct(): Decimal`: Calculates the percentage of the credit limit that has been used.
- `CreateAndShowNewInvoice()`: Creates a new sales invoice for the customer and opens the Sales Invoice page.
- `CreateAndShowNewOrder()`: Creates a new sales order for the customer and opens the Sales Order page.
- `CreateAndShowNewCreditMemo()`: Creates a new sales credit memo for the customer and opens the Sales Credit Memo page.
- `CreateAndShowNewQuote()`: Creates a new sales quote for the customer and opens the Sales Quote page.
- `GetBillToCustomerNo(): Code[20]`: Gets the bill-to customer number, returning the current customer number if no bill-to is specified.
- `HasAddressIgnoreCountryCode(): Boolean`: Checks if the customer has address fields populated, excluding the country/region code.
- `HasAddress(): Boolean`: Checks if the customer has any address fields populated, including country/region code.
- `HasDifferentAddress(OtherCustomer: Record Customer): Boolean`: Compares the customer's address with another customer's address.
- `GetBalanceAsVendor(var LinkedVendorNo: Code[20]): Decimal`: Gets the balance in local currency from the linked vendor account.
- `GetLinkedVendor(): Code[20]`: Gets the vendor number linked to this customer through the contact business relation.
- `GetCustNo(CustomerText: Text): Text`: Finds a customer number by text, showing card options if no exact match is found.
- `GetCustNoOpenCard(CustomerText: Text; ShowCustomerCard: Boolean; ShowCreateCustomerOption: Boolean): Code[20]`: Finds a customer number by text with options for displaying customer card and creation options.
- `CreateNewCustomer(CustomerName: Text[100]; ShowCustomerCard: Boolean): Code[20]`: Creates a new customer with the specified name, optionally from a template, and displays the customer card.
- `SelectCustomer(var Customer: Record Customer): Boolean`: Opens a customer lookup page for the user to select a customer.
- `ToPriceSource(var PriceSource: Record "Price Source")`: Initializes a price source record for this customer.
- `OpenCustomerLedgerEntries(FilterOnDueEntries: Boolean)`: Opens the customer ledger entries page with optional filtering on due entries.
- `SetInsertFromTemplate(FromTemplate: Boolean)`: Sets whether the customer is being inserted from a template.
- `IsLookupRequested(): Boolean`: Checks if a lookup was requested during the last customer number search operation.
- `IsContactUpdateNeeded(): Boolean`: Checks if the associated contact record needs to be updated based on changed customer fields.
- `IsBlocked(): Boolean`: Checks if the customer is blocked or privacy-blocked.
- `HasAnyOpenOrPostedDocuments(): Boolean`: Checks if the customer has any open sales documents or posted ledger entries.
- `CopyFromNewCustomerTemplate(CustomerTemplate: Record "Customer Templ.")`: Copies field values from the specified customer template to this customer record.
- `GetInsertFromContact(): Boolean`: Gets whether the customer is being inserted from a contact record.
- `GetInsertFromTemplate(): Boolean`: Gets whether the customer is being inserted from a template.
- `SetDefaultSalesperson()` (protected)
- `SetLastModifiedDateTime()` (protected)
- `VATRegistrationValidation()`: Validates the VAT registration number format and optionally verifies it against the VIES service.
- `SetAddress(CustomerAddress: Text[100]; CustomerAddress2: Text[50]; CustomerPostCode: Code[20]; CustomerCity: Text[30]; CustomerCounty: Text[30]; CustomerCountryCode: Code[10]; CustomerContact: Text[100])`: Sets the customer's address fields and updates the associated contact.
- `FindByEmail(var Customer: Record Customer; Email: Text): Boolean`: Finds a customer by email address, searching both the customer and contact records.
- `UpdateReferencedIds()`: Updates all API-related reference IDs for currency, payment terms, shipment method, payment method, and tax area.
- `GetReferencedIds(var TempField: Record "Field" temporary)`: Gets the list of fields that contain referenced IDs for API integration.
- `SetForceUpdateContact(NewForceUpdateContact: Boolean)`: Sets whether to force an update of the associated contact record regardless of field changes.
- `UpdateCurrencyId()`: Updates the Currency Id field based on the current Currency Code.
- `UpdatePaymentTermsId()`: Updates the Payment Terms Id field based on the current Payment Terms Code.
- `UpdateShipmentMethodId()`: Updates the Shipment Method Id field based on the current Shipment Method Code.
- `UpdatePaymentMethodId()`: Updates the Payment Method Id field based on the current Payment Method Code.
- `UpdateTaxAreaId()`: Updates the Tax Area ID based on the VAT Business Posting Group or Tax Area Code depending on tax type.
- `CheckAllowMultiplePostingGroups()`: Checks if multiple posting groups are allowed and validates that the customer has the required setting enabled.
- `GetVATRegistrationNo(): Text[20]`: Gets the customer's VAT registration number.
- `GetShippedOutstandingInvoicesAmountLCY(): Decimal` (obsolete 28.0: It is no longer used in GetTotalAmountLCYCommon procedure.): Gets the outstanding amount in LCY for shipped sales invoice lines.
- `GetShippedFromOrderLCYAmountLCY(): Decimal` (obsolete 28.0: It is no longer used in GetTotalAmountLCYCommon procedure.): Gets the shipped but not invoiced amount in LCY from sales orders.
- `GetDefaultLocation(): Code[10]`: Gets the default location code based on ship-to address, customer location, and user setup.
- `FormatVATRegistrationNo(VATRegistrationNo: Text; CountryCode: Code[10]): Text`

Plus 26 local procedures.

## Triggers

OnDelete, OnInsert, OnModify, OnRename

## Relations

- drill-down page [Page 22 "Customer List"](../page/22.md)
- lookup page [Page 33 "Customer Lookup"](../page/33.md)
- Shipment Method Code: TableRelation [Table 10 "Shipment Method"](../table/10.md)
- Shipment Method Id: TableRelation [Table 10 "Shipment Method"](../table/10.md)
- Bill-To No. of Pstd. Shipments: CalcFormula [Table 110 "Sales Shipment Header"](../table/110.md)
- No. of Pstd. Shipments: CalcFormula [Table 110 "Sales Shipment Header"](../table/110.md)
- Bill-To No. of Pstd. Invoices: CalcFormula [Table 112 "Sales Invoice Header"](../table/112.md)
- No. of Pstd. Invoices: CalcFormula [Table 112 "Sales Invoice Header"](../table/112.md)
- Bill-To No. of Pstd. Cr. Memos: CalcFormula [Table 114 "Sales Cr.Memo Header"](../table/114.md)
- No. of Pstd. Credit Memos: CalcFormula [Table 114 "Sales Cr.Memo Header"](../table/114.md)
- Salesperson Code: TableRelation [Table 13 "Salesperson/Purchaser"](../table/13.md)
- Location Code: TableRelation [Table 14 "Location"](../table/14.md)
- Bill-to Customer No.: TableRelation [Table 18 "Customer"](../table/18.md)
- Invoice Disc. Code: TableRelation [Table 18 "Customer"](../table/18.md)
- First Transaction Date: CalcFormula [Table 21 "Cust. Ledger Entry"](../table/21.md)
- Inv. Discounts (LCY): CalcFormula [Table 21 "Cust. Ledger Entry"](../table/21.md)
- Profit (LCY): CalcFormula [Table 21 "Cust. Ledger Entry"](../table/21.md)
- Sales (LCY): CalcFormula [Table 21 "Cust. Ledger Entry"](../table/21.md)
- No. of Ship-to Addresses: CalcFormula [Table 222 "Ship-to Address"](../table/222.md)
- Ship-to Code: TableRelation [Table 222 "Ship-to Address"](../table/222.md)
- City: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Post Code: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Gen. Bus. Posting Group: TableRelation [Table 250 "Gen. Business Posting Group"](../table/250.md)
- Territory Code: TableRelation [Table 286 "Territory"](../table/286.md)
- Preferred Bank Account Code: TableRelation [Table 287 "Customer Bank Account"](../table/287.md)
- Payment Method Code: TableRelation [Table 289 "Payment Method"](../table/289.md)
- Payment Method Id: TableRelation [Table 289 "Payment Method"](../table/289.md)
- Shipping Agent Code: TableRelation [Table 291 "Shipping Agent"](../table/291.md)
- Reminder Terms Code: TableRelation [Table 292 "Reminder Terms"](../table/292.md)
- Cash Flow Payment Terms Code: TableRelation [Table 3 "Payment Terms"](../table/3.md)
- Payment Terms Code: TableRelation [Table 3 "Payment Terms"](../table/3.md)
- Payment Terms Id: TableRelation [Table 3 "Payment Terms"](../table/3.md)
- No. Series: TableRelation [Table 308 "No. Series"](../table/308.md)
- Tax Area Code: TableRelation [Table 318 "Tax Area"](../table/318.md)
- VAT Bus. Posting Group: TableRelation [Table 323 "VAT Business Posting Group"](../table/323.md)
- Customer Disc. Group: TableRelation [Table 340 "Customer Discount Group"](../table/340.md)
- Global Dimension 1 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Global Dimension 1 Filter: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Global Dimension 2 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Global Dimension 2 Filter: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Bill-To No. of Blanket Orders: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- Bill-To No. of Credit Memos: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- Bill-To No. of Invoices: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- Bill-To No. of Orders: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- Bill-To No. of Quotes: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- Bill-To No. of Return Orders: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- No. of Blanket Orders: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- No. of Credit Memos: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- No. of Invoices: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- No. of Orders: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- No. of Quotes: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- No. of Return Orders: CalcFormula [Table 36 "Sales Header"](../table/36.md)
- Outstanding Invoices: CalcFormula [Table 37 "Sales Line"](../table/37.md)
- Outstanding Invoices (LCY): CalcFormula [Table 37 "Sales Line"](../table/37.md)
- Outstanding Orders: CalcFormula [Table 37 "Sales Line"](../table/37.md)
- Outstanding Orders (LCY): CalcFormula [Table 37 "Sales Line"](../table/37.md)
- Shipped Not Invoiced: CalcFormula [Table 37 "Sales Line"](../table/37.md)
- Shipped Not Invoiced (LCY): CalcFormula [Table 37 "Sales Line"](../table/37.md)
- Balance: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Balance (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Balance Due: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Balance Due (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Cr. Memo Amounts: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Cr. Memo Amounts (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Credit Amount: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Credit Amount (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Debit Amount: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Debit Amount (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Fin. Charge Memo Amounts (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Finance Charge Memo Amounts: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Inv. Amounts (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Invoice Amounts: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Net Change: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Net Change (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Other Amounts: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Other Amounts (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Payments: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Payments (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Pmt. Disc. Tolerance (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Pmt. Discounts (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Pmt. Tolerance (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Refunds: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Refunds (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Reminder Amounts: CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Reminder Amounts (LCY): CalcFormula [Table 379 "Detailed Cust. Ledg. Entry"](../table/379.md)
- Currency Code: TableRelation [Table 4 "Currency"](../table/4.md)
- Currency Filter: TableRelation [Table 4 "Currency"](../table/4.md)
- IC Partner Code: TableRelation [Table 413 "IC Partner"](../table/413.md)
- Fin. Charge Terms Code: TableRelation [Table 5 "Finance Charge Terms"](../table/5.md)
- Primary Contact No.: TableRelation [Table 5050 "Contact"](../table/5050.md)
- Bill-to No. Of Archived Doc.: CalcFormula [Table 5107 "Sales Header Archive"](../table/5107.md)
- Sell-to No. Of Archived Doc.: CalcFormula [Table 5107 "Sales Header Archive"](../table/5107.md)
- Coupled to Dataverse: CalcFormula [Table 5331 "CRM Integration Record"](../table/5331.md)
- Responsibility Center: TableRelation [Table 5714 "Responsibility Center"](../table/5714.md)
- Shipping Agent Service Code: TableRelation [Table 5790 "Shipping Agent Services"](../table/5790.md)
- Customer Price Group: TableRelation [Table 6 "Customer Price Group"](../table/6.md)
- Document Sending Profile: TableRelation [Table 60 "Document Sending Profile"](../table/60.md)
- Bill-To No. of Pstd. Return R.: CalcFormula [Table 6660 "Return Receipt Header"](../table/6660.md)
- No. of Pstd. Return Receipts: CalcFormula [Table 6660 "Return Receipt Header"](../table/6660.md)
- Base Calendar Code: TableRelation [Table 7600 "Base Calendar"](../table/7600.md)
- Language Code: TableRelation [Table 8 "Language"](../table/8.md)
- Country/Region Code: TableRelation [Table 9 "Country/Region"](../table/9.md)
- Customer Posting Group: TableRelation [Table 92 "Customer Posting Group"](../table/92.md)
- Comment: CalcFormula [Table 97 "Comment Line"](../table/97.md)

## Referenced by

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

- [Table 5965 "Service Contract Header"](../table/5965.md): Address, Bill-to Address, Bill-to City, Bill-to County, Bill-to Name, City, County, Name, Bill-to Customer No., Customer No.
- [Table 5940 "Service Item"](../table/5940.md): Address, City, Contact, County, Name, Customer No.
- [Table 181 "Posted Gen. Journal Line"](../table/181.md): Account No., Bal. Account No., Bill-to/Pay-to No., Sell-to/Buy-from No., Source No.
- [Table 751 "Standard General Journal Line"](../table/751.md): Account No., Bal. Account No., Bill-to/Pay-to No., Sell-to/Buy-from No., Source No.
- [Table 81 "Gen. Journal Line"](../table/81.md): Account No., Bal. Account No., Bill-to/Pay-to No., Sell-to/Buy-from No., Source No.
- [Table 113 "Sales Invoice Line"](../table/113.md): Sell-to Customer Name, Bill-to Customer No., Sell-to Customer No.
- [Table 115 "Sales Cr.Memo Line"](../table/115.md): Sell-to Customer Name, Bill-to Customer No., Sell-to Customer No.
- [Table 21 "Cust. Ledger Entry"](../table/21.md): Bal. Account No., Customer No., Sell-to Customer No.
- [Table 37 "Sales Line"](../table/37.md): Sell-to Customer Name, Bill-to Customer No., Sell-to Customer No.
- [Table 382 "CV Ledger Entry Buffer"](../table/382.md): Bal. Account No., Bill-to/Pay-to CV No., CV No.
- [Table 6661 "Return Receipt Line"](../table/6661.md): Sell-to Customer Name, Bill-to Customer No., Sell-to Customer No.
- [Table 1001 "Job Task"](../table/1001.md): Bill-to Customer No., Sell-to Customer No.
- [Table 110 "Sales Shipment Header"](../table/110.md): Bill-to Customer No., Sell-to Customer No.
- [Table 111 "Sales Shipment Line"](../table/111.md): Bill-to Customer No., Sell-to Customer No.
- [Table 112 "Sales Invoice Header"](../table/112.md): Bill-to Customer No., Sell-to Customer No.
- [Table 114 "Sales Cr.Memo Header"](../table/114.md): Bill-to Customer No., Sell-to Customer No.
- [Table 1208 "Direct Debit Collection Entry"](../table/1208.md): Customer Name, Customer No.
- [Table 1381 "Customer Templ."](../table/1381.md): Bill-to Customer No., Invoice Disc. Code
- [Table 1570 "G/L Entry Posting Preview"](../table/1570.md): Bal. Account No., Source No.
- [Table 167 "Job"](../table/167.md): Bill-to Customer No., Sell-to Customer No.
- [Table 17 "G/L Entry"](../table/17.md): Bal. Account No., Source No.
- [Table 179 "Reversal Entry"](../table/179.md): Bal. Account No., Source No.
- [Table 18 "Customer"](../table/18.md): Bill-to Customer No., Invoice Disc. Code
- [Table 30102 "Shpfy Shop"](../table/30102.md): Default Company No., Default Customer No.
- [Table 30118 "Shpfy Order Header"](../table/30118.md): Bill-to Customer No., Sell-to Customer No.
- [Table 30151 "Shpfy Company Location"](../table/30151.md): Bill-to Customer No., Sell-to Customer No.
- [Table 36 "Sales Header"](../table/36.md): Bill-to Customer No., Sell-to Customer No.
- [Table 426 "IC Outbox Sales Header"](../table/426.md): Bill-to Customer No., Sell-to Customer No.
- [Table 430 "Handled IC Outbox Sales Header"](../table/430.md): Bill-to Customer No., Sell-to Customer No.
- [Table 434 "IC Inbox Sales Header"](../table/434.md): Bill-to Customer No., Sell-to Customer No.
- [Table 438 "Handled IC Inbox Sales Header"](../table/438.md): Bill-to Customer No., Sell-to Customer No.
- [Table 5107 "Sales Header Archive"](../table/5107.md): Bill-to Customer No., Sell-to Customer No.
- [Table 5108 "Sales Line Archive"](../table/5108.md): Bill-to Customer No., Sell-to Customer No.
- [Table 5135 "Job Archive"](../table/5135.md): Bill-to Customer No., Sell-to Customer No.
- [Table 5136 "Job Task Archive"](../table/5136.md): Bill-to Customer No., Sell-to Customer No.
- [Table 5475 "Sales Invoice Entity Aggregate"](../table/5475.md): Bill-to Customer No., Sell-to Customer No.
- [Table 5495 "Sales Order Entity Buffer"](../table/5495.md): Bill-to Customer No., Sell-to Customer No.
- [Table 5505 "Sales Quote Entity Buffer"](../table/5505.md): Bill-to Customer No., Sell-to Customer No.
- [Table 5507 "Sales Cr. Memo Entity Buffer"](../table/5507.md): Bill-to Customer No., Sell-to Customer No.
- [Table 5771 "Warehouse Source Filter"](../table/5771.md): Customer No. Filter, Sell-to Customer No. Filter
- [Table 5900 "Service Header"](../table/5900.md): Bill-to Customer No., Customer No.
- [Table 5902 "Service Line"](../table/5902.md): Bill-to Customer No., Customer No.
- [Table 5907 "Service Ledger Entry"](../table/5907.md): Bill-to Customer No., Customer No.
- [Table 5908 "Warranty Ledger Entry"](../table/5908.md): Bill-to Customer No., Customer No.
- [Table 5970 "Filed Service Contract Header"](../table/5970.md): Bill-to Customer No., Customer No.
- [Table 5990 "Service Shipment Header"](../table/5990.md): Bill-to Customer No., Customer No.
- [Table 5991 "Service Shipment Line"](../table/5991.md): Bill-to Customer No., Customer No.
- [Table 5992 "Service Invoice Header"](../table/5992.md): Bill-to Customer No., Customer No.
- [Table 5993 "Service Invoice Line"](../table/5993.md): Bill-to Customer No., Customer No.
- [Table 5994 "Service Cr.Memo Header"](../table/5994.md): Bill-to Customer No., Customer No.
- and 120 more objects (133 fields): data/code/relations/29.json

## Pages and codeunits on this table

- [Page 1321 "Overdue Customers"](../page/1321.md) (source table)
- [Page 151 "Customer Statistics"](../page/151.md) (source table)
- [Page 155 "Customer Sales"](../page/155.md) (source table)
- [Page 1611 "Office Customer Details"](../page/1611.md) (source table)
- [Page 1870 "Credit Limit Notification"](../page/1870.md) (source table)
- [Page 1871 "Credit Limit Details"](../page/1871.md) (source table)
- [Page 20009 "APIV1 - Customers"](../page/20009.md) (source table)
- [Page 20048 "Customer Financial Details"](../page/20048.md) (source table)
- [Page 21 "Customer Card"](../page/21.md) (source table)
- [Page 22 "Customer List"](../page/22.md) (source table)
- [Page 30009 "APIV2 - Customers"](../page/30009.md) (source table)
- [Page 30048 "APIV2 - Cust Financial Details"](../page/30048.md) (source table)
- [Page 302 "Customer Entry Statistics"](../page/302.md) (source table)
- [Page 30307 "API Finance - Customer"](../page/30307.md) (source table)
- [Page 33 "Customer Lookup"](../page/33.md) (source table)
- [Page 343 "Check Credit Limit"](../page/343.md) (source table)
- [Page 36954 "Customers"](../page/36954.md) (source table)
- [Page 5360 "CRM Statistics FactBox"](../page/5360.md) (source table)
- [Page 5850 "Posted Sales Document Lines"](../page/5850.md) (source table)
- [Page 6408 "Workflow - Customer Entity"](../page/6408.md) (source table)
- [Page 6489 "Serv. Check Credit Limit"](../page/6489.md) (source table)
- [Page 7177 "Available Credit"](../page/7177.md) (source table)
- [Page 768 "Aged Acc. Receivable Chart"](../page/768.md) (source table)
- [Page 785 "Customer Picture"](../page/785.md) (source table)
- [Page 9080 "Sales Hist. Sell-to FactBox"](../page/9080.md) (source table)
- [Page 9081 "Sales Hist. Bill-to FactBox"](../page/9081.md) (source table)
- [Page 9082 "Customer Statistics FactBox"](../page/9082.md) (source table)
- [Page 9084 "Customer Details FactBox"](../page/9084.md) (source table)
- [Page 9085 "Service Hist. Sell-to FactBox"](../page/9085.md) (source table)
- [Page 9086 "Service Hist. Bill-to FactBox"](../page/9086.md) (source table)
- [Codeunit 30116 "Shpfy Customer Export"](../codeunit/30116.md) (codeunit runs on it)
- [Codeunit 30284 "Shpfy Company Export"](../codeunit/30284.md) (codeunit runs on it)

## Extended by

- [Table extension 4814 "Intrastat Report Customer"](../tableextension/4814.md)
- [Table extension 6450 "Serv. Customer"](../tableextension/6450.md)
- [Table extension 7244 "MDM Customer"](../tableextension/7244.md)
- [Table extension 8001 "Contracts Customer"](../tableextension/8001.md)

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 5056 "CustCont-Update"](../codeunit/5056.md) (6 calls: `IsContactUpdateNeeded → ContactNameIsBlank`, `OnDelete → OnDelete`, `OnInsert → OnInsert`, …)
- [Codeunit 408 "DimensionManagement"](../codeunit/408.md) (5 calls: `OnDelete → DeleteDefaultDim`, `OnInsert → UpdateDefaultDim`, `OnRename → RenameDefaultDim`, …)
- [Codeunit 249 "VAT Registration Log Mgt."](../codeunit/249.md) (3 calls: `OnDelete → DeleteCustomerLog`, `VATRegistrationValidation → LogCustomer`, `VATRegistrationValidation → ValidateVATRegNoWithVIES`)
- [Page 456 "No. Series"](../page/456.md) (3 calls: `AssistEdit → (object)`, `OnInsert → (object)`, `TestNoSeries → (object)`)
- [Codeunit 1535 "Approvals Mgmt."](../codeunit/1535.md) (2 calls: `OnDelete → OnCancelCustomerApprovalRequest`, `OnRename → OnRenameRecordInApprovalRequest`)
- [Codeunit 27 "Confirm Management"](../codeunit/27.md) (2 calls: `CopyContactPicture → GetResponseOrDefault`, `ShowContact → GetResponseOrDefault`)
- [Codeunit 419 "File Management"](../codeunit/419.md) (2 calls: `CopyContactPicture → DeleteServerFile`, `CopyContactPicture → GetServerDirectoryFilesList`)
- [Codeunit 426 "Payment Tolerance Management"](../codeunit/426.md) (2 calls: `UpdatePaymentTolerance → CalcTolCustLedgEntry`, `UpdatePaymentTolerance → DelTolCustLedgEntry`)
- [Codeunit 7600 "Calendar Management"](../codeunit/7600.md) (2 calls: `OnDelete → DeleteCustomizedBaseCalendarData`, `OnRename → RenameCustomizedBaseCalendarData`)
- [Codeunit 10 "Type Helper"](../codeunit/10.md) (1 call: `MarkCustomersWithSimilarName → TextDistance`)
- [Codeunit 1381 "Customer Templ. Mgt."](../codeunit/1381.md) (1 call: `CreateNewCustomer → InsertCustomerFromTemplate`)
- [Codeunit 1520 "Workflow Event Handling"](../codeunit/1520.md) (1 call: `CreateNewCustomer → RunWorkflowOnCustomerChanged`)
- [Codeunit 1630 "Office Management"](../codeunit/1630.md) (1 call: `ShowContact → GetContact`)
- [Codeunit 358 "DateFilter-Calc"](../codeunit/358.md) (1 call: `GetSalesLCY → CreateFiscalYearFilter`)
- [Codeunit 361 "MoveEntries"](../codeunit/361.md) (1 call: `OnDelete → MoveCustEntries`)
- [Codeunit 5465 "Graph Mgt - General Tools"](../codeunit/5465.md) (1 call: `UpdateReferencedIds → IsApiEnabled`)
- [Codeunit 5700 "User Setup Management"](../codeunit/5700.md) (1 call: `GetDefaultLocation → GetLocation`)
- [Codeunit 701 "Data Type Management"](../codeunit/701.md) (1 call: `GetReferencedIds → InsertFieldToBuffer`)
- [Codeunit 7030 "Campaign Target Group Mgt"](../codeunit/7030.md) (1 call: `DeleteRelatedData → ConverttoContact`)
- [Codeunit 802 "Online Map Management"](../codeunit/802.md) (1 call: `DisplayMap → MakeSelectionIfMapEnabled`)
- [Codeunit 9520 "Mail Management"](../codeunit/9520.md) (1 call: `ValidateEmail → CheckValidEmailAddresses`)
- [Page 41 "Sales Quote"](../page/41.md) (1 call: `CreateAndShowNewQuote → (object)`)
- [Page 42 "Sales Order"](../page/42.md) (1 call: `CreateAndShowNewOrder → (object)`)
- [Page 43 "Sales Invoice"](../page/43.md) (1 call: `CreateAndShowNewInvoice → (object)`)
- [Page 44 "Sales Credit Memo"](../page/44.md) (1 call: `CreateAndShowNewCreditMemo → (object)`)

## Recent changes

- 2026-08-27 [#10559 Ruleset hardening: promote AL0659 and AL0685 to Error](../../changes/bcapps/10559.md) (main, BC30, refactor)
- 2026-07-20 [#9089 Merge-ES-Excluded-from-Calculation-to-W1](../../changes/bcapps/9089.md) (main, BC30, feature)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-29

## Countries that replace it

[AU](../../localizations/au.md), [BE](../../localizations/be.md), [CA](../../localizations/ca.md), [CH](../../localizations/ch.md), [ES](../../localizations/es.md), [FR](../../localizations/fr.md), [IT](../../localizations/it.md), [MX](../../localizations/mx.md), [NL](../../localizations/nl.md), [NO](../../localizations/no.md), [NZ](../../localizations/nz.md), [RU](../../localizations/ru.md), [US](../../localizations/us.md)

## Deprecations

- field Coupled to CRM: Removed 26.0 (#if not CLEANSCHEMA26), "Replaced by flow field Coupled to Dataverse"
- field Invoice Copies: Pending 27.0 (#if not CLEANSCHEMA30), "This field is not used consequently and hence does not work as expected. It should be retired."
- procedure GetShippedFromOrderLCYAmountLCY: Pending 28.0 (#if not CLEAN28), "It is no longer used in GetTotalAmountLCYCommon procedure."
- procedure GetShippedOutstandingInvoicesAmountLCY: Pending 28.0 (#if not CLEAN28), "It is no longer used in GetTotalAmountLCYCommon procedure."

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). The call sections above are our own, per object, from the BC29 call graph. 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: "Customer")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
