title: Stripe API: There is no token with ID X (stripe.charges.create)
body: <p>Fairly new to node/express, and I'm trying to get a simple dummy charge working with <a href="https://www.npmjs.com/package/stripe" rel="nofollow">Stripe 3.3.2</a> and <a href="https://checkout.stripe.com/checkout.js" rel="nofollow">checkout.js</a>. Once the checkout form is submitted, the token makes its way back to the backend without issue; using that token to create a charge, however, results in the following: <strong>There is no token with ID tok_xxxxxxxxxxxxxxxxxxxxxxxx</strong></p>
  
  <p>What am I missing here? </p>
  
  <h2>/views/premium.mustache</h2>
  
  <pre><code>&lt;a id="subscribe" href="#"&gt;Pay with Card&lt;/a&gt;
  
  &lt;script&gt;
    // Define handler to be called when Stripe returns a card token
    function onReceiveToken(token, args) {
      // Submit token to server so it can charge the card
      $.ajax({
          url: '/premium/charge',
          type: 'POST',
          data: {
               stripeToken: token
          }
         });
     }
  
    // Configure Checkout
    var checkout = StripeCheckout.configure({
      key: 'xx_xxxx_xxxxxxxxxxxxxxxxxxxx',
      token: onReceiveToken,
      image: '/images/logo/stripe.png',
      name: 'Test App',
      description: 'Premium Sounds',
      amount: 500
    });
  
    // Open Checkout when the link is clicked
    $('#subscribe').on('click', function() {
      checkout.open();
      return false;
    });
  &lt;/script&gt;
  </code></pre>
  
  <h2>/routes/stripe/charge.js</h2>
  
  <pre><code>var dateUtils = require('date-utils'),
      config = require('../../../config/config.js'),
      stripe = require('stripe')(config.keys.stripe.test.secret_key),
      User = require('../../models/User');
  
  module.exports = function(router, app, passport) {
    router.get('/premium/charge', function(req, res) {
      res.redirect('/premium');
    });
  
    router.post('/premium/charge', function(req, res) {
      var token = req.body.stripeToken.id,
          card = req.body.stripeToken.card.id;
  
      stripe.charges.create({
        amount: 500,
        currency: 'USD',
        source: token,
        description: 'Dummy customer'
      }, function(err, charge) {
        if (err) {
          console.log(err);
        } else {
          console.log(charge);
        }
      });
    });
  }
  </code></pre>
  
  <h2>req.body</h2>
  
  <pre><code>{ 
    stripeToken: { 
      id: 'tok_15jsAF2eZvKYlo2CmvgETnJg',
      livemode: 'false',
      created: '1427204031',
      used: 'false',
      object: 'token',
      type: 'card',
      card: { 
        id: 'card_15jsAF2eZvKYlo2CdXDcaI0h',
        object: 'card',
        last4: '4242',
        brand: 'Visa',
        funding: 'credit',
        exp_month: '9',
        exp_year: '2018',
        country: 'US',
        name: 'sd@smm.com',
        address_line1: '',
        address_line2: '',
        address_city: '',
        address_state: '',
        address_zip: '',
        address_country: '',
        cvc_check: 'pass',
        address_line1_check: '',
        address_zip_check: '',
        dynamic_last4: '' 
      },
      email: 'sd@smm.com',
      verification_allowed: 'true',
      client_ip: '74.110.163.89' 
    } 
  }
  </code></pre>
  
  <h2>Stripe response</h2>
  
  <pre><code>{ 
    [Error: There is no token with ID tok_xxxxxxxxxxxxxxxxxx.]
    type: 'StripeInvalidRequest',
    stack: 'Error: There is no token with ID (node.js:442:13)',
    rawType: 'invalid_request_error',
    code: undefined,
    param: 'source',
    message: 'There is no token with ID tok_xxxxxxxxxxxxxxxxxx.',
    detail: undefined,
    raw: { 
      type: 'invalid_request_error',
      message: 'There is no token with ID tok_xxxxxxxxxxxxxxxxxx.',
      param: 'source' 
    } 
  }
  </code></pre>