{
  "schema_version": 1,
  "api_version": "2.0.0",
  "fixture_only": true,
  "directory_edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
  "notice": "Fixed public and synthetic integration examples. Never use these details for payments. A synthetic checksum-valid number is not proof that an account is unassigned. Directory facts are pinned fixtures, not a promise of future live results. X-Bank-Fixture is a local mock selector, not a production API feature.",
  "cases": [
    {
      "id": "iban_valid",
      "title": "IBAN with an unsupported national check",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "DE89370400440532013000",
          "deep": true
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "X-Bank-Edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
          "X-Bank-Match": "bank"
        },
        "body": {
          "iban": "DE89370400440532013000",
          "valid": true,
          "country": "DE",
          "formatted": "DE89 3704 0044 0532 0130 00",
          "bank": "37040044",
          "bank_name": "Commerzbank",
          "bic": "COBADEFFXXX",
          "checks": {
            "input": "passed",
            "country": "passed",
            "length": "passed",
            "structure": "passed",
            "checksum": "passed",
            "national": "not_supported"
          },
          "issues": [],
          "deep": {
            "checksum": "89",
            "branch": null,
            "account": "0532013000",
            "directory": {
              "edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
              "country": "DE",
              "match": "bank"
            }
          }
        }
      }
    },
    {
      "id": "iban_formatted",
      "title": "Pasted grouping and lowercase",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "de89-3704 0044 0532 0130 00",
          "deep": true
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "X-Bank-Edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
          "X-Bank-Match": "bank"
        },
        "body": {
          "iban": "DE89370400440532013000",
          "valid": true,
          "country": "DE",
          "formatted": "DE89 3704 0044 0532 0130 00",
          "bank": "37040044",
          "bank_name": "Commerzbank",
          "bic": "COBADEFFXXX",
          "checks": {
            "input": "passed",
            "country": "passed",
            "length": "passed",
            "structure": "passed",
            "checksum": "passed",
            "national": "not_supported"
          },
          "issues": [],
          "deep": {
            "checksum": "89",
            "branch": null,
            "account": "0532013000",
            "directory": {
              "edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
              "country": "DE",
              "match": "bank"
            }
          }
        }
      }
    },
    {
      "id": "iban_forbidden",
      "title": "Invisible character must not be silently repaired",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "DE89​370400440532013000"
        }
      },
      "response": {
        "status": 200,
        "headers": {},
        "body": {
          "iban": "DE89​370400440532013000",
          "valid": false,
          "country": null,
          "formatted": null,
          "bank": null,
          "bank_name": null,
          "bic": null,
          "checks": {
            "input": "failed",
            "country": "not_checked",
            "length": "not_checked",
            "structure": "not_checked",
            "checksum": "not_checked",
            "national": "not_checked"
          },
          "issues": [
            {
              "field": "iban",
              "code": "invalid_characters",
              "message": "Use letters A-Z, digits 0-9, spaces or hyphens."
            }
          ]
        }
      }
    },
    {
      "id": "iban_unsupported",
      "title": "Unsupported country prefix",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "US89370400440532013000"
        }
      },
      "response": {
        "status": 200,
        "headers": {},
        "body": {
          "iban": "US89370400440532013000",
          "valid": false,
          "country": null,
          "formatted": null,
          "bank": null,
          "bank_name": null,
          "bic": null,
          "checks": {
            "input": "passed",
            "country": "failed",
            "length": "not_checked",
            "structure": "not_checked",
            "checksum": "not_checked",
            "national": "not_checked"
          },
          "issues": [
            {
              "field": "iban",
              "code": "unsupported_country",
              "message": "This country prefix is not supported."
            }
          ]
        }
      }
    },
    {
      "id": "iban_bad_checksum",
      "title": "Bad ISO checksum with identifiable bank",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "DE89370400440532013001",
          "deep": true
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "X-Bank-Edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
          "X-Bank-Match": "bank"
        },
        "body": {
          "iban": "DE89370400440532013001",
          "valid": false,
          "country": "DE",
          "formatted": null,
          "bank": "37040044",
          "bank_name": "Commerzbank",
          "bic": "COBADEFFXXX",
          "checks": {
            "input": "passed",
            "country": "passed",
            "length": "passed",
            "structure": "passed",
            "checksum": "failed",
            "national": "not_checked"
          },
          "issues": [
            {
              "field": "iban",
              "code": "invalid_checksum",
              "message": "The IBAN check digits do not match."
            }
          ],
          "deep": {
            "checksum": "89",
            "branch": null,
            "account": "0532013001",
            "directory": {
              "edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
              "country": "DE",
              "match": "bank"
            }
          }
        }
      }
    },
    {
      "id": "iban_bad_national",
      "title": "Italian CIN fails while ISO checksum passes",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "IT65A0542811101000000123456",
          "deep": true
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "X-Bank-Edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
          "X-Bank-Match": "none"
        },
        "body": {
          "iban": "IT65A0542811101000000123456",
          "valid": false,
          "country": "IT",
          "formatted": null,
          "bank": "05428",
          "bank_name": null,
          "bic": null,
          "checks": {
            "input": "passed",
            "country": "passed",
            "length": "passed",
            "structure": "passed",
            "checksum": "passed",
            "national": "failed"
          },
          "issues": [
            {
              "field": "iban",
              "code": "invalid_national_checksum",
              "message": "The national bank or account check does not match."
            }
          ],
          "deep": {
            "checksum": "65",
            "branch": "11101",
            "account": "000000123456",
            "directory": {
              "edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
              "country": "IT",
              "match": "none"
            }
          }
        }
      }
    },
    {
      "id": "iban_unknown_bank",
      "title": "Valid checksum with no matching bank record",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "DE93999999990000000001",
          "deep": true
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "X-Bank-Edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
          "X-Bank-Match": "none"
        },
        "body": {
          "iban": "DE93999999990000000001",
          "valid": true,
          "country": "DE",
          "formatted": "DE93 9999 9999 0000 0000 01",
          "bank": "99999999",
          "bank_name": null,
          "bic": null,
          "checks": {
            "input": "passed",
            "country": "passed",
            "length": "passed",
            "structure": "passed",
            "checksum": "passed",
            "national": "not_supported"
          },
          "issues": [],
          "deep": {
            "checksum": "93",
            "branch": null,
            "account": "0000000001",
            "directory": {
              "edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
              "country": "DE",
              "match": "none"
            }
          }
        }
      }
    },
    {
      "id": "iban_bic_unavailable",
      "title": "Known name with unavailable BIC",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "MT84TRPE00000000000000000000000",
          "deep": true
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "X-Bank-Edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
          "X-Bank-Match": "bank"
        },
        "body": {
          "iban": "MT84TRPE00000000000000000000000",
          "valid": true,
          "country": "MT",
          "formatted": "MT84 TRPE 0000 0000 0000 0000 0000 000",
          "bank": "TRPE",
          "bank_name": "Truevo Payments Ltd.",
          "bic": null,
          "checks": {
            "input": "passed",
            "country": "passed",
            "length": "passed",
            "structure": "passed",
            "checksum": "passed",
            "national": "not_supported"
          },
          "issues": [],
          "deep": {
            "checksum": "84",
            "branch": "00000",
            "account": "000000000000000000",
            "directory": {
              "edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
              "country": "MT",
              "match": "bank"
            }
          }
        }
      }
    },
    {
      "id": "iban_branch",
      "title": "Exact branch match",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "GB56HBUK40116200000001",
          "deep": true
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "X-Bank-Edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
          "X-Bank-Match": "branch"
        },
        "body": {
          "iban": "GB56HBUK40116200000001",
          "valid": true,
          "country": "GB",
          "formatted": "GB56 HBUK 4011 6200 0000 01",
          "bank": "HBUK",
          "bank_name": "HSBC UK Bank plc",
          "bic": "HBUKGB4B",
          "checks": {
            "input": "passed",
            "country": "passed",
            "length": "passed",
            "structure": "passed",
            "checksum": "passed",
            "national": "not_supported"
          },
          "issues": [],
          "deep": {
            "checksum": "56",
            "branch": "401162",
            "account": "00000001",
            "directory": {
              "edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
              "country": "GB",
              "match": "branch"
            }
          }
        }
      }
    },
    {
      "id": "iban_other_branch",
      "title": "Another branch must not borrow a BIC",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "GB95HBUK99999900000001",
          "deep": true
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "X-Bank-Edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
          "X-Bank-Match": "bank"
        },
        "body": {
          "iban": "GB95HBUK99999900000001",
          "valid": true,
          "country": "GB",
          "formatted": "GB95 HBUK 9999 9900 0000 01",
          "bank": "HBUK",
          "bank_name": "HSBC UK Bank plc",
          "bic": null,
          "checks": {
            "input": "passed",
            "country": "passed",
            "length": "passed",
            "structure": "passed",
            "checksum": "passed",
            "national": "not_supported"
          },
          "issues": [],
          "deep": {
            "checksum": "95",
            "branch": "999999",
            "account": "00000001",
            "directory": {
              "edition": "b641e745a23e77e29fc3074931b9df864d3f57386ddd23268373a74d2c668f3b",
              "country": "GB",
              "match": "bank"
            }
          }
        }
      }
    },
    {
      "id": "us_ach_valid",
      "title": "Leading zero and case preservation",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "format": "us_ach",
          "country": "US",
          "routing": "021000021",
          "account": "000a12-34"
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "Link": "<https://parseapi.com/legal/attribution#routing-numbers>; rel=\"describedby\"; title=\"Routing reference attribution\""
        },
        "body": {
          "format": "us_ach",
          "country": "US",
          "routing": "021000021",
          "account": "000a12-34",
          "valid": true,
          "bank_name": "JPMORGAN CHASE BANK, NATIONAL ASSOCIATION",
          "checks": {
            "routing_format": "passed",
            "routing_checksum": "passed",
            "account_format": "passed",
            "account_checksum": "not_supported"
          },
          "issues": []
        }
      }
    },
    {
      "id": "us_ach_invalid",
      "title": "Field-specific routing and account failures",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "format": "us_ach",
          "country": "US",
          "routing": "021000022",
          "account": "123456789012345678"
        }
      },
      "response": {
        "status": 200,
        "headers": {},
        "body": {
          "format": "us_ach",
          "country": "US",
          "routing": "021000022",
          "account": "123456789012345678",
          "valid": false,
          "bank_name": null,
          "checks": {
            "routing_format": "passed",
            "routing_checksum": "failed",
            "account_format": "failed",
            "account_checksum": "not_supported"
          },
          "issues": [
            {
              "field": "routing",
              "code": "invalid_routing_checksum",
              "message": "The routing-number checksum does not match."
            },
            {
              "field": "account",
              "code": "invalid_account_length",
              "message": "Use at most 17 account characters, excluding spaces and including hyphens."
            }
          ]
        }
      }
    },
    {
      "id": "directory_unavailable",
      "title": "Directory outage is not a negative account verdict",
      "request": {
        "method": "POST",
        "path": "/bank",
        "body": {
          "iban": "DE89370400440532013000"
        },
        "headers": {
          "X-Bank-Fixture": "directory_unavailable"
        }
      },
      "response": {
        "status": 503,
        "headers": {},
        "body": {
          "code": "service_unavailable",
          "message": "Bank directory temporarily unavailable",
          "request_id": "bank-fixture",
          "docs": "https://parseapi.com/docs#service_unavailable"
        }
      }
    }
  ]
}
