DEV Community

Oleksandr
Oleksandr

Posted on Edited 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 (2)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.