Pay.jpのカスタムフォームを実装しようとしています。
フォームから各種値を取得してcreateTokenしていますが、「Invalid expiration year」となってトークンが取得できません。コードは以下のとおりです。

  $(function() {
    $('#checkout_form_payment').submit(function() {
      var card, cvc, exp_month, exp_year, expire, number;
      number = $('#card_number').val();
      cvc = $('#card_code').val();
      expire = $('#card_expiry').val();
      exp_month = expire.substr(0, 2);
      exp_year = expire.substr(5, 2);

      card = {
        number: number,
        cvc: cvc,
        exp_month: exp_month,
        exp_year: exp_year
      };
      alert(JSON.stringify(card));
      Payjp.createToken(card, function(s, response) {
        var token;
        if (response.error) {
          alert(response.error.message);
          return false;
        } else {
          alert("res=" + response.id);
          token = response.id;
          $('#checkout_form_payment').append($('<input type="hidden" name="payjpToken" />').val(token));
          $('#checkout_form_payment').submit();
        }
        return

入力しているのは以下の値です。

      number = '4242424242424242';
      cvc = '123';
      expire = '12 / 20';

なのでexp_yearは20です。どこが問題でしょうか?
一応フォームのソースは長いので割愛します。それぞれ値が取れているところまでは確認しています。