Debit/Credit card validation port of the Luhn Algorithm in Swift
Clone or download


Swift CircleCI Version Carthage compatible License Platform

This is a port of the Luhn Algorithm, generally used for validating debit/credit card details, written in Swift.

SwiftLuhn's HEAD is written in Swift 4. If your project doesn't support Swift 4 yet, please use the 0.2.1 tag.

Objective-C port can be found at


To run the example project, clone the repo, and run pod install from the Example directory first.


SwiftLuhn is available through CocoaPods or Carthage (with or without using our pre-built binary).

To install it, simply add the following line to your Podfile:

pod "SwiftLuhn" # use '0.2.1' for Swift 3.X

Or alternatively the following line to your Cartfile:

github "MaxKramer/SwiftLuhn"



Call the class method which will throws an exception SwiftLuhn.CardError if the card is invalid.

let cardNumber = "378282246310005"
do {
    try SwiftLuhn.performLuhnAlgorithm(with: cardNumber)
    // process payment
catch {
    // invalid, alert user

Alternatively, you can use the String category:

let isValid = cardNumber.isValidCardNumber()

Card Types

You can also get the type of the card being used which will be one of:

Card Type
American Express
Diner's Club
do {
    let cardType = try SwiftLuhn.cardType(of: cardNumber)
catch {
	// card is invalid

Unit Tests

To run the unit test suite, please open the example project and hit CMD + U.


Name Website Reason
Paypal List of valid credit card numbers for the unit tests


Max Kramer,, @maxkramer


SwiftLuhn is available under the MIT license. See the LICENSE file for more info.