P0 vendor due-diligence facts

Facts about how P0 works, not legal advice, not a compliance statement, not a certification.

Operator: dev Mike. P0 is run by a self-developing ecosystem of AI agents on behalf of P0's dev Mike. Who runs P0.

Products, sources and refusals

A route whose data is older than its limit answers 503 with charged:false before any payment is taken; the limit for each route is in its refused_before_payment list. On the sanctions products the 48-hour limit applies to the OFAC SDN check time (checked_at). The other lists are served from their last good copy; each answer states their date and fresh per list in lists[], and they are not refused when older.

/sanctions/check

Screens a wallet address (exact match) or a Latin-script name (scored match) against the sanctions lists below.

Sources and licence notices

  • OFAC SDN: U.S. government work (17 U.S.C. 105).
  • UK Sanctions List: Contains public sector information licensed under the Open Government Licence v3.0.
  • EU Financial Sanctions: Source: European Commission, Financial Sanctions Files, CC BY 4.0; indexed and normalised by P0.
  • Canada Consolidated Autonomous Sanctions: Contains information licensed under the Open Government Licence - Canada.
  • US Consolidated Screening List: U.S. government work (trade.gov).

Limits

  • The UK and Canadian lists are screened for organisations, vessels and wallet addresses only: their entries for individuals are not included because their open licences do not cover personal data, and a wallet address in such an entry is matched without the person's details.
  • Names must be Latin script; transliterate other scripts first.
  • The UN Security Council consolidated list is not covered (UN Security Council consolidated list).

Refused before payment (charged: false)

  • 503: the OFAC SDN check time of the index (checked_at) is older than 48 hours, or the index is not loaded; the other lists are not refused for age: each answer states their date and fresh in lists[], and fresh:false means the last good copy (sanctions.js STALE_HOURS)
  • 422: a name made only of words that are very common in the SDN list (too_generic) (sanctions.js precheck)
  • 400: the address or name is malformed

/sanctions/check/batch

The same screening for up to 25 addresses in one POST body (MAX_ADDRESSES), so no name or address travels in a URL.

Sources and licence notices

  • OFAC SDN: U.S. government work (17 U.S.C. 105).
  • UK Sanctions List: Contains public sector information licensed under the Open Government Licence v3.0.
  • EU Financial Sanctions: Source: European Commission, Financial Sanctions Files, CC BY 4.0; indexed and normalised by P0.
  • Canada Consolidated Autonomous Sanctions: Contains information licensed under the Open Government Licence - Canada.
  • US Consolidated Screening List: U.S. government work (trade.gov).

Limits

  • Addresses only.

Refused before payment (charged: false)

  • 503: same freshness rule as /sanctions/check (48 hours) (sanctions.js STALE_HOURS via SANCT.ready())
  • 400: the body is not valid, too large (20000 bytes at most) or has more than 25 addresses (sanctions_batch.js MAX_BODY_BYTES, MAX_ADDRESSES)

/sanctions/changes

What was added, removed or amended between successive list files P0 compared, with the list version date of each change.

Sources and licence notices

  • OFAC SDN: U.S. government work (17 U.S.C. 105).
  • UK Sanctions List: Contains public sector information licensed under the Open Government Licence v3.0.
  • EU Financial Sanctions: Source: European Commission, Financial Sanctions Files, CC BY 4.0; indexed and normalised by P0.
  • Canada Consolidated Autonomous Sanctions: Contains information licensed under the Open Government Licence - Canada.
  • US Consolidated Screening List: U.S. government work (trade.gov).

Limits

  • History kept: 90 days (RETENTION_DAYS).
  • Not covered: UN Security Council consolidated list.

Refused before payment (charged: false)

  • 503: the change feed was not refreshed in the last 48 hours (sanctions_changes.js STALE_HOURS)
  • 400: since is missing, not a real date, in the future, or more than 366 days back

/check/counterparty

One call for a company name: sanctions screening, GLEIF LEI record, and US bank status (FDIC), each section with its own status, source and as-of.

Sources and licence notices

  • Sanctions lists as for /sanctions/check: see above
  • GLEIF Global LEI Index: LEI reference data: GLEIF (Global Legal Entity Identifier Foundation), api.gleif.org, CC0 1.0. This service is not provided, supported or endorsed by GLEIF or any LOU.
  • FDIC BankFind Suite API: Source: Federal Deposit Insurance Corporation (FDIC), BankFind Suite API (https://api.fdic.gov/banks/), free at source: https://banks.data.fdic.gov/bankfind-suite/. A work of the U.S. Government (17 U.S.C. 105); not endorsed by the FDIC. Values as published, total assets converted from thousands of dollars.

Limits

  • Name at most 100 characters (MAX_NAME).
  • The answer is not a clearance.

Refused before payment (charged: false)

  • 503: the sanctions core is missing or its OFAC SDN check time is older than 48 hours; the other sections may come back marked unavailable (check_bundles.js header comment, sanctions.js STALE_HOURS)
  • 422: the name is made only of words that are very common in the SDN list (too_generic) (check_bundles.js sanctionsSection via sanctions.js precheck)
  • 400: the name is missing or too long

/check/payee

For a wallet that is about to be paid: sanctions match, wallet risk label, whether it is a listed x402 seller, and with url= whether the endpoint asks for payment to that address.

Sources and licence notices

  • OFAC SDN: U.S. government work (17 U.S.C. 105).
  • UK Sanctions List: Contains public sector information licensed under the Open Government Licence v3.0.
  • EU Financial Sanctions: Source: European Commission, Financial Sanctions Files, CC BY 4.0; indexed and normalised by P0.
  • Canada Consolidated Autonomous Sanctions: Contains information licensed under the Open Government Licence - Canada.
  • US Consolidated Screening List: U.S. government work (trade.gov).

Limits

  • Recommendation follows fixed written rules (RULES), not an opinion.

Refused before payment (charged: false)

  • 503: the sanctions core is missing or its OFAC SDN check time is older than 48 hours (payee_check.js header, sanctions.js STALE_HOURS)
  • 400: the address or url is malformed or not allowed

/lei/changes

Changes in GLEIF LEI records since a date.

Sources and licence notices

  • GLEIF Global LEI Index: LEI reference data: GLEIF (Global Legal Entity Identifier Foundation), api.gleif.org, CC0 1.0. This service is not provided, supported or endorsed by GLEIF or any LOU.

Limits

  • since at most 400 days back (MAX_DAYS).
  • Answers may be served from a shared copy up to 900 seconds old (CACHE_TTL_S).

Refused before payment (charged: false)

  • 400: since is missing, in the future or more than 400 days back, or country, status, limit or page is malformed (lei_changes.js MAX_DAYS)

/bank/us

US bank status from FDIC BankFind: certificate, assets, offices, history events.

Sources and licence notices

  • FDIC BankFind Suite API: Source: Federal Deposit Insurance Corporation (FDIC), BankFind Suite API (https://api.fdic.gov/banks/), free at source: https://banks.data.fdic.gov/bankfind-suite/. A work of the U.S. Government (17 U.S.C. 105); not endorsed by the FDIC. Values as published, total assets converted from thousands of dollars.

Limits

  • FDIC data is published daily or quarterly; answers may come from a copy up to 6 hours old (TTL_S).

Refused before payment (charged: false)

  • 400: name or cert is missing, both are given, or one is malformed

/sec/filings

SEC EDGAR filings and XBRL facts by ticker or CIK.

Sources and licence notices

  • SEC EDGAR (data.sec.gov submissions and XBRL company concepts), U.S. Securities and Exchange Commission: Public data of the U.S. Securities and Exchange Commission

Limits

  • A fact whose latest period ended more than 548 days ago is marked stale (STALE_DAYS).

Refused before payment (charged: false)

  • 400: ticker or cik is missing, both are given, or one is malformed

/eu/fx

ECB euro reference rates (also /eu/fx/history).

Sources and licence notices

  • ECB euro foreign exchange reference rates: ECB data is available free of charge on the ECB website.

Limits

  • Marked stale after 2 business days (STALE_BUSINESS_DAYS).

Refused before payment (charged: false)

  • 503: the newest rate is more than 5 business days old (eu_fx.js HARD_STALE_BUSINESS_DAYS)

What is logged and kept

Security

Uptime and changes

Payment

Not available

Mapping to published frameworks

Quoted words are the documents' own, read by P0 on 07.11.2026. The map shows where this page answers a topic or that P0 does not publish it. It does not say that P0 meets any requirement.

JSON · Markdown