# Duo Data Utilities – IBAN Builder

> Duo Data Utilities – IBAN Builder is a paid API for AI agents from api.duoleads.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-09-30).

Constructs a valid IBAN from a country code and domestic account parts (BBAN or named bank/branch/account fields), computing ISO 7064 mod-97-10 check digits and returning both electronic and print formats.

## Facts

- Endpoint: GET https://api.duoleads.com/v1/id/iban-build?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-30
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/duo-data-utilities-iban-builder-7b243143
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_6RhW1pn7eWxrpWkwPOVOA

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability duo-data-utilities-iban-builder-7b243143
```

Example prompt: Build me the IBAN for a Netherlands account with bank code ABNA and account number 0417164300 — give me both the electronic and printable formats.

## When to prefer this

Choose this endpoint when you need to programmatically construct a valid, standards-compliant IBAN from raw domestic account components and do not already have the IBAN string. It is especially useful for onboarding flows, payroll systems, or payment processors that collect local bank details and need to convert them to IBAN format for SEPA or international wire transfers. If you already have an IBAN string and only need to verify it, prefer the companion IBAN validation endpoint instead.

## Known failure modes

- Missing required 'country' parameter returns an error
- Invalid or unsupported country code (not in 89-country SWIFT registry) returns an error
- Providing 'bank' without 'account' (or vice versa) returns a validation error
- BBAN or named parts that don't match the country's registered field widths may produce an error or incorrect padding
- Alphanumeric characters outside permitted IBAN character set return an error
- Named parts (bank/branch/account) used for a country where they don't span the full BBAN return an error

## How this service works

Construct an IBAN from a country code and the domestic account parts, computing the ISO 7064 mod-97-10 check digits. Takes either a single BBAN string or named parts (bank code, branch code, account number); digit fields are left-padded with zeros to the country's registered widths. Returns the IBAN in electronic and print formats with its bank, branch and account parts. Covers the 89 SWIFT registry countries. Named parts work only where they span the whole BBAN; otherwise pass the BBAN.

## Output

Returns a JSON object with the computed IBAN in electronic format (e.g. NL91ABNA0417164300) and print format (e.g. NL91 ABNA 0417 1643 00), plus the ISO 7064 check digits, the BBAN, structured parts (bank, branch, account), country code, IBAN length, and a validity boolean. Also includes metadata such as request ID, computation timestamp, data sources, and a disclaimer.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "country"
     ],
     "properties": {
      "bank": {
       "type": "string",
       "maxLength": 16,
       "description": "Bank code. Requires account."
      },
      "bban": {
       "type": "string",
       "maxLength": 34,
       "description": "The whole domestic account number (BBAN), alphanumeric. Use this or bank plus account."
      },
      "branch": {
       "type": "string",
       "maxLength": 16,
       "description": "Branch code, for countries whose layout has a branch field."
      },
      "account": {
       "type": "string",
       "maxLength": 32,
       "description": "Account number. Requires bank."
      },
      "country": {
       "type": "string",
       "maxLength": 16,
       "description": "ISO 3166-1 alpha-2 country code in the SWIFT IBAN registry, case-insensitive."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "ok",
      "route",
      "version",
      "data",
      "meta"
     ],
     "properties": {
      "ok": {
       "const": true
      },
      "data": {
       "type": "object",
       "required": [
        "iban",
        "iban_print",
        "country",
        "check_digits",
        "bban",
        "parts",
        "length",
        "valid"
       ],
       "properties": {
        "bban": {
         "type": "string"
        },
        "iban": {
         "type": "string"
        },
        "parts": {
         "type": "object",
         "required": [
          "bank",
          "branch",
          "account"
         ],
         "properties": {
          "bank": {
           "type": [
            "string",
            "null"
           ]
          },
          "branch": {
           "type": [
            "string",
            "null"
           ]
          },
          "account": {
           "type": [
            "string",
            "null"
           ]
          }
 
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ok": true,
  "data": {
   "bban": "ABNA0417164300",
   "iban": "NL91ABNA0417164300",
   "parts": {
    "bank": "ABNA",
    "branch": null,
    "account": "0417164300"
   },
   "valid": true,
   "length": 18,
   "country": "NL",
   "iban_print": "NL91 ABNA 0417 1643 00",
   "check_digits": "91"
  },
  "meta": {
   "sources": [
    {
     "id": "iban-registry",
     "licence": "MIT",
     "version": "ibantools 4.5.4, field layout schwifty 2026.7.3",
     "published": "2026-04-10",
     "attribution": "IBAN registry via ibantools (MIT); field offsets via schwifty (MIT); underlying data: SWIFT IBAN Registry, public"
    }
   ],
   "price_usd": "0.05",
   "disclaimer": "Factual output of a deterministic computation over public data. Provided as is, with no warranty of accuracy, completeness or availability. Not investment, financial, legal, tax, medical or any other professional advice, and not a recommendation. Verify before relying on it. Terms: https://api.duoleads.com/terms",
   "request_id": "01K6B7Q4ZC8H3F2M9WXR5TYN0D",
   "computed_at": "2026-09-28T12:00:00.000Z",
   "deterministic": true
  },
  "route": "/v1/id/iban-build",
  "version": "1.0.0"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/duo-data-utilities-iban-builder-7b243143/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.duoleads.com](https://www.zero.xyz/host/api.duoleads.com/llms.txt)
