Evaluate · codes and the gaps between them

AFP service codes list: the services in use that have no code

The AFP service codes list is the industry's standard catalogue of codes for bank services on account analysis statements. This guide shows how the codes are organised, what they are used for, and how Account Analysis Fee Leakage Review finds services used every day that never got a code, and so were never billed.

Updated · 12 min read

The AFP service codes list is a standard catalogue of codes for the services banks bill on account analysis statements, maintained by the Association for Financial Professionals and licensed to banks and companies by subscription. Domestic codes are six digits, grouped into families by type of service (account services, lockbox, depository, ACH, wires, information reporting), and a separate global list uses eight-digit codes for bank-fee statements in the international camt.086 format. Each line of an analysis statement carries the bank's own service code and, where the bank maps it, the standard code, so a client can compare one bank's charges with another's. For the bank the code has a second job: it is the bridge from a platform's usage to the bill. A service switched on without one is used every day and billed never. Botminds' Account Analysis Fee Leakage Review counts usage from the platforms themselves, so it finds those services, and flags new ones within two business days.

The full list is AFP's and is sold by subscription, so this guide does not reproduce it. The code examples below come from a public document, a New Jersey state authority's banking request for proposals, and from a fictional sample bank, Corvane National Bank, whose codes are illustrative.

How the codes are organised: families in one public pricing schedule

Family in the scheduleCodes startExample rows as published
Balance and compensation00000230 Recoupment monthly
General account services01010000 Account maintenance; 010100 Debits posted; 010310 DDA statement, paper
Lockbox services05050000 Wholesale lockbox monthly base; 050100 Wholesale lockbox standard item processed
Depository services10100006 Branch deposit; 100400 Return item, chargeback
Paper disbursement and reconciliation15, 20150400 Online search; 200020 ARP (account reconciliation) monthly base, partial
General ACH services25250000 ACH monthly base; 250102 ACH one-day item; 250202 ACH received item
Wire and other funds transfer35350100 Wire out, domestic; 350300 Wire in, domestic; 350120 Book transfer
Information services40400000 Previous-day reporting monthly base; 400221 BAI transaction reported
Undefined99999999 used for several electronic lockbox reports
Higher Education Student Assistance Authority (New Jersey), Depository Banking Services RFP, Exhibit K, Vendor Cost Schedule, headed 'AFP Code', descriptions abbreviated as published. Family prefixes are as they appear in that schedule.Source: HESAA, Exhibit K, Vendor Cost Schedule

What are AFP service codes?

They are a shared vocabulary for bank charges. Banks name and code their services in their own ways; even one public schedule lists an outgoing wire as "WIRE OUT DOMESTIC" under 350100 and an online one as "WIRE-OUTGOING DOMESTIC - ONLINE" under 350104. A standard code lets a client, or a client's fee analysis tool, line the two up. The codes appear on analysis statements beside the bank's own code, in the pricing schedules banks return to requests for proposals, and in electronic statements.

The structure is visible in the public schedule above, where the first two digits name the family, so 01 is general account services, 05 lockbox, 25 ACH and 35 wires; the remaining digits name the service and its variant. The same schedule also carries codes with letters in them, such as 05011L for a lockbox package base fee, alongside the six-digit ones.

AFP service codes list: domestic and global

There are two lists. The domestic list uses six-digit codes and is the one U.S. analysis statements carry. The global list was built for bank-fee statements in the international camt.086 format, and its codes are eight digits long, because that format and the U.S. X12 statement define the code field differently. Both are maintained and sold by AFP; neither is a regulation, and no rule requires a bank to use them.

The domestic codes travel well with the U.S. electronic statement. ASC X12's 822 account analysis transaction set carries a statement's balances, service charges and adjustments from bank to corporate client, code by code (X12, Transaction Sets; account analysis statement vs bank statement reads one), and public clients ask for both together. Delaware's 2025 banking request for proposals asks: "Can Association for Financial Professionals (“AFP”) Service Codes be included on the analysis statement? If not, does your Firm offer another report that provides this information?" and, separately, whether the bank can send the statements as an 822 file (Delaware Office of the State Treasurer, RFP TRE25101-BANKINGSVC).

What are AFP service codes used for?

Comparison, mostly, and comparison is harder than the codes make it look. In the same public schedule, one code covers several different services: 050400 appears for a wholesale lockbox data transmission base, a wholesale lockbox image service and a wholetail lockbox monthly base, and 999999 sits beside five electronic lockbox reporting charges grouped under "Undefined services". A client comparing two banks code by code will match services that differ and miss services filed under a catch-all.

For the bank, the code's use is internal and more basic. The analysis system prices volume by code: a platform reports usage against a code, the engine multiplies it by the client's price for that code, and the line appears on the statement. Without a code, there is nothing to multiply.

Eleven services in use, each with its code, its signed price and what the analysis system holds

Pricing, as signed and as billed, for the fictional client Arden Ridge Logistics: eleven services in use, three match and eight need attention, with columns for service, code, the signed schedule, the analysis system and state. ACH positive pay monthly per account (251100) and per reviewed item (251105) and full account reconciliation (400100) show 'no service code' in the analysis system; wire transfers (350100, 350200) and check positive pay (250900) show waivers past their date; wholesale lockbox per item (150300) is off contract; lockbox monthly base (150100) and ACH origination (250100, 250200) match.
Fictional sample data; the codes are the sample bank's own and are illustrative, not quoted from the AFP list. Three of eleven services in use had no service code in the analysis system.

Why is a service missing from my account analysis?

Usually because it has no service code in the analysis system, or because a waiver is suppressing it. If a client asks why a service it uses does not appear on its statement, the bank should look first at the enrollment: who switched the service on, on which platform, and whether anyone created and mapped a billing code at the same time.

How a service used every day never reaches a statement, and how Account Analysis Fee Leakage Review finds it

StepWho or whatWhat happenedWhy it was missed
1. Amendment signedClient and bankMarch 20, 2025: Exhibit B §4.2 adds ACH positive pay at $120.00 an account a month and $3.00 a reviewed item.Nothing missed yet: the price is in a signed document.
2. Service enrolledImplementation teamApril 3, 2025: two accounts switched on in the positive pay platform under request TMR-2025-0914.The platform has no field for a billing service code, so the request had nowhere to record one.
3. Usage reportedPositive pay platform460 exception reviews in September 2026, on the platform's own report.Usage is reported against the platform's service, not a billing code.
4. Statement pricedAccount analysis systemEvery coded service on the relationship priced and offset by the earnings credit.No code, no volume, no line: the statement balances without it.
5. Difference foundUsage and Billing agentsThe service counted from the platform report, no matching code on the statement, a finding raised at the signed price.Found because usage is read from the platform, not the statement.
6. FixedSpecialist, product manager, second specialistCode created and mapped, forward-only approved, change keyed by someone other than the approver.Closed: billed from the November 7, 2026 statement.
Fictional sample finding F-9044 for Arden Ridge Logistics in Account Analysis Fee Leakage Review: $1,620.00 a month, eighteen months unbilled.

Positive pay is a good example of why these services slip. It is a fraud control as much as a billable service, and a fraud control can be switched on quickly, by an implementation or fraud team, after an incident or a client request. The interagency authentication guidance lists it, with debit blocks, among the tools business customers can use to watch and control their own accounts (FFIEC, Authentication and Access to Financial Institution Services and Systems, 2021; how positive pay works covers the control itself). The team that enrolls it is thinking about fraud, not about billing codes.

The platform's own report, with the line that explains the missing code

Positive pay platform enrollment and exception report for relationship AR-40821, September 1 to 30, 2026: ACH positive pay (debit filter and review) on 2 accounts enrolled April 3, 2025, 460 items in September; check positive pay on 3 accounts enrolled March 18, 2024, 1,204 presented and 11 exceptions. The note: enrollment on April 3, 2025 was made by the treasury implementation team under request TMR-2025-0914; the platform has no field for a billing service code, and no code was created in the account analysis system. 18 full months of use to September 30, 2026.
Fictional sample data. The usage figure on the finding opens this report; one sentence in it explains the whole finding.

How to map services to AFP codes

Map from the platforms inward, not from the price list outward. A price list tells you what the bank intends to sell; the platforms tell you what it is actually running. Every service a platform can switch on for a client needs a bank code, a standard code where one fits, a pricing unit and a price in the client's exhibit, and the test of the mapping is whether every enrolled service on every relationship resolves to a billed line.

Mapping platform services to billing codes, and keeping the map true

  1. Inventory what each platform can enroll

    Payments hub, lockbox, positive pay, core banking, reporting: every service a client can be switched on for.

  2. Give each a bank code and a standard code

    Use the standard family where one fits; record where none does instead of filing it under a catch-all.

  3. Fix the pricing unit

    Per account a month, per item, per file: the unit must match how the platform reports usage.

  4. Tie each code to the exhibit section

    So the signed price can be found for every code on every relationship.

  5. Close the hand-off

    An enrollment request should not complete until the billing code exists, or a check should catch it within days.

  6. Test the whole book

    Every enrolled service on every relationship must resolve to a billed line, a waiver with an approver, or a documented exception.

Our recommendation, drawn from how Account Analysis Fee Leakage Review compares enrollment feeds with the service-code mapping.

One choice in the mapping changes what clients see. A bank that codes several services to one standard code, or parks new ones under a catch-all, saves itself mapping work and costs its clients comparison work, because a client's fee analysis tool can only compare what the codes let it. The audit your clients run on you covers what those tools do with the codes.

When a code exists but is not on the relationship

A service can also go unbilled when its code exists in the bank's table but was never attached to the client's analysis relationship. The sample client shows both cases side by side. ACH positive pay had no billing code at all. Full account reconciliation did have one, 400100 in the sample bank's table, priced at $265.00 a month in Exhibit B §5.1, but it was mapped in the analysis system and not enrolled on Arden Ridge's relationship, while the service itself was switched on for the client in July.

The two need different fixes. A missing code is a product-setup task: create it, map it to the standard family, give it a pricing unit. A code that is not on the relationship is a client-setup task: attach it to the relationship at the signed price. A check that only asks "does a code exist for this service?" passes the second case, so the comparison has to be made relationship by relationship, between what each client's platforms report and what each client's statement bills.

The two-business-day check for uncoded services

The cheapest leak to fix is the one found in its first week. In the solution, the Watch agent compares the enrollment feeds from the payments hub, the lockbox platform, the positive pay platform and the core banking system with the service-code mapping every morning, and raises a finding when a service has run for two business days with no bank code; the window is a setting. On the sample's data the check would have caught the ACH positive pay enrollment in April 2025, not eighteen months later.

A service switched on in any connected platform with no service code is flagged within two business days of enrollment.

Account Analysis Fee Leakage Review, sample settings

The value of speed is the agreement's lookback. The sample agreement lets the bank bill up to six months of unbilled charges; a service found in its first week is fully recoverable if the bank chooses, and one found in its nineteenth month mostly is not. Bank fee recovery works through that arithmetic.

Which services slip most often

In the sample bank's September cycle, unbilled services were the largest kind of finding by value, ahead of expired waivers and off-contract prices. The pattern within them is what the flow above suggests: services added after onboarding, by a team other than the one that set up billing.

Unbilled services were the largest kind of finding in one Account Analysis Fee Leakage Review cycle

Unbilled services (no service code)
$96,400 a month · 1,142 findings
Expired waivers
$71,800 · 806
Off-contract prices
$41,300 · 884
Earnings credit outside the tiers
$15,800 · 274
Fictional Corvane National Bank, September 2026, in Account Analysis Fee Leakage Review. On the sample client, the two unbilled services were ACH positive pay ($1,620.00 a month, enrolled April 2025) and full account reconciliation ($265.00 a month, enrolled in July with no code).

One unbilled service, with its three sources side by side

Finding F-9044, ACH positive pay, unbilled service: what the client used, 2 accounts and 460 exception reviews from the positive pay platform; what we billed, nothing, no service code, noting that full account reconciliation (400100) is mapped but not enrolled for this relationship; what the signed schedule says, $120 an account and $3.00 a review under Exhibit B §4.2. The Fix agent proposes creating the service code, mapping it and billing the Exhibit B prices from November 7, 2026.
Fictional sample data. The fix is a code, a mapping and a price, keyed by a second specialist after the product manager approves it.

To see the uncoded-service check on sample data, start from Account Analysis Fee Leakage Review.

Questions people ask

How many digits is an AFP service code?

Six for the domestic list and eight for the global list. In the domestic codes the first two digits name the service family; in a public New Jersey schedule, 01 is general account services, 25 ACH and 35 wires, with 350100 for an outgoing domestic wire.

Is the AFP service codes list free?

No. AFP maintains the domestic and global lists and licenses them by subscription. Public pricing schedules from government requests for proposals show many codes in use, but they are not the full list.

What is a bank service code list?

It is a bank's own table of billable services, each with an internal code, a pricing unit and often a mapped standard code. It lives in the account analysis system, and any service missing from it cannot be billed, whatever the client's agreement says.

Do banks have to use AFP codes?

No law requires them. Clients can ask for them in requests for proposals, as Delaware's 2025 banking request does, because they make statements comparable across banks.

What does code 999999 mean on an analysis statement?

In the New Jersey schedule it is the code given to several electronic lockbox reporting charges filed under "Undefined services", that is, services with no standard code. A catch-all code makes the charge harder for a client to compare and harder for the bank to price consistently.

Account Analysis Fee Leakage Review.
See it on your own files.

An agentic solution from Botminds. Treasury product teams find unbilled services, stale waivers and off-contract pricing Book a demo, or explore how it works.