Test card only
Credit Card Number Generator
Generate dummy card details for development and QA. Nothing is stored or sent to a server.
This Troy card generator produces 16-digit, Luhn-valid test numbers on the 9792 prefix.
Troy is the network international checkout code most often forgets, and the failure is
rarely a validation error — it is a card that passes every length and checksum rule and
then renders as “unknown” or unsupported, so the customer is told their card will not work
when it is perfectly good.
What is Troy?
Troy — Türkiye’nin Ödeme Yöntemi, Türkiye’s Payment Method — is the country’s domestic card scheme. It was established in 2016 within the Interbank Card Center (BKM), Bankalararası Kart Merkezi, and is issued by Turkish banks as debit, credit, and prepaid cards. Troy’s own site is the other primary source.
The motivation is the one behind every domestic scheme: keeping local transactions on local infrastructure, reducing the fees paid out to international networks, and holding a degree of payment sovereignty. Troy is not unusual in this — RuPay in India, UnionPay in China, Mir in Russia, and Elo in Brazil exist for much the same reasons.
Troy card number format
| Property | Value |
|---|---|
| IIN / BIN prefix | 9792 |
| Length | 16 digits |
| Check digit | Luhn (mod 10) |
| Security code | CVV, 3 digits |
| Operator | Bankalararası Kart Merkezi (BKM) |
| Country | Türkiye |
| Launched | 2016 |
Co-badging is the detail that matters for integration. Many Troy cards are issued carrying both the Troy logo and an international scheme logo. BKM is explicit that a card must also carry an international scheme logo to transact abroad; domestically the transaction runs on Troy. Troy cards have been accepted in the United States on the Discover network since 2017. So the same physical card can present as Troy or as an international scheme depending on where the transaction happens — and which logo your checkout displays is a business decision, not something the number can tell you.
Why Troy support matters for developers
- E-commerce sites selling into Türkiye will encounter Troy cards, and there are a great many of them in circulation.
- Most payment forms written outside Türkiye have never heard of the
9792prefix. Brand detection falls through, the card-logo lookup renders a blank or a placeholder, and the customer sees an error implying their card is not supported. - Turkish payment providers — iyzico, PayTR, Param, and Craftgate — all support Troy, so the integration path exists and needs testing.
- Domestic card transactions in Türkiye are subject to local processing requirements, so Troy is often not optional if you are operating there in any serious way.
Troy brand detection
Troy is trivial to detect — 9792 collides with nothing — so the work is remembering to
add it at all:
const TROY = /^9792\d{12}$/;
function detectBrand(number) {
const n = number.replace(/\D/g, '');
if (/^4/.test(n)) return 'visa';
if (/^3[47]/.test(n)) return 'amex';
if (/^9792/.test(n)) return 'troy';
if (/^220[0-4]/.test(n)) return 'mir';
if (/^(5[1-5]|222[1-9]|22[3-9]|2[3-6]|27[01]|2720)/.test(n)) return 'mastercard';
if (/^(6011|65|64[4-9])/.test(n)) return 'discover';
return 'unknown';
}
Two things in that chain are worth more than the Troy line itself.
The Mastercard test is the long one for a reason. A shorter /^(5[1-5]|2[2-7])/ looks
equivalent and is not: 2[2-7] covers 2200–2799, which is wider than Mastercard’s actual
2221–2720. It swallows Mir’s 2200–2204 range and labels those cards Mastercard, and
it accepts 2721, which belongs to no one. The
Mastercard page works through that range split in detail.
Order matters once ranges overlap. 9792 is unambiguous so Troy can sit anywhere, but
the Mir check has to come before a loose Mastercard test, not after. With the corrected
Mastercard pattern the ordering constraint disappears — which is the better fix.
Testing Troy integration
A Troy card generator is only useful for the first half of this list — the half that runs in your own code:
- Type a generated number and confirm the Troy logo appears rather than a blank or “unknown”.
- Confirm a plain 16-digit length check accepts it — Troy needs no special length rule.
- Confirm the security-code field stays at 3 digits, as for Visa and Mastercard.
- For a co-badged card, decide and then test which brand your checkout displays and which network you route to.
- For authorisation, approvals, declines, and 3-D Secure, use the sandbox test cards your Turkish provider publishes. The numbers here exercise your form, not their gateway.
Other national card networks
Troy belongs to a category, and the same integration gap tends to apply across all of it:
| Network | Country | Prefix | Length |
|---|---|---|---|
| Troy | Türkiye | 9792 | 16 |
| UnionPay | China | 62, 81 | 16–19 |
| RuPay | India | 60, 65, 81, 82, 508 | 16 |
| Mir | Russia | 2200–2204 | 16 |
| Elo | Brazil | 4011, 4312, 5041, 6277, 6362 | 16 |
| JCB | Japan | 3528–3589 | 16–19 |
Note the overlaps: RuPay’s 65 collides with Discover, its 81 with UnionPay, and Elo’s
4011 and 4312 sit inside Visa’s 4. Prefix alone cannot always resolve these — a
production integration in those markets needs a BIN lookup rather than a regex chain. See
the BIN and IIN guide.
UnionPay and
JCB generators are planned; both networks are already
available in the picker on the
all-network credit card generator.
To compare Troy’s behaviour against the international schemes, generate a Visa number or a 15-digit Amex number alongside it — Mastercard’s two ranges are covered in the brand-detection section above. The tool directory lists everything else, and the FAQ covers what a Luhn-valid number does and does not prove.