AML screening API for sanctions, PEP, and watchlists
The Naiza AML screening API checks a person or a company against sanctions lists, politically exposed persons (PEP), and other watchlists in a single request. It returns a decision, the lists that matched, and the evidence behind each match, so your product knows whether to continue, hold for review, or stop.
What a single screening call does
You send a name and whatever supporting details you already hold. Naiza cleans the name, builds its spelling variants, and compares it with more than 1,100 global sources. Every candidate is scored on how closely the name matches and whether the date of birth, nationality, and entity type agree.
The response tells you what to do next. Most customers come back AUTO_CLEAR and continue without anyone looking at them. The few that resemble a listed party come back REVIEW with the matched record attached, so an analyst can compare them side by side.
- Inputs: legal name, entity type (individual or organization), date of birth, nationality, aliases, and document numbers when you have them.
- Outputs: a decision (AUTO_CLEAR, REVIEW, or CONFIRMED), the lists that were hit, and a score and classification for each candidate match.
- Every call returns a screening ID. Store it on the customer record so support and compliance can find the result later.
Example request
Screen at the moment you have a legal name and a stable customer ID. Date of birth and nationality are optional, but they remove most of the noise on common names.
curl -X POST https://api.naiza.ai/api/v1/aml/screen \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "inputName": "Mohammed Abdullah Ahmed", "externalId": "cust_204118", "entityType": "INDIVIDUAL", "inputDob": "1987-03-09", "inputNationality": "SA" }'
Example response
A REVIEW result carries the candidate record, the source list, and a score. Here the input was written as "Mohammed Abdullah Ahmed" and the list entry as "Muhammad Abdallah Ahmad". Exact matching would have missed it.
{ "id": "scr_abc123", "externalId": "cust_204118", "decision": "REVIEW", "listsHit": ["OFAC_SDN"], "matches": [ { "watchlistEntityId": "we_987", "score": 92, "classification": "STRONG", "matchedName": "Muhammad Abdallah Ahmad", "source": "OFAC_SDN" } ] }
Lists and sources covered
One request runs against every category below. You do not pick lists per call or maintain list files yourself.
| Category | What it covers | Why teams screen it |
|---|---|---|
| Sanctions | UN Security Council consolidated list, OFAC SDN and non-SDN lists, EU and UK sanctions, and other national regimes. | A sanctioned party cannot be onboarded or paid. Foreign lists matter for any business that touches US dollars, card schemes, or international partners. |
| Regional and domestic lists | GCC and Saudi domestic designations alongside the international lists. | Saudi businesses are expected to screen local designations, not only the global ones. |
| Politically exposed persons | Heads of state, ministers, senior officials, judges, senior military officers, and executives of state-owned companies. | A PEP is not blocked by default. The match triggers enhanced due diligence and closer monitoring. |
| Relatives and close associates | Family members and known business associates of PEPs. | Proceeds of corruption often move through people close to the official rather than the official. |
| Watchlists and adverse media | Enforcement actions, wanted lists, and negative news tied to financial crime. | Adds context a sanctions list does not have, such as fraud or corruption reporting. |
Arabic and transliterated names
Arabic names appear in several Latin spellings across passports, bank records, and sanctions entries, so one person can look like three different people. Naiza matches across Arabic script and the common Latin spellings, so you do not need to generate variants yourself.
- محمد is written Mohammed, Muhammad, Mohamad, or Mohamed.
- عبدالله is written Abdullah, Abdallah, or Abd Allah, with or without a space.
- The Al- prefix appears as Al-, Al, El, or not at all.
- Bin and Ibn, and the order of given name, father's name, and family name, change between documents.
Supporting fields do the rest. A strong name match with a different date of birth and nationality is a weak candidate. The same name with matching identifiers goes to the top of the review queue.
Where to call it in your product
Screening works best as a step in the flow, the same way you treat a payment authorization. Call it from your server at these points:
- Onboarding, once KYC gives you a verified legal name.
- Before the first payout or withdrawal.
- When a customer adds a new beneficiary or counterparty.
- When a customer changes their legal name or nationality.
- Business onboarding, for the company and each beneficial owner.
What to do with each outcome
Decide the product behavior for each result before you go live. Analysts should only see the cases that need a person.
| Decision | Meaning | What your product does |
|---|---|---|
| AUTO_CLEAR | No credible match. | Continue. Do not add a waiting screen for a clean result. |
| REVIEW | Possible match that needs a person to compare records. | Hold the sensitive action, such as activation or payout. A case opens in the Naiza dashboard with the evidence attached. |
| CONFIRMED | The match has been confirmed. | Keep the customer on hold and escalate to compliance. |
Ongoing monitoring when lists change
A clean result at signup only reflects the lists on that day. Naiza re-screens your existing customers automatically when the lists update. New possible matches open cases and reach your systems through webhooks, so a designation published tonight surfaces against a customer you onboarded last year.
Screening also connects to Naiza transaction monitoring. A payment to a counterparty who later matches a list shows up in the same case history as the original screening.
Run it in shadow mode first
You can call the API for weeks before letting it hold anyone. Store the result, keep the customer journey unchanged, and look at the numbers: how many REVIEW results a day, how many turn out to be real, and how long each one takes to clear. Switch to enforcing once the queue fits the team you have.
Frequently asked questions
Answers about screening, risk signals, and Naiza integration.
What is an AML screening API?
An AML screening API checks a name against sanctions, PEP, and other watchlists from inside your product. Your server sends the customer details, and the API returns a decision with the matched records, so screening runs automatically at onboarding and before payments instead of through a manual portal.
Which lists does the Naiza AML screening API cover?
One request covers more than 1,100 global sources: UN, OFAC, EU, and UK sanctions, regional and Saudi domestic designations, politically exposed persons with their relatives and close associates, enforcement watchlists, and adverse media.
How does it handle Arabic names?
Naiza matches across Arabic script and the common Latin transliterations, including Al- prefixes, Bin and Ibn, and changes in name order. Date of birth, nationality, and entity type then separate a real match from a namesake.
Does Naiza re-screen customers after onboarding?
Yes. Existing customers are re-screened automatically when the lists update. New possible matches open review cases and are delivered through webhooks.
Can we test it without holding customers?
Yes. Many teams start in shadow mode: they call the API on every signup and store the result without changing the customer journey, then switch to holding REVIEW results once they know their daily volume.
Where is screening data stored?
Naiza is hosted in Saudi Arabia. Screening requests, results, and case data are stored and processed in the Kingdom.