---
id: CAP-ACC-TRX-017
title: Explain a customer’s current financial position
feature: FEAT-ACC-TRX-05
product_area: accounting
module: transactions
revision: 1
status: draft
product_intent: proposed
implementation_evidence: inconsistent
supersedes:
  - CAP-ACC-INV-013
  - CAP-ACC-PAY-023
  - CAP-ACC-RPT-017
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-16'
  - 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-17'
  - 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#C-9'
  - 'services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D6'
purpose: 'Staff and Commerce inspect debt, held money and eligible payment choices separately by currency.'
outcomes:
  - 'Staff and Commerce inspect debt, held money and eligible payment choices separately by currency.'
  - >-
    Unknown customers with no open items return empty currency groups. The product should make payment-plan
    collection holds visible when that contract is implemented.
concepts:
  - CON-ACC-TRX-005
actors:
  - ACT-ACC-012
  - ACT-ACC-002
  - ACT-ACC-021
surfaces:
  - console
  - api
permissions:
  - key: accounting.invoices.read
    where_checked: api
    scope: tenant
  - key: accounting.payments.read
    where_checked: api
    scope: tenant
  - key: accounting.credits.read
    where_checked: api
    scope: tenant
rules:
  - id: BR-CAP-ACC-TRX-017-01
    proved_by: [ATS-ACC-TRX-010-07, ATS-ACC-TRX-016-08, ATS-ACC-TRX-017-01, ATS-ACC-TRX-017-08, ATS-ACC-TRX-018-08, TST-ACC-TRX-038]
    statement: >-
      Today’s customer summary groups invoice debt, overdue debt, unapplied receipts, credit and net position
      by currency using the same receivable entries as aging.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/customers/customer-summary.integration.spec.js#it
      answers, as of today, its two open invoices (owing 9000), the overdue one (4000), the check’s 1000
      unapplied, the 1500 credit, a net position of 6500
    origin: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-16'
  - id: BR-CAP-ACC-TRX-017-02
    proved_by: [ATS-ACC-TRX-017-02, ATS-ACC-TRX-017-08, ATS-ACC-TRX-019-08, TST-ACC-TRX-143]
    statement: 'Debt becomes overdue after its due date, so amounts due today remain current.'
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/unit/rules/customer-summary.spec.js#it counts an invoice
      due today as not yet overdue, and one due yesterday as overdue
    origin: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-16'
  - id: BR-CAP-ACC-TRX-017-03
    proved_by: [ATS-ACC-TRX-017-03, TST-ACC-TRX-038, TST-ACC-TRX-059]
    statement: >-
      A contact summary excludes organization figures even though its payable list includes the primary
      organization’s outstanding invoices.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/customers/customer-summary.integration.spec.js#it
      keeps the contact’s figures its own: Acme’s invoices are not counted in Ivy’s summary (1.0’s
      balances.js)
    origin: none
    note: >-
      The cited build recommendation does not establish Product approval; the authority gap remains open in
      FND-ACC-TRX-035.
  - id: BR-CAP-ACC-TRX-017-04
    proved_by: [ATS-ACC-TRX-010-07]
    statement: >-
      The summary separately identifies unapplied receipts from another payer while retaining them within
      total unapplied money; remitter remainder belongs to the remitter.
    kind: calculation
    enforced_at:
      - service
    must_prove: false
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/unit/rules/customer-summary.spec.js#it counts the
      unapplied payments another party sent (a payer that is not the customer, or a payer known by name alone)
      again, and not the customer’s own
    origin: none
    note: >-
      The cited build recommendation does not establish Product approval; the authority gap remains open in
      FND-ACC-TRX-035.
  - id: BR-CAP-ACC-TRX-017-05
    proved_by: [ATS-ACC-TRX-017-04, TST-ACC-TRX-059]
    statement: >-
      Payable lists contain outstanding issued real invoices oldest first, excluding drafts, voids and quotes,
      with card and bank-debit eligibility.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/invoices/payable-invoices.integration.spec.js#it
      leaves out the contact’s draft and its void invoice
    origin: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-13'
  - id: BR-CAP-ACC-TRX-017-06
    proved_by: [ATS-ACC-TRX-017-05, TST-ACC-TRX-059]
    statement: >-
      Fee quotes apply the unit rule once to eligible tender value and produce no fee for checks or fee-free
      policies.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/invoices/payable-invoices.integration.spec.js#it
      quotes the card fee of a required invoice by its unit’s rule, on the balance or on the amount tendered,
      and none for a check
    origin: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-17'
  - id: BR-CAP-ACC-TRX-017-07
    proved_by: [ATS-ACC-TRX-017-06, TST-ACC-TRX-005, TST-ACC-TRX-038]
    statement: >-
      Invoice read authority is sufficient for financial standing, and customers without open items return no
      currency groups even if CRM does not know them.
    kind: permission
    enforced_at:
      - api
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/e2e/customer-summary.e2e.spec.js#it reads with
      accounting.invoices.read alone and refuses a principal without it (403 permission_missing)
    origin: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-16'
  - id: BR-CAP-ACC-TRX-017-08
    proved_by: [ATS-ACC-TRX-017-07]
    statement: >-
      The product should expose payment-plan standing and let Billing pause collection through a hold; neither
      behavior is implemented.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: unknown
    source: FND-ACC-TRX-005
    origin: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#C-9'
scenarios:
  - id: SC-CAP-ACC-TRX-017-01
    given: 'The member owes 90.00, including 40.00 overdue, and holds 10.00 of receipt value and 15.00 of credit.'
    when: Inspect the financial summary.
    then: The separate figures reconcile to 65.00 net debt.
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/customers/customer-summary.integration.spec.js#it
      answers, as of today, its two open invoices (owing 9000), the overdue one (4000), the check’s 1000
      unapplied, the 1500 credit, a net position of 6500
  - id: SC-CAP-ACC-TRX-017-02
    given: The contact’s primary organization also owes invoices.
    when: Request the contact’s payable description through Commerce.
    then: Contact invoices precede the organization’s eligible invoices in the described totals.
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/invoices/payable-invoices.integration.spec.js#it
      describes the primary affiliate’s own open invoices, oldest first, then its organization’s, the totals
      summed
edge_cases: []
depends_on:
  - CAP-ACC-TRX-019
related:
  - CAP-ACC-TRX-016
  - CAP-ACC-TRX-018
journeys: []
open_questions: []
evidence:
  - >-
    services-accounting at f47cb263875bbc0c5640fba7dae6785ec32695f8:
    modules/transactions/aws/api/customer-summary.routes.ts (summarizeCustomer), invoices.routes.ts
    (describePayableInvoice, describePayableInvoices, listOpenInvoices), payments.routes.ts
    (listUnappliedPayments), credits.routes.ts (listOpenCredits); services/customers/customer-summary.ts;
    services/invoices/invoice-payability.ts; services/persistence/customer-summaries.ts, parties.ts;
    db/customer-names.ts; docs/accounting/customers.md; tests e2e/customer-summary.e2e.spec.js,
    invoice-payability.e2e.spec.js, integration/services/customers/customer-summary,
    invoices/payable-invoices, unit/rules/customer-summary, invoice-payability.
  - >-
    react-console at baf6dae382d6f41dce976c7f848667ccc37e076f: lib/accounting/transactions/types.ts (the
    customer position); journey ACT-ACC-0336 (no spec).
controls: [TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-006, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-LOG-004, TC-PI-001, TC-PI-005, TC-PRV-001, TC-PRV-002]
exercised_by: [FAS-ACC-TRX-05-01, FAS-ACC-TRX-05-02, FAS-ACC-TRX-05-03, FAS-ACC-TRX-05-04, FAS-ACC-TRX-05-05]
suites: [TST-ACC-TRX-005, TST-ACC-TRX-038, TST-ACC-TRX-059, TST-ACC-TRX-143]
---

# Explain a customer’s current financial position

## Purpose

Staff and Commerce inspect debt, held money and eligible payment choices separately by currency.

## How It Works

The summary reads today’s open items rather than a stored customer balance. It separates outstanding and overdue invoices from receipt and credit value. Net position accounts for those held amounts. A payable description supplies eligible invoice targets and applicable fee quotes. A contact’s payable population currently differs from its own financial summary because it includes its primary organization. Unknown customers with no open items return empty currency groups. The product should make payment-plan collection holds visible when that contract is implemented.

## Relationships

- Maintain customer-specific collection choices supplies or continues the related financial work.
- Find money records and understand available work supplies or continues the related financial work.
- Preserve and read monthly receivables aging supplies or continues the related financial work.
