[GH-ISSUE #1846] Add PayPal payment provider alongside Stripe #533

Open
opened 2026-02-26 18:47:28 +03:00 by kerem · 1 comment
Owner

Originally created by @sagidam on GitHub (Jun 16, 2025).
Original GitHub issue: https://github.com/documenso/documenso/issues/1846

Description

Add support for PayPal as an alternative payment module in our EE package, next to—or in place of—Stripe.

Motivation

  • Some customers request PayPal checkout.
  • Expands market reach where Stripe is less popular.

Requirements & Sub-tasks

  1. API Research

    • Review PayPal’s REST API / SDK (Checkout, Orders API).
  2. Code Structure

    • Create a new package: packages/ee/paypal-payments.
    • Implement a service that handles order creation, payment approval, and webhook verification.
  3. Configuration

    • Add new .env variables: PAYPAL_CLIENT_ID, PAYPAL_SECRET.
    • Ensure no hard dependency on Stripe in core code.
  4. UI Changes

    • Add a “Pay with PayPal” button on the checkout page, alongside the existing Stripe button.
  5. Documentation

    • Update the EE README with PayPal setup instructions.
  6. Tests

    • Create unit mocks for PayPal API in dev.
    • Add end-to-end tests for a sandbox checkout flow.

Acceptance Criteria

  • Developer can set PAYPAL_CLIENT_ID and PAYPAL_SECRET in .env and run locally.
  • “Pay with PayPal” button appears and completes a sandbox payment.
  • Orders are recorded in the database with statuses (pending, completed).
  • README updated with configuration and usage steps.

References

Originally created by @sagidam on GitHub (Jun 16, 2025). Original GitHub issue: https://github.com/documenso/documenso/issues/1846 ## Description Add support for PayPal as an alternative payment module in our EE package, next to—or in place of—Stripe. ## Motivation - Some customers request PayPal checkout. - Expands market reach where Stripe is less popular. ## Requirements & Sub-tasks 1. **API Research** - Review PayPal’s REST API / SDK (Checkout, Orders API). 2. **Code Structure** - Create a new package: `packages/ee/paypal-payments`. - Implement a service that handles order creation, payment approval, and webhook verification. 3. **Configuration** - Add new `.env` variables: `PAYPAL_CLIENT_ID`, `PAYPAL_SECRET`. - Ensure no hard dependency on Stripe in core code. 4. **UI Changes** - Add a “Pay with PayPal” button on the checkout page, alongside the existing Stripe button. 5. **Documentation** - Update the EE README with PayPal setup instructions. 6. **Tests** - Create unit mocks for PayPal API in dev. - Add end-to-end tests for a sandbox checkout flow. ## Acceptance Criteria - Developer can set `PAYPAL_CLIENT_ID` and `PAYPAL_SECRET` in `.env` and run locally. - “Pay with PayPal” button appears and completes a sandbox payment. - Orders are recorded in the database with statuses (`pending`, `completed`). - README updated with configuration and usage steps. ## References - PayPal Developer Docs: https://developer.paypal.com/docs/api/ - Example Stripe implementation: `packages/ee/stripe-payments`
Author
Owner

@github-actions[bot] commented on GitHub (Jun 16, 2025):

Thank you for opening your first issue and for being a part of the open signing revolution!

One of our team members will review it and get back to you as soon as it possible 💚

Meanwhile, please feel free to hop into our community in Discord

<!-- gh-comment-id:2978079536 --> @github-actions[bot] commented on GitHub (Jun 16, 2025): Thank you for opening your first issue and for being a part of the open signing revolution! <br /> One of our team members will review it and get back to you as soon as it possible 💚 <br /> Meanwhile, please feel free to hop into our community in [Discord](https://documen.so/discord)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/documenso#533
No description provided.