Retrieving the Printed Name on a Check via QuickBooks SDK
Learn how to extract the name printed on checks using the QuickBooks SDK, including how to handle Vendor, Employee, Customer, and Other payees.
QuickBooks users who need to export check data for fraud-prevention purposes often encounter a puzzling gap: the PayeeEntityRef field in the SDK returns the entity name, but not necessarily the name that prints on the check. A recent community discussion sheds light on how to bridge that gap.
The Problem
A developer working with the QuickBooks SDK needed to export checks in a format that a bank could use to verify the name on the check before clearing it. The bank’s fraud‑prevention service required the exact printed name, not just the QuickBooks entity name. For vendors, QuickBooks already stores a separate NameOnCheck field, but the SDK’s PayeeEntityRef only points to the general entity. The question was: how do you reliably get the name that actually appears on the printed check?
The SDK’s PayeeEntityRef
When you query checks (including Bill Payment‑Checks) via the SDK, each check contains a PayeeEntityRef object with a ListID and FullName property. This reference tells you which record the check was written to, but it does not say whether that record is a Vendor, Customer, Employee, or an “Other Name” entry. Moreover, the entity’s display name (FullName) may differ from the name printed on the check. For example, a vendor might be named “ABC Supplies” internally but have a NameOnCheck of “ABC Supply Co.” because the check must match the bank’s recorded payee.
Resolving the Printed Name
The accepted solution involves a two‑step process. First, query all checks for the relevant bank account. For each check, retrieve the ListID from PayeeEntityRef. Then, query each of the four entity lists — Vendor, Employee, Customer, and Other Name — to find which list contains that ListID. There is no direct “type” indicator in the check object, so you must check all four.
Once you know the entity type, the logic for retrieving the printed name differs:
If the payee is a Vendor or Employee: Use the
NameOnCheckfield from that entity record. This field is specifically designed to hold the name that prints on the check. However, note that ifNameOnCheckwas modified after the check was printed, the value you retrieve may not match what actually appeared on the check at the time of printing. QuickBooks does not store a historical print name — it only holds the current value.If the payee is a Customer or Other Name: QuickBooks does not have a dedicated
NameOnCheckfield for these entity types. Instead, the printed name is derived from the entity’s address‑related fields. For Customers, the software first checks theCompanyNamefield. If that is empty, it falls back to theFirstName,MiddleName, andLastNamefields (if any are populated). If those are also empty, it uses the plainNamefield — notFullName, just the short name. The same logic is presumed to apply to “Other Name” entities, though community reports are limited because many firms avoid using that list.
Caveats for Vendors and Employees
The biggest caveat for Vendor/Employee payees is the timing issue. If you change a vendor’s NameOnCheck after a check was written, the SDK‑retrieved value will be the new name, not what was printed on the historical check. For customers who need a perfect match for fraud‑verification files, you may need to advise them that only checks printed after the NameOnCheck was last updated can be reliably exported.
Handling Customers and Other Names
For Customer payees, the same timing concern applies to changes in CompanyName, FirstName, etc. But there is an additional subtlety: the SDK’s PayeeEntityRef provides the entity’s FullName, which in QuickBooks Desktop is usually the hierarchical display name (e.g., “Customer:John:John Doe”). That is not the printed name. You must ignore FullName and work through the field hierarchy described above.
Community participants noted that the “Other Name” list is rarely used in practice, so the Customer logic is the one you will most often need for non‑vendor/non‑employee payees.
Conclusion
Retrieving the true printed name on a check through the QuickBooks SDK is possible, but it requires multiple queries and an understanding of how each entity type stores its print‑ready name. The accepted approach — find the entity list by ListID, then apply the appropriate field logic — gives developers a workable path. Be sure to alert your clients that historical checks may not reflect later changes to name fields, especially for vendors. For deeper dives into QuickBooks SDK patterns and community solutions, the discussion threads continue to evolve as users share their experiences.