---
id: object/interface/paymentpracticeschemehandler
type: object
title: Interface "PaymentPracticeSchemeHandler"
summary: Interface "PaymentPracticeSchemeHandler" in PaymentPractices (Microsoft.Finance.Analysis). 4 public procedures. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - interface
  - paymentpractices
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: 9507277fab89bdc820579e63c7ab15049c92519f27f579aa39576a365abfef6f
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/PaymentPractices/app/src/Core/Interfaces/PaymentPracticeSchemeHandler.Interface.al
    title: src/Apps/W1/PaymentPractices/app/src/Core/Interfaces/PaymentPracticeSchemeHandler.Interface.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: interface
object_id: null
name: PaymentPracticeSchemeHandler
namespace: Microsoft.Finance.Analysis
app: PaymentPractices
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: 0
  procedures: 4
  events: 0
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 0
  called_by: 0
  implements: 0
  implemented_by: 0
---

# Interface "PaymentPracticeSchemeHandler"

> Interface "PaymentPracticeSchemeHandler" in PaymentPractices (Microsoft.Finance.Analysis). 4 public procedures. Introduced in BC29, still in BC30.

PaymentPractices · Microsoft.Finance.Analysis · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/PaymentPractices/app/src/Core/Interfaces/PaymentPracticeSchemeHandler.Interface.al) · facts from BC29

## Procedures

- `ValidateHeader(var PaymentPracticeHeader: Record "Payment Practice Header")`
- `UpdatePaymentPracData(var PaymentPracticeData: Record "Payment Practice Data"): Boolean`: Enriches or filters a Payment Practice Data row before insertion. Returns true to include the row, false to skip it.
- `CalculateHeaderTotals(var PaymentPracticeHeader: Record "Payment Practice Header"; var PaymentPracticeData: Record "Payment Practice Data")`: Calculates scheme-specific header totals after standard totals are generated.
- `CalculateLineTotals(var PaymentPracticeLine: Record "Payment Practice Line"; var PaymentPracticeData: Record "Payment Practice Data")`: Calculates scheme-specific line totals for the currently visible slice of data. The caller is responsible for applying any filters (period, company size, etc.) on PaymentPracticeData before invoking this method, and for restoring them afterwards.

## 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: "interface", object_name: "PaymentPracticeSchemeHandler")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
