=== DST Donate ===
Contributors: developmentstandards
Donate link: https://dst.com.ng/give
Tags: donation, donations, paystack, fundraising, elementor
Requires at least: 6.3
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Accept donations on your WordPress site through Paystack. Add a form with a shortcode, block, or Elementor widget, and track every gift.

== Description ==

DST Donate is a free, lightweight donation plugin that lets your WordPress site accept payments through Paystack. Add a donation form to any page in minutes with a shortcode, a block, or an Elementor widget, and see every gift from your dashboard. It is built for nonprofits, churches, schools, and community projects, with African currencies and Paystack at its core.

Donors pay on Paystack's secure, hosted checkout, so card details never touch your website and your PCI scope stays small. Every payment is confirmed two ways, by a signature-verified webhook and an independent server-side check, so a donor who closes the tab still has their gift recorded.

The plugin takes no cut of your donations. You keep your own Paystack account, your own payouts, and your own donor data.

= Features =

* A donation form placed three ways: the `[dst_donate]` shortcode, the "DST Donate Form" block, or the "DST Donate" Elementor widget.
* One-time donations in Naira (NGN), Cedi (GHS), Shilling (KES), Rand (ZAR), and US Dollar (USD).
* Suggested amount buttons plus a custom amount field that formats thousands as the donor types.
* Collects the donor's name and (optionally) phone, and always the email for the receipt.
* A clear donations log of successful, pending, and failed gifts, with search, status filtering, and a running total raised.
* Paystack secret keys stored encrypted in your database.
* Keys verified with Paystack the moment you save them, with an admin-only warning, and the effect on donations, if a key is wrong.
* A signature-verified webhook plus independent verification, so a confirmed payment is never lost.
* Test mode, so you can set everything up and try a donation before going live.
* Lightweight and translation-ready, with no bloat and no adverts in your dashboard.

= Do more with DST Donate Pro =

A separate Pro add-on extends the free plugin with multiple donation forms, form customisation (your own colours and corner radius per form, plus custom CSS), recurring (weekly, monthly, yearly) donations, an optional fee-recovery checkbox, custom donor fields, automated thank-you and follow-up emails, PDF receipts, donor analytics with CSV export, bring-your-own-key SMS and WhatsApp messaging, a fundraising goal bar, and offline donation recording. The free plugin works fully on its own, and never expires or nags beyond a single upgrade notice.

== Installation ==

1. In your WordPress admin, go to Plugins, Add New. Upload the plugin zip (or search for it in the directory), then click Activate.
2. Go to DST Donate, Settings. On that screen there is a link to your Paystack dashboard, under Settings, API Keys & Webhooks. Copy your public and secret keys into the matching fields and choose your currency. Leave Test mode on for now.
3. Still in your Paystack dashboard, paste the Webhook URL shown on the settings screen into the webhook field. This lets Paystack confirm each payment automatically.
4. Click Save. The plugin checks your keys with Paystack and shows a Verified badge, or warns you if a key is invalid.
5. Add the form to a page: paste the `[dst_donate]` shortcode, add the "DST Donate Form" block, or drag the "DST Donate" widget in Elementor.
6. Make a test donation while Test mode is on. When it works, turn Test mode off to start accepting real donations.

== Frequently Asked Questions ==

= Do I need a Paystack account? =

Yes. DST Donate connects your site to your own Paystack account. Creating one is free at paystack.com, and donations are paid out to your bank by Paystack.

= Is card data stored on my site? =

No. Donors pay on Paystack's secure, hosted checkout, so card details never touch your website and your PCI scope stays small.

= Does the plugin charge a fee on donations? =

No. DST Donate adds no fee of its own. Only Paystack's standard processing fees apply, the same as on any Paystack payment.

= Which currencies are supported? =

NGN, GHS, KES, ZAR, and USD, as long as your Paystack account is enabled for the one you choose.

= How do I add the form to a page? =

Use any one of three methods: the `[dst_donate]` shortcode, the "DST Donate Form" block, or the "DST Donate" Elementor widget. They all show the form you set up under DST Donate, Settings.

= Can I use Elementor? =

Yes. When Elementor is active, a "DST Donate" widget appears in the Elementor panel, under the DST Donate category. Drag it onto any page.

= How many forms can I have? =

The free plugin has one donation form. Multiple forms, each with its own amounts, currency, and wording, are available in DST Donate Pro.

= What does Pro add? =

Multiple forms, form customisation (match the form to your brand colours), recurring donations, fee recovery, custom donor fields, automated receipts and follow-up emails, PDF receipts, donor analytics with CSV export, and SMS and WhatsApp messaging.

== External services ==

This plugin connects to Paystack, a third-party payment gateway, to process donations. Paystack is required for the plugin to work: donations are charged through your own Paystack account, and the plugin cannot take payments without it.

The plugin communicates with the Paystack API (https://api.paystack.co) in these situations:

* When an administrator saves the plugin's settings, it makes one request to Paystack to verify that the entered API keys are valid.
* When a visitor starts a donation, it sends the donation amount and currency and the donor's name, email address and (if you choose to collect it) phone number to Paystack to create the transaction. The donor then completes payment on Paystack's own hosted checkout page.
* After payment, it sends the transaction reference to Paystack to confirm the payment (this also happens when Paystack calls back to your site's webhook).

Your Paystack secret key is sent with these requests to authenticate them. No data is sent to Paystack at any other time, and the plugin sends data to no other external service.

Paystack is a service of Paystack Payments Limited. By using this plugin you agree to Paystack's terms and policies:

* Website: https://paystack.com
* Terms of Service and Privacy & Cookie Policy: https://paystack.com/terms

== Screenshots ==

1. The donation form on the front end, with suggested amounts, a custom amount, and secure Paystack checkout.
2. The settings screen: add your Paystack keys and currency, with a link to where the keys live and the webhook URL to copy.
3. The donations log, showing the total raised and every successful, pending, and failed gift.
4. Adding the donation form to a page with the DST Donate block.

== Changelog ==

= 1.0.0 =
* First public release. A Paystack donation form placed by the [dst_donate] shortcode, a block, or an Elementor widget, with suggested and custom amounts; one-time donations in NGN, GHS, KES, ZAR, and USD; a donations log with search, status filtering, and a running total; Paystack secret keys stored encrypted and verified with Paystack on save, with an admin-only warning if a key is invalid; a signature-verified webhook plus independent server-side verification; test mode; and a themeable form (colours and corner radius as CSS variables) that DST Donate Pro can restyle. Translation-ready, with no fees taken on donations.
