node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



apostrophe-donate allows a developer to quickly add a donation form to a webpage on an apostrophe-sandbox-powered website. It uses the paypal-api-sdk module to process payments and allows email configuration to the donor and recipient of the donation.


I assume you already have a nifty Apostrophe 2 project built with apostrophe-site. The easiest way is to start by cloning the apostrophe-sandbox project.

Add the module to your project:

npm install --save apostrophe-donate


In app.js, you'll need to configure the apostrophe-donate module, just like the rest of your modules:

    'apostrophe-donate': {
      // production has this in local.js 
      payPal: {
        mode: 'sandbox',
        client_id: 'xxxxxx',
        client_secret: 'xxxxxx'
      description: 'Donation for P\'unk Ave', //description of transaction 
      // configure the email to send to the donor 
        email: '',
        name: 'First Last'
      // configure the email to send to the recipient of the donation 
        email: '',
        name: 'Recipient'
      thankYouSubject: 'Thanks!', // subject of the email to the donor 
      confirmationSubject: 'Yay!' // subject of the email to send to the recipient of the donation, 

The client_id and client_secret are retrieved after setting up a pro account with PayPal and registering your application.

Registering an app with PayPal

  • Login to PayPal and go to
  • Click Applications, then click Create App.
  • Give your app a name and leave the defaults in place for the sandbox developer account field.
  • Click the Create App
  • Under Test Credentials, note the Client ID and Secret. These are for your local data/local.js configuration so as to not be playing with real money in development.
  • Under Live Credentials, click Show to find the production Client ID and Secret


Add this line to the template of your choice where you want the form to appear

{{ aposDonationForm() }}


apostrophe-donate comes with a lot of pre-baked things.


  • form.html - donation form generated with apostrophe-schemas's schemaMacros. You can redefine the schema in index.js.
  • formWrapper.html - a wrapper for the form
  • recipientEmail.html, recipientEmail.txt - email template sent to the recipient of the donation after successful form submission
  • thankYou.html - thank you message displayed after successful form submission
  • thankYouEmail.html, githankYouEmail.txt - email sent to the donor after successful form submission.


Pre-baked styles in content.less and a spinner.gif for backward compatible ui goodness