Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
November 29, 2022 09:26
November 14, 2023 16:39
July 21, 2020 13:22
November 29, 2022 09:26
December 10, 2020 13:03
November 14, 2023 16:39

PayPal Smart Payment Buttons

build status code coverage npm version apache license

Smart Payment Buttons application, including:

  • Server-side buttons renderer
  • Client side logic

Please note: this repo is not intended as a public entry point into the smart buttons. Please see:


Running the development server

npm install
npm start

Then load http://localhost:8003/smart/buttons?clientID=alc_client1 in your browser.

Running tests

npm test


Release a new version

npm run release

Deploy the new version

npm run deploy

Activate traffic on the new version

npm run activate

Activate traffic on a specific version

npm run activate 2.0.123

Activate traffic on a specific version to a specific environment

npm run activate 2.0.123 sandbox

Activate traffic on a specific version to multiple specific environments

npm run activate 2.0.123 'local stage sandbox'

Using local paypal-checkout-components

This repo uses the button renderer from To pull in local changes from paypal-checkout-components to this module:

Preflight call

This section is relevant to integrations passing data-user-id-token, for vaulted/one-click button renders.

Rendering the vaulted button can be time consuming. The Smart Buttons server allows a pre-flight call to be made. This pre-caches the button, ready to be rendered immediately when the buyer lands on your page. This should typically be done in one of the following places:

  • On a page immediately prior to displaying the Smart Buttons
  • On a single-page app prior to displaying the Smart Buttons, if the Smart Buttons are displayed after a user action
  • On the server-side prior to rendering the cart or checkout page containing the Smart Buttons

To invoke, simply make a call to the following URL:

The following URL params can be passed:

  • client-id: (required) Your PayPal client id
  • user-id-token: (required) Your customer's id token
  • merchant-id (optional) The merchant id or email of the transaction payee
  • amount: (optional) The estimated amount of the transaction
  • currency: (optional) The currency of the transaction

This request can be made as a fire-and-forget call: you do not need to wait for a response, or check the status code of the response.