DEV Community

Oleksandr
Oleksandr

Posted on

I built 100 finance validators with one command

Two days ago I shipped 100 document parsers with one command. Yesterday I did 100 finance validators. Same playbook.

The pattern

  1. Build a small API (Cloudflare Worker)
  2. Write a JSON list of 100 keywords
  3. Template + generator script → 100 SEO pages
  4. Sitemap + IndexNow → 527 URLs pinged to Bing/Yandex
  5. Landing page with a live demo
  6. Pricing via Suby (crypto + card)

This works because:

  • Each of the 100 pages targets a specific search query
  • Each page has unique content (own examples, own FAQ, own schema)
  • Zero cost per page — Cloudflare Workers free tier handles everything
  • Total build time: ~2 hours

What I built this time

Finance Tools — 5 validators behind one API:

  • IBAN (80+ countries, mod-97 checksum)
  • EU VAT (format for 28 countries)
  • SWIFT/BIC (bank + country + location + branch)
  • LEI (ISO 17442, mod-97-10)
  • Credit cards (Luhn + brand detection: Visa, Mastercard, Amex, Discover, JCB, Diners, Maestro, UnionPay)

Live landing: https://boring-saas-infra.pages.dev/finance-tools

Try it (no signup):

curl "https://finance-validators.boring-saas-infra.workers.dev/iban?value=DE89370400440532013000"
Enter fullscreen mode Exit fullscreen mode

→

{
  "valid": true,
  "iban": "DE89370400440532013000",
  "country_code": "DE",
  "check_digits": "89",
  "bban": "370400440532013000",
  "length": 22
}
Enter fullscreen mode Exit fullscreen mode

The 100 pages

Each of these has its own page at /validate/{slug}:

  • 30 IBAN validators — one per country (Germany, France, UK, Spain, Italy, Netherlands, Belgium, Switzerland, Poland, …)
  • 20 VAT validators — Germany, France, UK, Italy, Spain, Netherlands, Belgium, Austria, Poland, …
  • 20 SWIFT validators — USA, UK, Germany, France, Switzerland, Japan, China, Singapore, Hong Kong, …
  • 15 LEI validators — bank, corporation, fund, insurance, broker, government, nonprofit, …
  • 15 card validators — Visa, Mastercard, Amex, Discover, JCB, Diners, Maestro, UnionPay, Luhn, …

Example pages:

Each page has:

  • Unique <title> + meta description
  • Its own sample input and sample JSON output
  • cURL example customized to that validator
  • 5 FAQ items
  • Schema.org Product + BreadcrumbList + FAQPage
  • Working live demo hitting the real API
  • Related validator chips

The generator

products-finance.json (excerpt):

[
  {"slug":"validate-iban","name":"IBAN","type":"iban","category":"IBAN"},
  {"slug":"validate-iban-germany","name":"German IBAN","type":"iban","category":"IBAN","country":"DE","sample":"DE89370400440532013000"},
  {"slug":"validate-vat-germany","name":"German VAT","type":"vat","category":"VAT","country":"DE","sample":"DE123456789"},
  {"slug":"validate-visa","name":"Visa","type":"card","category":"Card","sample":"4111111111111111"}
]
Enter fullscreen mode Exit fullscreen mode

generator-finance.cjs does the rest:

node generator-finance.cjs
Enter fullscreen mode Exit fullscreen mode

→

Generated 100 pages in output/validate/
sitemap.xml updated — 527 URLs total
llms.txt updated — 100 validators
Enter fullscreen mode Exit fullscreen mode

The Worker

Single Cloudflare Worker, 5 endpoints. Core IBAN mod-97:

function mod97(str) {
  const rearranged = str.slice(4) + str.slice(0, 4);
  let expanded = "";
  for (const ch of rearranged) {
    const code = ch.charCodeAt(0);
    expanded += (code >= 48 && code <= 57) ? ch : (code - 55).toString();
  }
  let remainder = 0;
  for (const ch of expanded) {
    remainder = (remainder * 10 + parseInt(ch, 10)) % 97;
  }
  return remainder;
}
Enter fullscreen mode Exit fullscreen mode

LEI uses a slightly different algorithm (mod-97-10), cards use Luhn, SWIFT is length + format. Whole worker is ~250 lines.

Pricing

  • Free — 50 validations/day, no API key
  • Pro — $19.99/mo, 5,000 validations, batch, VIES lookup for VAT

Stripe alternative: Suby. Crypto + card. Live in 5 minutes.

Stack

  • Cloudflare Workers (API)
  • Cloudflare Pages (static pages)
  • Node.js generators (no deps)
  • IndexNow (ping Bing/Yandex)
  • Suby (payments)

Total cost: $0.

What's next

  • Google Sheets add-on: =VALIDATE_IBAN(A1)
  • Bulk validation endpoint
  • VIES integration for Pro tier
  • Two more programmatic streams: Monitoring, Compliance

Try

If you're building KYC, SEPA, VAT, or checkout flows — the free tier is genuinely free.

Happy to answer questions about the programmatic SEO setup, the generators, or the Worker code.

Top comments (0)