The error "Your card's expiration year is invalid" always shows even with a valid date

You need 2 hidden fields on your payment form when using the combined expiry date field, called cardExpMonth and cardExpYear.

When using the combined [mm/yy] date field on the payment form, under the hood the charge.js validates and splits up the month and year values into their respective parts. Those values are then updated on the 2 hidden fields, called cardExpMonth and cardExpYear.

The correct output should look something like this:

<label for="cardExpiry">Expiry</label>                
<input class="cc-expiry" type="text" id="cardExpiry" value="" autocomplete="off" placeholder="MM / YY" data-stripe="exp">

<input type="hidden" name="cardExpMonth" value="" data-stripe="exp_month">

<input type="hidden" name="cardExpYear" value="" data-stripe="exp_year">