Kreditkartennummer mit dem Luhn-Verfahren prüfen
Dieser Prüfer entfernt übliche Leerzeichen und Bindestriche aus der eingegebenen Kartennummer, verlangt für alle übrigen Zeichen Ziffern und berechnet die deterministische Luhn-Prüfsumme.
Im Browser ausführen – kostenlos
Außerdem nennt er anhand bekannter Präfixe von Visa, Mastercard, American Express und Discover das wahrscheinliche Netzwerk. Das Ergebnis kann typische Eingabefehler vor einer Zahlungsanfrage erkennen, beweist jedoch weder die Existenz oder Aktivität des Kontos noch die Berechtigung des Kunden oder die Durchführbarkeit eines Kaufs.
Normalisierung und Eingabeprüfung
Geben Sie die Kartennummer als Zeichenfolge ein, entweder nur mit Ziffern oder in der üblichen Darstellung mit Leerzeichen oder Bindestrichen zwischen den Gruppen. Der Prüfer entfernt ausschließlich diese beiden Trennzeichen. Anschließend muss jedes verbleibende Zeichen eine ASCII-Ziffer sein. Buchstaben, Satzzeichen, Schrägstriche, Unterstriche und andere Symbole führen zu einem Eingabefehler, statt unbemerkt verworfen zu werden. Diese strenge Behandlung ist wichtig, weil eine zu großzügige Bereinigung einen versehentlichen oder fehlerhaften Wert in eine andere Nummer verwandeln und dadurch ein irreführendes Ergebnis erzeugen könnte. Eine leere Zeichenfolge, ein Wert nur aus Trennzeichen oder ein Wert eines anderen Datentyps wird ebenfalls abgelehnt. Das zurückgegebene Objekt wiederholt die normalisierte Nummer nicht; es enthält nur das Prüfsummenergebnis und das wahrscheinliche Netzwerk. Behandeln Sie die ursprüngliche Eingabe in Ihrer Anwendung stets als sensible Zahlungsinformation, obwohl diese lokale Berechnung ohne Abfrage beim Herausgeber, Autorisierung, Netzwerkzugriff, Zufallswert oder dauerhaften Zustand auskommt.
Was das Luhn-Ergebnis tatsächlich aussagt
Der Luhn-Algorithmus berechnet eine Prüfziffer, die häufige Übertragungsfehler erkennen soll. Von der äußersten rechten Ziffer aus lässt der Prüfer abwechselnd eine Ziffer unverändert und verdoppelt die nächste. Liegt ein verdoppelter Wert über neun, werden neun abgezogen. Danach werden alle Werte addiert; die Nummer besteht die Prüfung, wenn die Summe durch zehn teilbar ist. Ein positives Ergebnis bedeutet lediglich, dass die Ziffernfolge mathematisch zu ihrer letzten Prüfziffer passt. Es beweist nicht, dass eine Bank die Nummer ausgegeben hat, das Konto noch geöffnet ist, Geld verfügbar ist oder die eingebende Person zur Nutzung berechtigt ist. Eine erfundene Folge kann Luhn bestehen, während eine echte Karte mit einer falsch eingegebenen Ziffer meist durchfällt. Nutzen Sie das Ergebnis als frühe Rückmeldung im Formular oder zur Datenqualitätskontrolle. Tokenisierung, Authentifizierung, Autorisierung, Betrugsprüfung und die endgültige Transaktionsentscheidung gehören weiterhin zu einem regelkonformen Zahlungsdienstleister.
So wird das wahrscheinliche Netzwerk bestimmt
Das Netzwerk wird aus dem Identifikationspräfix des Herausgebers abgeleitet und nicht über ein entferntes Register abgefragt. Eine Nummer mit führender 4 wird als Visa gemeldet. Mastercard umfasst den herkömmlichen Bereich von 51 bis 55 sowie den neueren Bereich von 2221 bis 2720. American Express verwendet 34 und 37. Discover umfasst 6011, 65, den Bereich von 644 bis 649 und den zugeteilten Bereich von 622126 bis 622925. Passt keine Regel, lautet das Netzwerk unbekannt, während die Luhn-Prüfung normal berechnet wird. Wahrscheinlich ist dabei entscheidend: Zuteilungen ändern sich, Gemeinschaftsprodukte existieren und dieses Werkzeug erkennt bewusst nur die vier verlangten Netzwerke. Präfixerkennung und Prüfsumme sind unabhängig. Eine Nummer kann daher ein bekanntes Präfix besitzen und Luhn nicht bestehen oder Luhn bestehen und dennoch keinem bekannten Netzwerk entsprechen. Jede Anfrage nutzt den veröffentlichten Grundpreis von $0.002; Nummernlänge und erkanntes Netzwerk verursachen keinen variablen Aufpreis.
Anwendungsfälle
Hinweis während der Zahlungseingabe
Erkennen Sie eine vermutlich falsch eingegebene Ziffer, bevor Sie die Daten zur Autorisierung an einen regelkonformen Zahlungsdienst übergeben.
Qualitätsprüfung importierter Daten
Prüfen Sie Nummern aus Altbeständen auf eine stimmige Struktur, ohne zu behaupten, dass die zugehörigen Konten aktiv sind.
Tests für Zahlungsformulare
Stellen Sie sicher, dass erlaubte Trennzeichen akzeptiert und unzulässige Zeichen einheitlich zurückgewiesen werden.
Häufige Fragen
Beweist eine bestandene Luhn-Prüfung, dass die Karte echt ist?
Nein. Sie zeigt nur, dass die Ziffern eine Prüfsumme erfüllen. Existenz, Inhaberschaft, Status, Guthaben und Autorisierung erfordern Antworten des Zahlungsdienstes und Herausgebers.
Welche Formatierungszeichen darf ich verwenden?
Sie dürfen Leerzeichen und Bindestriche verwenden. Diese werden vor der Prüfung entfernt; jedes andere Zeichen außer Ziffern führt zu einem Eingabefehler.
Welche Kartennetzwerke werden erkannt?
Die Präfixregeln erkennen wahrscheinlich Visa, Mastercard, American Express und Discover. Andere Präfixe werden als unbekannt gemeldet.
Kann ein bekanntes Präfix eine ungültige Prüfsumme haben?
Ja. Präfixklassifizierung und Luhn-Berechnung sind unabhängig; ein Visa-ähnliches Präfix garantiert daher kein positives Ergebnis.
Kontaktiert der Prüfer eine Bank oder ein Kartennetzwerk?
Nein. Das Ergebnis beruht auf deterministischer Arithmetik und Präfixregeln, ohne entfernte Abfrage oder Autorisierungsversuch.
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/data/credit-card-luhn-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"4111 1111 1111 1111"}'const res = await fetch("https://api.kit.forhosting.com/data/credit-card-luhn-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "4111 1111 1111 1111"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/credit-card-luhn-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "4111 1111 1111 1111"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/credit-card-luhn-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"4111 1111 1111 1111"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"4111 1111 1111 1111"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/credit-card-luhn-validate", 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": "4111 1111 1111 1111"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.credit_card_luhn_validate",
"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.
Limits
max_mb | 25 |
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. |