{"openapi":"3.1.0","info":{"title":"Check Digit Validator","version":"0.1.0","description":"Validate common check-digit schemes — Luhn (cards), ISBN-10/13, EAN/UPC/GTIN, IMEI and US ABA routing numbers. Malformed input is rejected, a wrong check digit returns valid:false.","x-guidance":"Validate common check-digit schemes — Luhn (cards), ISBN-10/13, EAN/UPC/GTIN, IMEI and US ABA routing numbers. Malformed input is rejected, a wrong check digit returns valid:false. Each operation is an HTTP POST to its /v1/<operation> path with a JSON request body (see each operation's requestBody schema) and returns a JSON response. Endpoints are paid per successful call via x402 or MPP (USDC on Base); an unpaid request returns 402 with payment metadata in the WWW-Authenticate header.","contact":{"email":"hello@openverbs.com"}},"x-discovery":{"ownershipProofs":["0xb1401a71756f51464a9962db12f1eb3e9522490cd20010b06d00cf7b7770acfd5f79721f9dfdf2643f8cecd29af3bde9ec133941a386042b32d9886053a70de61b","0xc1c1f11793e18a00fcb7072421f26e89fb75b6aa517fa84370564991f4b10efa024f6f57e4e67eefd20cf46cc01fc5a62d793fa8fbcda04f26c946a3433d73f91b","0x676b474af0ef9ed4809b5d12d2e789b36e52d56215b21f601d71f76620e36ec630347116a7b2b349a3c3681e5db0fbfa76c4169a676b6d6f27864d0e5017284a1c","0xc2ab96522515ed9e9bc4f1a241b774bd48df42e951ddbf7f6aa8fc76f5a96a20421703e1ec402ce7eb1e4eabea3b6e4e4129cf39d56ea91cf4fcf38561fc94fc1c"]},"servers":[{"url":"https://checkdigit.openverbs.com"}],"paths":{"/health":{"get":{"summary":"Health check","security":[],"responses":{"200":{"description":"Healthy","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"service":{"type":"string"},"version":{"type":"string"}}}}}}}}},"/v1/luhn":{"post":{"summary":"Luhn check","description":"Validate a number by the Luhn (mod-10) algorithm — the scheme behind credit/debit card numbers and many IDs. Spaces and hyphens are ignored. A mismatched check digit is a successful { valid: false }. Paid endpoint (x402 + MPP). Price: $0.002000 USDC per successful payment.","tags":["luhn validation","validate credit card number","mod 10 check digit","luhn checksum api","check card number","validate luhn number"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","minLength":1,"maxLength":64,"description":"Digit string (spaces/hyphens allowed), 2-34 digits."}},"required":["number"],"additionalProperties":false},"example":{"number":"4111111111111111"}}}},"responses":{"200":{"description":"`{ input, valid, checkDigit, expectedCheckDigit }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ input, valid, checkDigit, expectedCheckDigit }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate a number by the Luhn (mod-10) algorithm — the scheme behind credit/debit card numbers and many IDs. Spaces and hyphens are ignored. A mismatched check digit is a successful { valid: false }.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"2000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Validate a number by the Luhn (mod-10) algorithm — the scheme behind credit/debit card numbers and many IDs. Spaces and hyphens are ignored. A mismatched check digit is a successful { valid: false }.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate a number by the Luhn (mod-10) algorithm — the scheme behind credit/debit card numbers and many IDs. Spaces and hyphens are ignored. A mismatched check digit is a successful { valid: false }.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/isbn":{"post":{"summary":"ISBN check","description":"Validate an ISBN-10 (mod-11, trailing X allowed) or ISBN-13 (GTIN mod-10) book number. Length after removing spaces/hyphens selects the scheme. Paid endpoint (x402 + MPP). Price: $0.002000 USDC per successful payment.","tags":["isbn validation","validate isbn","isbn check digit","isbn 10 isbn 13","book number lookup","isbn checksum api"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"isbn":{"type":"string","minLength":1,"maxLength":32,"description":"ISBN-10 or ISBN-13 (spaces/hyphens allowed)."}},"required":["isbn"],"additionalProperties":false},"example":{"isbn":"9780306406157"}}}},"responses":{"200":{"description":"`{ input, kind, valid, checkDigit, expectedCheckDigit }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ input, kind, valid, checkDigit, expectedCheckDigit }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate an ISBN-10 (mod-11, trailing X allowed) or ISBN-13 (GTIN mod-10) book number. Length after removing spaces/hyphens selects the scheme.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"2000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Validate an ISBN-10 (mod-11, trailing X allowed) or ISBN-13 (GTIN mod-10) book number. Length after removing spaces/hyphens selects the scheme.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate an ISBN-10 (mod-11, trailing X allowed) or ISBN-13 (GTIN mod-10) book number. Length after removing spaces/hyphens selects the scheme.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/ean":{"post":{"summary":"EAN / UPC / GTIN check","description":"Validate a GTIN barcode number — EAN-8, UPC-A (12), EAN-13 or GTIN-14 — by the standard mod-10 check digit. Length selects the scheme. Paid endpoint (x402 + MPP). Price: $0.002000 USDC per successful payment.","tags":["gtin validation","validate barcode number","ean upc check digit","upc validation","ean 13 checksum","barcode check digit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","minLength":1,"maxLength":32,"description":"8, 12, 13 or 14 digit GTIN (spaces/hyphens allowed)."}},"required":["number"],"additionalProperties":false},"example":{"number":"4006381333931"}}}},"responses":{"200":{"description":"`{ input, length, valid, checkDigit, expectedCheckDigit }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ input, length, valid, checkDigit, expectedCheckDigit }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate a GTIN barcode number — EAN-8, UPC-A (12), EAN-13 or GTIN-14 — by the standard mod-10 check digit. Length selects the scheme.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"2000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Validate a GTIN barcode number — EAN-8, UPC-A (12), EAN-13 or GTIN-14 — by the standard mod-10 check digit. Length selects the scheme.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate a GTIN barcode number — EAN-8, UPC-A (12), EAN-13 or GTIN-14 — by the standard mod-10 check digit. Length selects the scheme.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/imei":{"post":{"summary":"IMEI check","description":"Validate a 15-digit mobile device IMEI by its Luhn check digit. Spaces and hyphens are ignored. Paid endpoint (x402 + MPP). Price: $0.002000 USDC per successful payment.","tags":["imei validation","validate imei number","mobile device imei","imei check digit","imei luhn check","phone imei validator"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"imei":{"type":"string","minLength":1,"maxLength":32,"description":"15-digit IMEI (spaces/hyphens allowed)."}},"required":["imei"],"additionalProperties":false},"example":{"imei":"490154203237518"}}}},"responses":{"200":{"description":"`{ input, valid, checkDigit, expectedCheckDigit }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ input, valid, checkDigit, expectedCheckDigit }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate a 15-digit mobile device IMEI by its Luhn check digit. Spaces and hyphens are ignored.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"2000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Validate a 15-digit mobile device IMEI by its Luhn check digit. Spaces and hyphens are ignored.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate a 15-digit mobile device IMEI by its Luhn check digit. Spaces and hyphens are ignored.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/routing":{"post":{"summary":"ABA routing check","description":"Validate a 9-digit US ABA bank routing number by its weighted (3,7,1) mod-10 checksum. Spaces and hyphens are ignored. Paid endpoint (x402 + MPP). Price: $0.002000 USDC per successful payment.","tags":["aba routing validation","validate routing number","bank routing checksum","us routing number lookup","aba check digit","routing number api"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"routingNumber":{"type":"string","minLength":1,"maxLength":32,"description":"9-digit ABA routing number (spaces/hyphens allowed)."}},"required":["routingNumber"],"additionalProperties":false},"example":{"routingNumber":"021000021"}}}},"responses":{"200":{"description":"`{ input, valid, checkDigit, expectedCheckDigit }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ input, valid, checkDigit, expectedCheckDigit }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate a 9-digit US ABA bank routing number by its weighted (3,7,1) mod-10 checksum. Spaces and hyphens are ignored.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"2000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Validate a 9-digit US ABA bank routing number by its weighted (3,7,1) mod-10 checksum. Spaces and hyphens are ignored.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate a 9-digit US ABA bank routing number by its weighted (3,7,1) mod-10 checksum. Spaces and hyphens are ignored.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}}},"x-service-info":{"categories":["validation"],"docs":{"homepage":"https://checkdigit.openverbs.com","apiReference":"https://checkdigit.openverbs.com/openapi.json"}}}