Angular Stripe.js service that returns promises for token calls
Clone or download
Latest commit 10c3adf May 15, 2017

angular-stripe Build Status

Angular provider for easy interaction with Stripe.js. angular-stripe wraps Stripe.js's async operations in $q promises, making response handling easier and eliminating $scope.$apply calls and other repetitive boilerplate in your application. Check out angular-credit-cards for validating your credit card forms.


npm install --save angular-stripe


angular-stripe will load Stripe.js when it's first called. You don't need to directly include Stripe.js via a <script> tag.

// node module exports the string 'angular-stripe' for convenience
angular.module('myApp', [

// otherwise, include the code first then the module name
angular.module('myApp', [



angular-stripe exposes stripeProvider for configuring Stripe.js.


The URL that will be used to fetch the Stripe.js library.

stripeProvider.setPublishableKey(key) -> undefined

Sets your Stripe publishable key.

  .module('myApp', [
  .config(function (stripeProvider) {


Inject stripe into your services or controllers to access the API methods. createToken returns a $q promise. If Stripe responds with an error, the promise will be rejected.

stripe.setPublishableKey(key) -> undefined

Same as stripeProvider.setPublishableKey


stripe.card.createToken(card [, params]) -> promise

Tokenizes a card using Stripe.card.createToken. You can optionally pass a key property under params to use a different publishable key than the default to create that token. This is especially useful for applications using Stripe Connect.

The following utility methods are also exposed:


stripe.bankAccount.createToken(bankAccount [, params]) -> promise

Tokenizes a card using Stripe.bankAccount.createToken.

The following utility methods are also exposed:


stripe.bitcoinReceiver.createReceiver -> promise

Creates a bitcoin receiver using Stripe.bitcoinReceiver.createReceiver.

stripe.bitcoinReceiver.pollReceiver -> promise

Polls a bitcoin receiver using Stripe.bitcoinReceiver.pollReceiver. Note that you'll need to implement additional logic if you need to cancel receivers.

The following utility methods are also exposed:


Charging a card

app.controller('PaymentController', function ($scope, $http, stripe) {
  $scope.charge = function charge () {
    return stripe.card.createToken($scope.payment.card)
      .then(function (response) {
        console.log('token created for card ending in ', response.card.last4)
        var payment = angular.copy($scope.payment)
        payment.card = undefined
        payment.token =
        return $'', payment)
      .then(function (payment) {
        console.log('successfully submitted payment for $', payment.amount)
      .catch(function (err) {
        if (err.type && /^Stripe/.test(err.type)) {
          console.log('Stripe error: ', err.message)
        else {
          console.log('Other error occurred, possibly with your API', err.message)