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.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/uszekkk/wp-payu-donations/archive/refs/heads/master.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

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.