WP Manifestindependent plugin directory
manifest / ecommerce / wp-payu-donations

WP PayU Donations

WordPress plugin for collecting one-time & recurring donations via PayU. Elementor widget, 6 theme presets, visual admin configurator, email receipts. Built for foundations and NGOs.

by uszekkk · github.com/uszekkk/wp-payu-donations · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/uszekkk/wp-payu-donations/archive/refs/heads/master.zip

A WordPress plugin for collecting one-time and recurring donations via PayU (Europe). Full UI customization, Elementor widget, theme presets, configurable email receipts — everything you need for a donation page.

Built for foundations, NGOs, and nonprofits in Poland and CEE.

Features

  • One-time donations — preset amounts + custom amount, redirect to PayU (BLIK, bank transfer, cards)
  • Monthly subscriptions — PayU Secure Form for card capture, automatic monthly charges via WP-Cron
  • Elementor widget — drag-and-drop with live preview, all options in the panel
  • Visual admin configurator — colors, amounts, texts, extra fields — no code needed
  • 6 theme presets — Default (Orange), Dark, Minimal, Ocean, Forest, Rose — or set custom colors
  • Email receipts — configurable confirmation email to donors with placeholders
  • Extra form fields — optional phone, message/dedication, marketing consent
  • Custom CSS — textarea in admin for advanced styling
  • Admin dashboard — donations list with filters/search, subscriptions management
  • Security — AES-256-GCM encrypted tokens, webhook signature verification, rate limiting
  • i18n ready — all strings translatable, auto-detects WordPress locale
  • Multi-currency — PLN, EUR, USD, CZK, GBP, HUF, RON, BGN, HRK
  • Sandbox mode — built-in test credentials, zero config to start

Requirements

  • WordPress 5.8+
  • PHP 7.4+ with openssl extension
  • PayU account (Europe) — register here
  • HTTPS required for card payments

Installation

  1. Download the latest release or clone this repo
  2. Upload fs-payu-donations/ to wp-content/plugins/
  3. Activate in WordPress Admin > Plugins
  4. Configure in PayU Donations > Settings
  5. Go to Settings > Permalinks and click "Save Changes"
  6. Add the donation form to any page:

Option A — Shortcode:

[fs_payu_donate]

Option B — Elementor: Search "PayU Donation Form" in the Elementor widget panel.

Admin Panel

PayU Donations > Appearance

Visual configurator with:

  • Theme presets — select from 6 built-in themes or set custom colors
  • Color pickers — primary, text, background, toggle colors (WordPress native color picker)
  • Amounts — preset values, default selection, min/max
  • Texts — title, description, button text
  • Form options — monthly tab on/off, default tab, legal page URLs
  • Extra fields — phone, message, marketing consent (toggle each on/off)
  • Custom CSS — textarea for advanced styling
  • Live preview — see the form right on the settings page

PayU Donations > Settings

  • Organization name and currency
  • PayU credentials (POS ID, MD5 Key, Client Secret — encrypted at rest)
  • Sandbox / Production toggle
  • Thank you / error page URLs
  • Donor email receipt — enable/disable, custom subject and body with placeholders:
    • {donor_name}, {amount}, {org_name}, {date}, {payment_type}
  • Subscription failure settings and admin notification email

PayU Donations > Donations

List table with search, filters (status, type), sortable columns.

PayU Donations > Subscriptions

Active/cancelled/failed subscriptions with cancel action.

Shortcode Options

All options have admin defaults — the shortcode works with zero attributes:

[fs_payu_donate
    amounts="10,20,50,100"
    default_amount="50"
    theme="default"                 // default, dark, minimal, ocean, forest, rose, custom
    color_primary="#FD9800"         // only with theme="custom"
    color_dark="#0F172A"
    color_bg="#FFFFFF"
    color_cream="#FEF9E1"
    button_text="Donate"
    title="Support our mission"
    description="Your help matters"
    show_monthly="true"
    default_tab="one_time"
    min_amount="1"
    max_amount="50000"
    privacy_url="/privacy-policy"
    regulations_url="/terms"
    class="my-custom-class"
]

Elementor Widget

The widget provides all shortcode options as Elementor controls:

  • Content tab — title, description, amounts, button text, monthly toggle, default tab
  • Style tab — theme preset dropdown, custom color pickers (show when theme = Custom)

How It Works

One-time donations

User picks amount → enters email → clicks "Donate" → redirected to PayU → pays via BLIK/transfer/card → returns to thank-you page → webhook updates status → receipt email sent

Monthly subscriptions

User picks amount → enters email + card (PayU Secure Form iframe) → first payment with 3DS → PayU returns reusable token (TOKC_) → encrypted in DB → WP-Cron charges monthly → receipt email each month

Testing (Sandbox)

Leave credentials empty with Sandbox mode on — plugin auto-uses PayU test POS.

Test card: 4444 3333 2222 1111 / CVV 123 / Expiry 12/29

Security

  • Card data handled entirely by PayU's iframe — never touches your server
  • Tokens encrypted with AES-256-GCM (authenticated encryption)
  • Webhook signatures verified via MD5/SHA-256 (timing-safe)
  • All inputs sanitized, outputs escaped, queries parameterized
  • Rate limiting: 5 attempts per IP per 10 minutes
  • API secrets encrypted at rest

WP-Cron Note

For reliable monthly charges, set up a real server cron:

*/15 * * * * wget -q -O /dev/null https://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

License

GPL-2.0-or-later. See LICENSE.

Contributing

Issues and PRs welcome. Built by uszekkk and open-sourced for the nonprofit community.