Accept shielded Zcash payments. Non-custodial. Set up in minutes.
CipherPay supports non-custodial, shielded Zcash donations through donation links. Donors choose their amount, pay via shielded ZEC, and the funds go directly to your wallet. No fiat conversion, no KYC, no PII stored.
1. Go to Dashboard → Links and switch to Donation Links.
2. Click + New Donation Link and fill in the form:
3. Share the generated /donate/{slug} URL with your supporters.
Click Edit on any donation link in the dashboard to update its details. All fields are editable except Currency, which is locked after creation to preserve the integrity of the total raised amount.
Common edits include updating the mission text, raising the goal after it's reached, changing the cover image, or refining the thank-you message.
1. Donor opens the donation link URL.
2. Selects an amount (preset or custom) and clicks Donate.
3. An invoice is created with the chosen fiat amount, converted to ZEC at the live rate.
4. Donor scans the QR code or clicks Open in Wallet to pay from their Zcash wallet.
5. After confirmation, a thank-you page is shown with the merchant's custom message, the donation receipt, and reference code.
{
"mission": "Defending digital rights worldwide",
"thank_you": "Thank you for supporting privacy.",
"suggested_amounts": [1000, 2500, 5000, 10000],
"currency": "USD",
"min_amount": 100,
"max_amount": 1000000,
"campaign_name": "2026 Legal Defense Fund",
"campaign_goal": 1000000,
"cover_image_url": "https://example.org/campaign-hero.jpg",
"cover_image_position": "center top",
"contact_email": "donations@example.org",
"website_url": "https://example.org",
"social_share_text": "I just donated with Zcash!"
}All amounts are in cents (e.g. 1000 = $10.00).min_amount defaults to 100 ($1), max_amount to 1000000 ($10,000).cover_image_position accepts center top, center center, or center bottom.
When campaign_name and campaign_goal are set, the donation page shows a progress bar. total_raised increments atomically when each donation is confirmed, tracking the fiat amount pledged at the time of donation (not live ZEC value).
The campaign stays active after the goal is reached. Donors can still contribute. The progress bar caps at 100%, but the raised amount displays the true total.
Campaigns have no time limit. Deactivate the link from the dashboard when the campaign is complete.
For tax receipts, donors are directed to contact the organization using the contact_email provided in the donation config. The thank-you page shows:
"Want a tax receipt? Contact [Org] at [email] with reference code CP-XXXXXXXX."
The organization matches the memo code to the donation in their CipherPay dashboard and issues a receipt directly. CipherPay is never in the loop.
Create Donation Link
POST /api/donation-links
Authorization: Bearer <api_key>
{
"name": "Example Foundation",
"mission": "Defending digital rights",
"suggested_amounts": [1000, 2500, 5000],
"currency": "USD",
"campaign_name": "2026 Fund",
"campaign_goal": 1000000,
"contact_email": "donate@example.org",
"cover_image_url": "https://example.org/hero.jpg",
"cover_image_position": "center top",
"website_url": "https://example.org",
"social_share_text": "Donate with Zcash!"
}Update Donation Link
PATCH /api/payment-links/{id}
Authorization: Bearer <api_key>
{
"name": "Updated Foundation Name",
"donation_config": {
"mission": "Updated mission statement",
"campaign_goal": 2000000
}
}Only include the fields you want to change. Omitted fields keep their existing values.
Get Donation Link Info (Public)
GET /api/payment-links/{slug}/infoReturns donation config, campaign progress, org name. No authentication required. Rate limited.
Create Donation Invoice (Public)
POST /api/payment-links/{slug}/checkout
{
"amount": 5000,
"currency": "USD"
}Amount in cents. Creates an invoice and returns invoice_id and checkout_url.
Add a donation widget to any website with a single script tag. The widget renders a self-contained card with your campaign image, mission, progress bar, and a "Donate with Zcash" button that opens your CipherPay donation page.
Basic embed
<script src="https://cipherpay.app/embed.js"
data-campaign="your-campaign-slug"></script>All options
<script src="https://cipherpay.app/embed.js"
data-campaign="your-campaign-slug"
data-locale="en"
data-theme="dark"></script>Attributes:
data-campaign — your donation link slug (required)data-locale — language for the donate page link: en, es, pt, ar (default: en)data-theme — dark or light (default: dark)WordPress — paste the script tag into a Custom HTML block. No plugin needed.
Static sites — add the script tag wherever you want the widget to appear.