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 schedule | Codes start | Example rows as published |
|---|---|---|
| Balance and compensation | 00 | 000230 Recoupment monthly |
| General account services | 01 | 010000 Account maintenance; 010100 Debits posted; 010310 DDA statement, paper |
| Lockbox services | 05 | 050000 Wholesale lockbox monthly base; 050100 Wholesale lockbox standard item processed |
| Depository services | 10 | 100006 Branch deposit; 100400 Return item, chargeback |
| Paper disbursement and reconciliation | 15, 20 | 150400 Online search; 200020 ARP (account reconciliation) monthly base, partial |
| General ACH services | 25 | 250000 ACH monthly base; 250102 ACH one-day item; 250202 ACH received item |
| Wire and other funds transfer | 35 | 350100 Wire out, domestic; 350300 Wire in, domestic; 350120 Book transfer |
| Information services | 40 | 400000 Previous-day reporting monthly base; 400221 BAI transaction reported |
| Undefined | 99 | 999999 used for several electronic lockbox reports |
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

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
| Step | Who or what | What happened | Why it was missed |
|---|---|---|---|
| 1. Amendment signed | Client and bank | March 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 enrolled | Implementation team | April 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 reported | Positive pay platform | 460 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 priced | Account analysis system | Every 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 found | Usage and Billing agents | The 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. Fixed | Specialist, product manager, second specialist | Code created and mapped, forward-only approved, change keyed by someone other than the approver. | Closed: billed from the November 7, 2026 statement. |
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

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
- Inventory what each platform can enroll
Payments hub, lockbox, positive pay, core banking, reporting: every service a client can be switched on for.
- 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.
- Fix the pricing unit
Per account a month, per item, per file: the unit must match how the platform reports usage.
- Tie each code to the exhibit section
So the signed price can be found for every code on every relationship.
- Close the hand-off
An enrollment request should not complete until the billing code exists, or a check should catch it within days.
- 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.
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
One unbilled service, with its three sources side by side

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.