api.duoleads.com

https://api.duoleads.com/v1/id/national

Shares a payout wallet with 32 other endpoints — its adoption is attributed from that shared wallet's traffic, not earned exclusively.

Validate a national identity, tax or company registration number against its country's official checksum rule. Covers 23 countries including NL BSN, ES NIF/NIE/CIF, IT codice fiscale, FR SIREN/SIRET, DE Steuer-ID, BE/PL/CZ national numbers, SE/NO/DK/FI personal numbers, BR CPF/CNPJ, AU ABN/TFN, UK NINo, IE PPS, US NPI/EIN. Structure and check digit only — no registry lookup, no personal data stored.

58
reliability

Reliability & health

Uptime and response time from our own unpaid probes, plus the reliability score built from them.

Uptime

100.0% avg
0% 50% 100% Sep 29Oct 1Oct 3Oct 5

Response time

p50 8ms · p95 13ms
0ms 50ms 100ms Sep 29Oct 1Oct 3Oct 5
Data table
Reliability history per time bucket over the last 30 days (daily).
Bucket Uptime Probes Response time
9/29/2026, 12:00:00 AM 100% 8 7ms
9/30/2026, 12:00:00 AM 100% 12 8ms
10/1/2026, 12:00:00 AM 100% 12 9ms
10/2/2026, 12:00:00 AM 100% 12 9ms
10/3/2026, 12:00:00 AM 100% 13 8ms
10/4/2026, 12:00:00 AM 100% 10 7ms
10/5/2026, 12:00:00 AM 100% 6 8ms
58
Composite reliability — the weighted average of the dimensions below, on a 0–100 scale.
Availability
100

How often it was reachable when we probed it (weight 35%).

Latency
100

How quickly it answers when it is up — fast scores high (weight 20%).

Security
100

Whether it serves over working TLS / https (weight 15%).

Transparency
61

Whether the operator disclosed what it does — description, schema, identity (weight 15%).

Activity
1

Observed on-chain payments to this endpoint's wallet — transactions, volume, and distinct paying wallets over the last month (weight 15%; not yet measured when we have not seen its wallet settle).

Confidence 100% — how much probe evidence backs this score. A thin history is flagged, not hidden.

See the scoring methodology for exactly how each number is computed.

Payment

Currencies
USDC
Networks
base
Facilitator
unknown
SDK
unknown

Operator

Company
inferred — unknown
Jurisdiction
—
Registrar
Key-Systems GmbH
Domain registered
2020-10-29
Hosting network
CLOUDFLARENET
Hosting country
—

Operator context is derived from public RDAP/TLS records and unverified. Company and country are only available for endpoints that publish them (an OV/EV TLS certificate or a non-redacted domain record); most endpoints are CDN-fronted and disclose neither.

On-chain activity (base)

138
payments (30d)
6.9
USD volume (30d)
2
paying wallets (30d)

Payments per day

last payment 10/2/2026
0 30 60 Sep 28Sep 29Oct 1Oct 2
Data table
Settled payments per day.
Day Payments Volume (USD) Paying wallets
9/28/2026 49 2.45 1
9/29/2026 55 2.75 1
10/1/2026 33 1.65 1
10/2/2026 1 0.05 1

This payout wallet is shared: figures cover all 33 endpoints paid at it, since payments cannot be attributed to one of them. Only payments settled on chains and facilitators we index.

Linked by wallet — likely same operator

On-chain agent identity and the x402 endpoint that shares its settlement wallet.

https://api.duoleads.com/v1/code/semver x402 endpoint https://api.duoleads.com/v1/time/dst x402 endpoint https://api.duoleads.com/v1/ref/airport x402 endpoint https://api.duoleads.com/v1/num/allocate x402 endpoint https://api.duoleads.com/v1/geo/geohash x402 endpoint https://api.duoleads.com/v1/chain/address x402 endpoint https://api.duoleads.com/v1/ref/country x402 endpoint https://api.duoleads.com/v1/num/stats x402 endpoint https://api.duoleads.com/v1/time/business-days x402 endpoint https://api.duoleads.com/v1/code/url x402 endpoint https://api.duoleads.com/v1/text/transliterate x402 endpoint https://api.duoleads.com/v1/chain/selector x402 endpoint https://api.duoleads.com/v1/ref/nuts x402 endpoint https://api.duoleads.com/v1/code/idn x402 endpoint https://api.duoleads.com/v1/num/radix x402 endpoint https://api.duoleads.com/v1/code/hash x402 endpoint https://api.duoleads.com/v1/geo/polygon x402 endpoint https://api.duoleads.com/v1/text/similarity x402 endpoint https://api.duoleads.com/v1/id/iban x402 endpoint https://api.duoleads.com/v1/id/iban-build x402 endpoint https://api.duoleads.com/v1/code/jwt x402 endpoint https://api.duoleads.com/v1/geo/pluscode x402 endpoint https://api.duoleads.com/v1/text/unicode x402 endpoint https://api.duoleads.com/v1/geo/distance x402 endpoint https://api.duoleads.com/v1/time/rrule x402 endpoint https://api.duoleads.com/v1/id/security x402 endpoint https://api.duoleads.com/v1/time/zone x402 endpoint https://api.duoleads.com/v1/text/slug x402 endpoint https://api.duoleads.com/v1/id/gs1 x402 endpoint https://api.duoleads.com/v1/time/calendar x402 endpoint https://api.duoleads.com/v1/num/words x402 endpoint https://api.duoleads.com/v1/ref/currency x402 endpoint
Response schema
{
  "properties": {
    "data": {
      "description": "valid (boolean), country, kind, normalised (string|null), formatted (string|null), reason (null | length | charset | checksum | structure | reserved_range: a number in a range the issuer reserves or never assigned, e.g. CA SIN starting 0 or 8, UK NINO prefixes BG GB KN NK NT TN ZZ, US EIN unassigned prefixes, NZ IRD outside 10,000,000-150,000,000), algorithm (e.g. elfproef-11, mod-97-10, luhn), derived (object of facts the number encodes, {} when none: birth_date (YYYY-MM-DD) and sex (M|F) for IT cf, SE personnummer, PL pesel, BE rrn, NO fodselsnummer, DK cpr, FI hetu, CZ rc and SK rc; birthplace_code for IT cf; century_assumed (boolean) for SE personnummer, true when a 10-digit form forced the century to be inferred; for BE, NO, DK, FI, CZ and SK the number itself fixes the century (BE by the check digits, NO by the individual number, DK by the sequence digit, FI by the century sign, CZ/SK by the digit count). birth_date is omitted when the encoded date is not a real date, and for NO FH-numbers). FR nir carries no day and no century, so its derived holds sex, birth_year_yy (2 digits), birth_month (1-12, or null for special codes) and department_code instead of birth_date. normalised is the number without separators (SE personnummer keeps a 12-digit input's century and a + sign).",
      "properties": {
        "algorithm": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "derived": {
          "properties": {
            "birth_date": {
              "type": "string"
            },
            "birth_month": {
              "type": [
                "number",
                "null"
              ]
            },
            "birth_year_yy": {
              "type": "string"
            },
            "birthplace_code": {
              "type": "string"
            },
            "century_assumed": {
              "type": "boolean"
            },
            "department_code": {
              "type": "string"
            },
            "sex": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "formatted": {
          "type": [
            "string",
            "null"
          ]
        },
        "kind": {
          "type": "string"
        },
        "normalised": {
          "type": [
            "string",
            "null"
          ]
        },
        "reason": {
          "type": [
            "string",
            "null"
          ]
        },
        "valid": {
          "type": "boolean"
        }
      },
      "required": [
        "valid",
        "country",
        "kind",
        "algorithm",
        "normalised",
        "formatted",
        "reason",
        "derived"
      ],
      "type": "object"
    },
    "meta": {
      "$ref": "#/components/schemas/Meta"
    },
    "ok": {
      "const": true
    },
    "route": {
      "const": "/v1/id/national"
    },
    "version": {
      "const": "1.0.0"
    }
  },
  "required": [
    "ok",
    "route",
    "version",
    "data",
    "meta"
  ],
  "type": "object"
}