Skip to main content
Under the Bank Secrecy Act, a money services business must register with the Financial Crimes Enforcement Network, the US Treasury’s financial intelligence unit, and renew every two years. Banks check the list before serving one. FinCEN publishes every registration it holds, including those of businesses located abroad that serve US customers. About 33,000 filings from some 32,000 businesses, received since January 2024: who they are, where they are, the services they registered for, the states where they operate, whether they operate abroad, their branches and when the registration was signed and received, and the MSB registration number and registration letter of each filing. Brought up to date as FinCEN updates the list, weekly.
The whole source, organized and ready to query: every endpoint on this page answers in milliseconds. Every response carries as_of: how current the data is. How datasets work.

Search registrations

POST /us/fincen/msb-registrations-search/v1 Dataset Searches every registration by any combination of name, service, place and filing date.
Returns as_of (how current the data is), the applied filters, total (matches across every page), page, per_page, total_pages, count and registrations[], by legal name. Every registration carries id (the key), registrant_key (the same on every filing of one business), legal_name, dba_name, street_address, city, state, zip_code, country (for a business located abroad), activities[] (the table above), activity_codes[] (FinCEN’s codes), states_of_activity[] (two-letter codes), activity_scope (FinCEN’s flag: A all states and territories, B all states, C all territories, D foreign, or a combination), operates_abroad, branches, auth_sign_date, received_date, registration_number (FinCEN’s 14-digit MSB registration number), registration_type (e.g. Initial Registration, Renewal), document_url (our copy of the filing’s registration letter, a PDF) and source_document_url (FinCEN’s link to it when it was read). Empty fields are null. A row is one filing: a business that renewed its registration appears once per filing, and registrant_key lists them together. FinCEN cuts legal names at 50 characters. The registration number and type come from the filing’s registration letter, which is read once after the filing first appears, so a filing received in the last few days may not have them yet. FinCEN’s own link to a letter changes over time; document_url does not.
In FinCEN’s words: “The inclusion of a business in the MSB Registrant Search is not a recommendation, certification of legitimacy, or endorsement of the business by any government agency.” The list reflects only what each registrant told FinCEN, not every registered business is on it, and registration is not a license: money services businesses are licensed by the states.

One registration

POST /us/fincen/msb-registration/v1 Dataset Resolves one registration by its id and returns the full record.
Returns found, id, as_of and registration (null when not found). Every registration carries id (the key), registrant_key (the same on every filing of one business), legal_name, dba_name, street_address, city, state, zip_code, country (for a business located abroad), activities[] (the table above), activity_codes[] (FinCEN’s codes), states_of_activity[] (two-letter codes), activity_scope (FinCEN’s flag: A all states and territories, B all states, C all territories, D foreign, or a combination), operates_abroad, branches, auth_sign_date, received_date, registration_number (FinCEN’s 14-digit MSB registration number), registration_type (e.g. Initial Registration, Renewal), document_url (our copy of the filing’s registration letter, a PDF) and source_document_url (FinCEN’s link to it when it was read). Empty fields are null. A row is one filing: a business that renewed its registration appears once per filing, and registrant_key lists them together. FinCEN cuts legal names at 50 characters. The registration number and type come from the filing’s registration letter, which is read once after the filing first appears, so a filing received in the last few days may not have them yet. FinCEN’s own link to a letter changes over time; document_url does not.
An id the list does not carry returns found: false with HTTP 200, not an error. That is also the answer for a filing that has left the list.

Full reference

Schemas, all response fields, and an interactive playground.