Kreditkartennummer prüfen
Finden Sie eine vertippte Kartennummer vor dem Bezahlschritt: 4242 4242 4242 4242 besteht die Luhn-Prüfung und gehört zu Visa, während schon eine falsche Ziffer sie fast immer scheitern ließe. Es wird nichts gespeichert. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Zahl
- 4242 4242 4242 4242
- Kartenmarke
- Visa
Ein Werkzeug, das eine eingegebene Kreditkartennummer mit dem Luhn-Algorithmus auf eine gültige Prüfziffer testet. Es erkennt einen einzelnen vertippten oder vertauschten Ziffer, bevor eine Zahlung überhaupt versucht wird, speichert die Nummer dabei aber zu keinem Zeitpunkt in einem Konto oder Protokoll.
So funktioniert die Luhn-Prüfung
Das Verfahren verdoppelt von rechts gezählt jede zweite Ziffer einer Kartennummer, addiert die Ergebnisse zu den unveränderten Ziffern und prüft, ob die Summe durch zehn teilbar ist. Jede korrekt ausgegebene Kartennummer ist so gebaut, dass diese Rechnung aufgeht. Benannt ist es nach Hans Peter Luhn, einem Ingenieur bei IBM, der es 1954 patentieren ließ. Es sollte so einfach sein, dass man es von Hand oder mit den mechanischen Rechenmaschinen jener Zeit ausführen konnte: ein Durchgang über die Ziffern, keine Tabellen, kein Nachschlagen. Zusätzlich zeigt das Ergebnis, zu welchem Netzwerk die Nummer anhand ihrer ersten Ziffern und ihrer Länge passt, etwa Visa, Mastercard oder Amex.
Wofür sie taugt und wofür nicht
Ein Onlineshop kann die Nummer prüfen, sobald der Kunde das Feld verlässt, und einen offensichtlichen Tippfehler melden, bevor es zur Zahlung geht. Ein Callcenter erkennt eine falsch verstandene Ziffer, während der Mitarbeiter die Bestellung erfasst, statt erst nach dem Absenden. Wichtig ist die Grenze: Eine bestandene Prüfung heißt nur, dass die Nummer rechnerisch richtig aufgebaut ist. Sie bestätigt nicht, dass die Karte existiert, aktiv oder gedeckt ist oder der eingebenden Person gehört. Die Prüfung findet Abschreibfehler, keinen Betrug, und ersetzt nie die Freigabe durch den Zahlungsdienstleister.
Was der Luhn-Algorithmus prüft
Der Luhn-Algorithmus ist ein einfaches, weltweit genutztes Prüfverfahren, das aus den Ziffern einer Kartennummer eine Prüfsumme berechnet und mit der letzten Ziffer der Nummer abgleicht. Ein einzelner vertippter oder zwei vertauschte Ziffern führen fast immer zu einer ungültigen Prüfsumme und werden so zuverlässig erkannt, ohne dass die Karte bei einer Bank oder einem Zahlungsdienstleister angefragt werden muss, was die Prüfung besonders schnell macht.
Was diese Prüfung ausdrücklich nicht tut
Eine gültige Prüfsumme bedeutet nicht, dass die Karte aktiv, gedeckt oder überhaupt jemals ausgegeben wurde, der Luhn-Algorithmus prüft nur die rechnerische Struktur der Nummer. Ob eine Karte tatsächlich belastet werden kann, entscheidet ausschließlich der Zahlungsdienstleister im Moment der Zahlung, nicht diese Funktion, die sich bewusst auf die reine Prüfziffernkontrolle beschränkt und keine weitergehende Aussage über Deckung, Sperrung oder Gültigkeitsdatum trifft.
Anwendungsfälle
Formularfeld beim Checkout absichern
Ein Onlineshop prüft die eingegebene Kartennummer vor dem Absenden auf eine gültige Prüfziffer, um offensichtliche Tippfehler früh abzufangen.
Interne Testdaten erzeugen
Ein Entwickler nutzt die Prüfung, um beim Testen des eigenen Zahlungsformulars schnell zu prüfen, ob eine Testnummer überhaupt eine gültige Luhn-Prüfsumme hat.
Rückfrage im Kundenservice
Sabine Schneider prüft am Telefon mit dem Kunden, ob eine vorgelesene Kartennummer plausibel aufgebaut ist, bevor ein neuer Zahlungsversuch angestoßen wird.
Häufige Fragen
Bedeutet eine gültige Prüfsumme, dass die Karte gedeckt ist?
Nein, der Luhn-Algorithmus prüft nur die rechnerische Struktur der Nummer, nicht die Deckung oder Aktivität der Karte. Das kann ausschließlich der Zahlungsdienstleister im Zahlungsmoment feststellen.
Ist die Prüfung kostenlos?
Ja, im Browser ohne Limit und ohne Anmeldung.
Ist das für die Verarbeitung echter Kartendaten DSGVO-relevant?
Die Nummer verlässt im Browser-Modus Ihr Gerät nicht und wird nicht gespeichert, was das Risiko deutlich reduziert. Für die produktive Zahlungsabwicklung selbst bleibt weiterhin ein zertifizierter Zahlungsdienstleister nötig.
Erkennt die Prüfung auch den Kartentyp?
Nein, dafür gibt es eine eigene Funktion. Diese Prüfung testet ausschließlich die Luhn-Prüfziffer.
Welche Tippfehler erkennt die Luhn-Prüfung?
Eine falsche Ziffer, zwei vertauschte Nachbarziffern oder eine vergessene Ziffer brechen die Prüfsumme fast immer. Genau diese Fehler passieren beim Eintippen von sechzehn Ziffern auf einem kleinen Handybildschirm, und das Formular kann sie sofort melden.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/verify/card-luhn \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"4111111111111111"}'const res = await fetch("https://api.kit.forhosting.com/verify/card-luhn", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "4111111111111111"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/verify/card-luhn",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "4111111111111111"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/verify/card-luhn", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"4111111111111111"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"4111111111111111"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/verify/card-luhn", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"number": "4111111111111111"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "verify.card_luhn",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Keine Speicherung, kein Protokoll
Die Prüfung läuft vollständig im Browser: Die eingegebene Nummer wird lokal ausgewertet, nicht an einen Server übertragen, nicht protokolliert und nicht gespeichert, auch nicht bei Nutzung über die API, bei der ausschließlich das Prüfergebnis zurückgegeben wird. Für den Betrieb im Browser gibt es kein Limit und keine Anmeldung; die API-Nutzung kostet $0.002 pro Prüfung, mit dem Preis vorab veröffentlicht wie bei jeder Funktion in KIT.
Technische Fragen
Wird meine Kartennummer gespeichert oder protokolliert?
Nein, zu keinem Zeitpunkt. Weder im Browser-Modus noch bei Nutzung über die API wird die Nummer gespeichert, protokolliert oder weiterübertragen, nur das Prüfergebnis wird zurückgegeben.
Brauche ich ein Konto?
Nein, weder für den Browser-Modus noch für die API-Nutzung ist ein Konto erforderlich.