# Bulk Data Operations
Source: https://docs.payreque.st/advanced-features/bulk-data-operations
Import/export workflows
# Bulk Data Operations
"Bulk data operations" in PayRequest today means two things: mass-updating existing records with **Bulk Actions**, and pulling records out to CSV with **Export**. Both live in the same place and share the same selection tools.
There is currently no CSV **import** tool for creating customers, products, invoices, or orders in bulk — records are created individually or through the checkout/API flow. If you need to migrate a large dataset into PayRequest, contact support.
## Where to Find It
Go to **Dashboard → Bulk Actions** (`/bulk`). From there you can:
* Select items manually, or filter by tag with AND/OR logic
* Apply a mass action (price adjustments, pause/resume/cancel subscriptions, tag changes, status updates, and more depending on entity type)
* Export the selected items to CSV
For the full list of supported actions per entity, see [Bulk Operations](/organization-and-automation/bulk-operations). For CSV export details (columns, filters, file naming), see [Export Functions](/analytics-and-reporting/export-functions).
## Working With Larger Datasets
Use tags to segment large datasets before running a bulk action. Tagging a group first (e.g. "Q3 Price Review") lets you select exactly the right records with AND/OR tag logic instead of paging through everything manually.
* Every bulk action is validated before it runs — errors block execution, warnings let you proceed with caution
* Every action is logged in the Bulk Actions history with the entity type, action, item count, and result, so large changes stay auditable
* For read-only analysis of large datasets, export to CSV and work in a spreadsheet rather than paging through the dashboard
## FAQ
Not today. PayRequest doesn't have a self-service CSV import tool for customers, products, invoices, or orders. If you're migrating from another platform, reach out to support.
They're the same feature described from different angles. This page is a quick pointer; [Bulk Operations](/organization-and-automation/bulk-operations) covers every mass-update action in detail, and [Export Functions](/analytics-and-reporting/export-functions) covers CSV export specifically.
You can read and write records programmatically via the [API](/api/overview), which is often a better fit for scripted, recurring, or large-scale data operations than the dashboard UI.
## Next Steps
Full list of mass actions by entity type
CSV export details and column reference
# Custom CSS
Source: https://docs.payreque.st/advanced-features/custom-css
Shop styling and branding
# Custom CSS
PayRequest doesn't currently offer a free-form CSS editor for your shop or payment pages. Instead, branding is handled through a set of built-in controls: your logo, an accent color, and a library of preset page themes — no CSS knowledge required, and nothing that can break your checkout layout.
If you were looking for a way to inject your own stylesheet, that isn't available today. This page documents the styling controls that do exist.
## Logo
Upload your shop logo from **Shop Settings**. It's used across your storefront and (via your business details) on invoices.
## Accent Color
Set an accent color in **Shop Settings** to tint buttons and highlights across your storefront to match your brand.
## Page Themes
PayRequest Pages support a set of preset visual themes that change the page background and card styling, layered on top of your accent color. Pick a theme from the **Page Theme** picker when editing a PayRequest Page.
| Theme | Notes |
| - | - |
| Default | Standard dark PayRequest look |
| Solana | Free for all accounts |
| Crypto Native | Free for all accounts |
| Neon Pop | Premium |
| Minimal Light | Premium — light background |
| Midnight Glass | Premium |
| Cyber Arcade | Premium |
| Fintech Trust | Premium |
| Zen Earth | Premium — light background |
Most themes use a dark background; **Minimal Light** and **Zen Earth** use a light background instead. Premium themes require a Premium (or higher) subscription — see [PayRequest Plans](/business-settings/payrequest-plans) for what's included in each plan.
## FAQ
Not currently. Styling is limited to logo, accent color, and the preset theme library above. If custom CSS is important for your use case, let support know — it helps prioritize the roadmap.
Page themes apply to PayRequest Pages. Check your specific page in the dashboard to confirm how a theme renders across its different states before relying on it for a launch.
No — themes only affect visual styling (background and card appearance). Your product listings, forms, and payment flow behave the same regardless of theme.
## Next Steps
Pair your branding with a custom domain
See which plan unlocks Premium themes
# JavaScript Snippets
Source: https://docs.payreque.st/advanced-features/javascript-snippets
Advanced tracking and customization
# JavaScript Snippets
PayRequest doesn't have a general-purpose custom JavaScript field (no place to paste in Google Analytics, Meta Pixel, or a custom tracking script that runs on your shop or payment pages). What does exist today is a copy-paste **embed snippet** for Smart Links, which puts a "buy button" on your own website.
If you're looking for third-party analytics/tracking injection on your PayRequest Page or shop, that isn't available yet. This page covers the embeddable Smart Link button, which is the closest existing feature.
## Embeddable Buy Buttons
Every [Smart Link](/payment-processing/smart-links) can generate an embed snippet — a small HTML block (a stylesheet link plus a styled `` button) that you paste into your own website to link straight to that Smart Link's checkout.
Go to **Smart Links**, and open the one you want to embed.
Scroll to **Embed button on your website**.
Choose between **Default**, **Dark**, or **Outline** button styles.
Click to copy — it's a `` tag pulling PayRequest's button stylesheet plus an `` tag styled as a button, linking to your Smart Link URL.
Drop the snippet into your website's HTML wherever you want the buy button to appear.
This is a plain HTML link styled as a button — there's no JavaScript to configure, and nothing to maintain beyond pasting the snippet once. If you change the Smart Link's price or product later, the embedded button keeps working since it just links to the Smart Link URL.
## Tracking Conversions Elsewhere
Since there's no native pixel/analytics field, two practical options if you need to track conversions from PayRequest payments on your own site or ad platform:
* **Webhooks**: Use the [`payment.succeeded` webhook](/organization-and-automation/webhook-configuration) to fire your own server-side conversion event when a payment completes.
* **On-success redirect**: Some Smart Link configurations support an on-success action/URL — if yours redirects to a page on your own domain after payment, you can place tracking scripts on that landing page itself.
## FAQ
Not as a built-in settings field today. The most reliable way to track conversions is the `payment.succeeded` webhook, handled server-side.
It's a stylesheet link plus a plain HTML button/link — no JavaScript executes on your page beyond what your own site already runs.
Not currently — Default, Dark, and Outline are the available styles.
## Next Steps
Create and manage the links you can embed
Track payments server-side instead of client-side
# Webhook Development
Source: https://docs.payreque.st/advanced-features/webhook-development
Build custom integrations
# Webhook Development
This page covers developer-facing details for building against PayRequest's webhook — signature verification in more than one language, local testing, and how to build a resilient receiver given the delivery model. Start with [Webhook Configuration](/organization-and-automation/webhook-configuration) first if you haven't set up your webhook URL yet — this page assumes you already have a URL and signing secret configured.
PayRequest currently sends one event, **`payment.succeeded`**, to a single webhook URL per account. Everything below builds on that.
## Signature Verification in Other Languages
Every request carries an `X-PayRequest-Signature` header formatted as `sha256={hmac}` — an HMAC-SHA256 of the raw request body, signed with your webhook secret. The PHP example is in [Webhook Configuration](/organization-and-automation/webhook-configuration#verifying-the-signature); here's the same check in Node.js and Python.
**Node.js (Express)**
```javascript theme={null}
const crypto = require('crypto');
app.post('/webhooks/payrequest', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.headers['x-payrequest-signature'] || '';
const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.PAYREQUEST_WEBHOOK_SECRET)
.update(req.body)
.digest('hex');
const sigBuffer = Buffer.from(signature);
const expectedBuffer = Buffer.from(expected);
if (sigBuffer.length !== expectedBuffer.length || !crypto.timingSafeEqual(sigBuffer, expectedBuffer)) {
return res.status(401).send('Invalid signature');
}
const event = JSON.parse(req.body);
// handle event.data...
res.status(200).send('ok');
});
```
**Python (Flask)**
```python theme={null}
import hashlib
import hmac
@app.route('/webhooks/payrequest', methods=['POST'])
def payrequest_webhook():
signature = request.headers.get('X-PayRequest-Signature', '')
expected = 'sha256=' + hmac.new(
WEBHOOK_SECRET.encode(), request.data, hashlib.sha256
).hexdigest()
if not hmac.compare_digest(expected, signature):
return 'Invalid signature', 401
event = request.get_json()
# handle event['data']...
return 'ok', 200
```
In every language, compare signatures with a constant-time comparison function (`hmac.compare_digest`, `crypto.timingSafeEqual`, PHP's `hash_equals`) — never `==`/`===`, which leaks timing information.
## Idempotency
With a single event type today, duplicate-processing risk is lower than on platforms with dozens of event types, but it's still worth guarding against — a network retry on your own infrastructure, a webhook.site relay, or a manual reconciliation script could all deliver the same `payment.succeeded` event more than once.
* Use `data.id` (the PayRequest transaction ID) as your idempotency key
* Before acting on an event, check whether you've already processed that transaction ID
* Because delivery isn't automatically retried by PayRequest (see below), you're more likely to see a *missing* event than a *duplicate* one — but your handler should tolerate both
## Delivery Model (Recap)
As covered in [Webhook Configuration](/organization-and-automation/webhook-configuration#delivery-behavior): dispatch is asynchronous via a queued job, requests time out after 10 seconds, and delivery is **best-effort** — there's no automatic retry if your endpoint is down or errors. Don't build an integration that assumes every payment will arrive as a webhook; reconcile periodically against the [API](/api/overview) or dashboard as a safety net, especially for anything revenue-critical.
## Testing Locally
There's no built-in test-send button, so the practical way to develop against the webhook is to trigger a real payment (testmode where your provider supports it) and inspect what arrives.
Use [ngrok](https://ngrok.com) (`ngrok http 3000`) or a similar tunnel to get a public HTTPS URL pointing at your local dev server.
Before wiring up real handler code, point your webhook URL at a fresh [webhook.site](https://webhook.site) endpoint to see the exact payload shape and headers PayRequest sends.
Go to **Settings → API Tokens**, paste your ngrok or webhook.site URL, and save.
Complete a real (or testmode) payment against your account and confirm the request arrives, the signature verifies, and your handler processes it correctly.
Remember to update the webhook URL back to your real endpoint before going live — there's only one URL per account, so a URL left pointed at a tunnel or webhook.site stops your production integration from receiving events.
## FAQ
Queue it. Your endpoint has 10 seconds to respond before PayRequest's request times out — do the minimum work needed to acknowledge receipt (verify signature, store/queue the event) and process the business logic asynchronously on your side.
Not currently — there's only one event type (`payment.succeeded`), so there's nothing to filter yet.
A 2xx status code to acknowledge receipt. Since PayRequest doesn't automatically retry failed deliveries, returning an error won't trigger a redelivery — it will just be logged as failed on PayRequest's side.
## Next Steps
Set up your webhook URL and see the full payload reference
Reconcile transaction state directly instead of relying solely on webhooks
# Customer Analytics
Source: https://docs.payreque.st/analytics-and-reporting/customer-analytics
Lifetime value and churn
# Customer Analytics
Understand which customers matter most, which ones need attention, and which have gone quiet — combining per-customer lifetime value with AI-assisted segmentation via the Billing Agent.
## Per-Customer Lifetime Value
Every customer's detail page shows a financial overview calculated from their real payment history:
| Metric | How it's calculated |
| - | - |
| **Total Revenue** | Sum of paid invoices + completed orders for this customer |
| **Outstanding Balance** | Sum of unpaid/overdue invoices |
This is a true lifetime-to-date figure based on actual paid transactions — not an estimate or projection.
Open any customer from **Customers** in your dashboard to see this breakdown alongside their orders, invoices, and subscriptions.
## AI-Assisted Segmentation (Billing Agent)
PayRequest doesn't calculate a single "churn rate" percentage. Instead, the **Billing Agent** (an in-dashboard AI assistant) can find and tag customers matching specific risk or value criteria on demand:
Customers with an invoice overdue by more than 7 days, or a subscription with a `failed` status. Ask the Billing Agent to "tag at risk" to find and tag them in one step.
Customers with no new invoices, orders, or subscriptions in the last 60 days. Ask "inactive customers" to surface them.
Customers ranked by total paid invoice revenue — your highest-value relationships. Ask "top customers" to see the list.
Customers missing an email address, so you can clean up your contact data. Ask "missing email".
The Billing Agent responds to natural-language requests — try phrases like "churn risk", "dormant customers", or "highest revenue" and it will match the closest action.
## FAQ
Not as a standalone percentage today. Use the Billing Agent's "at risk" and "inactive" segments as your churn signal, and act on them by tagging and following up.
Yes — it's based on paid invoices and completed orders, which includes invoices generated by subscription billing cycles.
The Billing Agent can tag matching customers, and tagged customers can then be exported via [Export Functions](/analytics-and-reporting/export-functions) filtered by that tag.
## Next Steps
See the full customer record, including LTV and outstanding balance
Segment customers with tags for exports and automation
Export a tagged customer segment to CSV
# Daily Business Summary
Source: https://docs.payreque.st/analytics-and-reporting/daily-business-summary
Receive an automated daily morning email with overnight activity, payments, orders, and key business metrics from the last 24 hours
# Daily Business Summary
Start every workday with a clear picture of what happened in your business. The Daily Business Summary is an automated email report delivered each morning at 8:00 AM, covering the last 24 hours of activity — including overnight billing jobs, payments, new customers, and your current business health.
The Daily Business Summary is **opt-in** — it's disabled by default. Enable it in **Settings → Notifications** under the **Reports & Digests** category.
## What's Included in Your Summary
The daily email is organized into four clear sections so you can quickly scan what matters most.
### Overnight Activity
Every night, PayRequest runs automated jobs to keep your billing running smoothly. The summary tells you exactly what happened:
| Job | What It Tracks |
| - | - |
| **Subscription Renewals** | How many subscriptions were billed and total revenue collected |
| **Renewal Failures** | Subscriptions that failed to renew (payment issues) |
| **Trial Conversions** | Free trials that converted to paid subscriptions |
| **Invoice Reminders Sent** | Automated payment reminders sent to customers |
| **Debt Collection Notices** | Debt collection emails processed |
Overnight jobs run on a fixed schedule: subscription billing at 5:00 AM, trial conversions at 6:00 AM, debt collection at 7:00 AM, and invoice reminders at 9:00 AM. The daily summary is sent at 8:00 AM covering the last 24 hours, so it includes the current night's billing and trial jobs plus yesterday's reminders.
The summary includes smart alerts:
* **All renewals successful** — a green confirmation so you know everything is healthy
* **Renewal failures detected** — a warning with the count, prompting you to check your subscriptions dashboard
### Payments & Revenue
A quick snapshot of money flowing through your business:
* **Payments Received**: Total number of successful payments
* **Revenue**: Total amount collected
* **Failed Payments**: Payments that didn't go through
* **Chargebacks**: Disputes initiated by customers (count and amount)
* **Refunds**: Refunds processed (count and amount)
### Customers & Orders
Track your business growth day by day:
* **New Customers**: Customers who registered or were added
* **New Orders**: Orders placed (with total value)
* **New Subscriptions**: Recurring subscriptions started
* **Cancelled Subscriptions**: Subscriptions ended by customers
### Current Status
A real-time health check of your business at the time the report is generated:
* **Active Subscriptions**: Total active recurring subscriptions
* **Outstanding Invoices**: Unpaid invoices (count and total amount)
* **Overdue Invoices**: Past-due invoices that need attention (count and total amount)
When you have overdue invoices, the summary includes a direct **"View Invoices"** button so you can take action immediately.
## Enabling the Daily Summary
The Daily Business Summary is disabled by default. To enable it:
1. Navigate to **Settings** in your dashboard
2. Click on the **Notifications** tab
3. Scroll to the **Reports & Digests** section
4. Toggle **"Daily Business Summary"** to ON
You can enable or disable the summary at any time. Changes take effect for the next morning's delivery.
## Delivery Schedule
| Detail | Value |
| - | - |
| **Delivery Time** | 8:00 AM daily |
| **Reporting Period** | Last 24 hours |
| **Sent To** | Your registered account email |
| **Queue** | Processed via the emails queue |
### What the 24-Hour Window Covers
Since the email is sent at 8:00 AM, the reporting window runs from **yesterday 8:00 AM to today 8:00 AM**. This means each summary includes:
* **Yesterday's daytime**: Customer sign-ups, orders, payments throughout the day
* **Last night's jobs**: Subscription billing (5:00 AM), trial conversions (6:00 AM), debt collection (7:00 AM)
This ensures you never miss overnight activity in your morning briefing.
## Daily Summary vs Monthly Report
PayRequest offers two automated reports that complement each other:
| Feature | Daily Business Summary | Monthly Subscription Report |
| - | - | - |
| **Frequency** | Every day at 8:00 AM | 1st of each month at 8:00 AM |
| **Period** | Last 24 hours | Previous calendar month |
| **Focus** | Operational overview | Strategic subscription analytics |
| **Includes** | Payments, orders, customers, overnight jobs | MRR, ARPU, growth rate, churn rate, top products |
| **Best For** | Daily operations monitoring | Monthly business review |
| **Default** | Off (opt-in) | On (opt-out) |
For the best insights, enable both reports. Use the **Daily Summary** to stay on top of day-to-day operations, and the **Monthly Report** for strategic planning and trend analysis.
## Making the Most of Your Daily Summary
### Morning Routine
Spend 2 minutes each morning to:
1. **Check overnight billing**: Were all renewals successful? Any failures to address?
2. **Review payments**: How much revenue came in yesterday?
3. **Spot issues early**: Any chargebacks, refunds, or failed payments?
4. **Track growth**: New customers and orders trending up or down?
5. **Handle overdue invoices**: Click through to follow up on past-due payments
### When to Take Action
| Signal | Action |
| - | - |
| Renewal failures > 0 | Check failed subscriptions, contact customers about payment methods |
| Chargebacks received | Review disputed transactions, improve payment descriptions |
| Overdue invoices growing | Send manual reminders or enable automated reminders |
| No new customers in days | Review marketing efforts, check shop availability |
| Failed payments increasing | Investigate payment provider issues |
## Frequently Asked Questions
Yes. A summary with zero activity is still valuable — it confirms your systems are running and nothing needs attention. The "Current Status" section always shows your live business metrics.
Currently, the summary is sent at 8:00 AM (Europe/Amsterdam timezone). This timing is optimized to include overnight billing results (5:00-7:00 AM) while arriving before your workday starts.
The daily summary uses the same email system as all PayRequest emails (Postmark). It counts as one transactional email per day per account.
Real-time notifications (like "Payment Received" or "New Order") are sent immediately when events occur. The daily summary is a consolidated overview of everything that happened in the last 24 hours, including background job results that don't trigger individual notifications.
Currently, all sections are included in every summary. The email is designed to be a quick scan — sections with zero activity take up minimal space.
## Next Steps
Enable the monthly report for deeper subscription analytics and strategic insights.
View real-time business metrics directly in your dashboard.
Set up automated emails for customer communication and payment follow-ups.
Learn strategies to recover failed subscription payments.
***
*The Daily Business Summary keeps you informed without checking your dashboard. Enable it today and never miss what happened overnight.*
# Expense Tracker
Source: https://docs.payreque.st/analytics-and-reporting/expense-tracker
Keep track of your business expenses and see where your money goes each month
# Expense Tracker 💳
Never lose track of your business expenses again! The Expense Tracker automatically finds your recurring costs and shows them in a simple calendar view, so you always know what's being charged and when.
## What is the Expense Tracker?
Think of it as your automatic expense diary. Once you connect your bank account, PayRequest looks at your transactions and finds things you pay for regularly - like software subscriptions, hosting, and services. No more spreadsheets or manual tracking needed!
### Why You'll Love It
Connect your bank and let PayRequest discover your recurring costs for you.
Visual breakdown shows exactly what you're spending on each category.
Get alerted when a service raises their price so you can decide what to do.
Tag expenses like "Marketing" or "Software" to understand your spending better.
## Getting Started
### Opening Your Expense Calendar
1. Click **Expenses** in your dashboard menu
2. You'll see a monthly calendar with all your expenses
**What's on the screen:**
* 💰 **Summary cards** at the top show your current balance and monthly costs
* 📅 **Calendar view** displays all expenses organized by date
* 🎨 **Colored cards** show different expense types at a glance
You need a **bank connection** (Ponto) for automatic expense detection. Set this up in Settings → Integrations first.
### Understanding the Colors
The calendar uses colors to help you see what's happening:
* **🟢 Green cards**: Recurring expenses that were paid this month
* **🔵 Blue cards**: One-time purchases
* **🟠 Orange cards**: Expenses that haven't been paid yet
* **🟣 Purple cards**: Multiple expense types on the same day
Click any colored card to see more details about that expense.
## Finding Your Recurring Expenses
### Let PayRequest Do the Work
Instead of entering each expense manually, let PayRequest find them for you:
1. Click the **"Detect Recurring Expenses"** button
2. Wait a few seconds while PayRequest scans your bank transactions
3. A summary shows what was found
**You'll see:**
* How many recurring expenses were found
* How many new ones were added
* How many existing ones were updated
PayRequest looks at your last 6 months of bank transactions to find patterns. It can even spot when you have multiple subscription tiers for the same service!
### What Gets Detected?
PayRequest automatically finds:
* 📱 Software subscriptions (Netflix, Spotify, etc.)
* 🖥️ Hosting and servers
* 📧 Email and marketing services
* 💳 Payment processing fees
* 🔧 Business tools and licenses
* 📊 Analytics and monitoring services
Run detection once a month to catch new subscriptions and keep your expense list up to date.
## Adding Expenses Manually
If something isn't detected automatically, you can add it yourself:
Find the button at the top of your expense calendar
* **Name**: What's the expense? (e.g., "Spotify Premium")
* **Amount**: How much does it cost?
* **Next Due Date**: When's the next payment?
* **Frequency**: Weekly, Monthly, or Yearly?
Click "Add Expense" and it appears on your calendar
## Organizing with Tags
### Why Use Tags?
Tags help you group expenses by category so you can see:
* How much you spend on marketing vs hosting
* Which categories are growing over time
* Where you might be able to cut costs
**Popular categories:**
* 🖥️ Hosting
* 🛠️ Software & Tools
* 📧 Marketing & Ads
* 💳 Payment Processing
* 📊 Analytics
* 🔒 Security
### Tagging an Expense
Click on any expense in your calendar
Look for the 🏷️ icon next to the expense name
* Select from existing tags
* Or click "Create New Tag" to add a new category
Your tags will appear as colored labels on the expense
Create your main expense categories first (Hosting, Marketing, Tools), then tag expenses as you review them.
## Viewing Your Spending Breakdown
### See Where Your Money Goes
Click the **"💰 Spending"** button to open your spending analysis.
**What you'll see:**
* **Total monthly expenses** in one number
* **Breakdown by category** with percentages
* **Visual bars** showing spending distribution
* **Expense counts** for each category
**Example:**
```
Your Monthly Spending
Total: €1,247.50
🖥️ Hosting €450 (36%) ████████░░ 6 expenses
🛠️ Tools €320 (26%) ██████░░░░ 5 expenses
📧 Marketing €180 (14%) ████░░░░░░ 3 expenses
📊 Analytics €120 (10%) ███░░░░░░░ 2 expenses
```
This updates automatically as you add or edit expenses, so you always have an accurate picture of your spending.
### Using Spending Insights
**Weekly check-in:**
* Are you staying within budget?
* Any unexpected charges?
* New services you forgot about?
**Monthly review:**
* Which categories are growing?
* Where can you optimize costs?
* Any subscriptions you don't use anymore?
## Price Increase Alerts
### Automatic Monitoring
PayRequest watches your expenses and alerts you when a service increases their price by more than 5%.
### Where You'll See Alerts
**1. On the expense itself:**
When you click an expense that increased in price, you'll see:
⚠️ **Price Increase Detected (+46%)**
This expense increased from **€17** (Aug 1) to **€25** (Oct 1) over **2 months**.
**2. In the expense list:**
* Orange badge shows the percentage: **"+46%"**
* Trending arrow icon appears next to the name
**3. Summary alert:**
At the top of your expense manager:
> ⚠️ **2 expenses with price increases detected**
### What to Do About It
When you spot a price increase:
1. **Check your email** for announcements from the service
2. **Review if you still need it** - maybe downgrade to a cheaper plan?
3. **Look at alternatives** - are competitors cheaper now?
4. **Negotiate** - contact them and ask about discounts
5. **Update your budget** to reflect the new cost
Some services like cloud hosting charge based on usage. If you see an "increase", check if you're just using more resources rather than the price actually going up.
## Managing Your Expenses
### Editing an Expense
1. Click on the expense in your calendar OR open "Manage Expenses"
2. Click the ✏️ (pencil) icon
3. Update any information (name, amount, date, frequency)
4. Save your changes
### Deleting an Expense
If you cancel a subscription or want to remove something:
1. Open the expense
2. Click the 🗑️ (trash) icon
3. Confirm you want to delete it
The expense disappears from your calendar but doesn't affect your bank transactions.
### Viewing All Expenses
Click **"Manage Expenses"** to see a complete list of everything you're tracking:
* All expense names and amounts
* Next payment dates
* Categories (tags)
* Whether they were auto-detected or manually added
This is great for getting an overview or quickly editing multiple expenses.
## Filtering Your View
Use the filter buttons to focus on specific expense types:
* **All**: Shows everything
* **🔁 Recurring**: Only subscription-type expenses (your true monthly burn rate)
* **One-time**: Only single purchases
Filter to "Recurring" to see your actual monthly costs without one-off purchases cluttering the view.
## Common Questions
**If automatic detection missed it:**
* It might be too new (needs at least 2 payments to detect a pattern)
* The merchant name varies too much between charges
* It's a one-time purchase, not recurring
**Solution:** Just add it manually! Click "Add Expense" and enter the details.
**This usually happens when:**
* The bank transaction description is different from your expense name
* The amount changed and is outside the matching range
* Your bank sync is delayed
**Solution:** Edit the expense name to match what shows on your bank statement exactly.
**Why this happens:**
* PayRequest found different subscription tiers (like Basic and Pro plans)
* You added it manually and then detection also found it
* The service charges on multiple dates
**Solution:** Go to "Manage Expenses" and delete the duplicate entry.
PayRequest looks at your bank transactions and finds patterns - things you pay regularly with similar names and amounts. It can even recognize when "DigitalOcean" and "DIGITAL OCEAN INC" are the same service.
Yes! While the automatic detection focuses on recurring costs, you can manually add any expense you want to track. One-time purchases from your bank also show up in blue on the calendar.
## Tips for Success
### 1. Check Your Expenses Weekly
Make it a Monday morning habit:
* Scan the calendar for any surprises
* Review what's coming up this week
* Spot any price increases early
### 2. Tag Everything
Spend 10 minutes tagging your expenses:
* Makes spending analysis actually useful
* Helps at tax time
* Shows where your money really goes
### 3. Run Detection Monthly
First of every month:
* Click "Detect Recurring Expenses"
* Review what was found
* Add any missing ones manually
### 4. Review Quarterly
Every 3 months, audit your expenses:
* Cancel services you don't use
* Look for cheaper alternatives
* Update any changed amounts
### 5. Use It for Budgeting
Set spending targets per category:
* "We should keep hosting under €500"
* "Marketing budget is €300/month"
* Check your spending analysis to stay on track
## Next Steps
Set up Ponto to enable automatic expense detection.
Learn how tags work for organizing all your data.
See your complete business overview with revenue and expenses.
Understand how your income and expenses connect.
***
*Keep your finger on the pulse of your business expenses. Know what you're paying for, and make smarter decisions about where your money goes!* 💳✨
# Export Functions
Source: https://docs.payreque.st/analytics-and-reporting/export-functions
CSV exports with filtering
# Export Functions
Export your data to CSV for accounting, backups, or analysis in a spreadsheet — filtered by tags so you only export exactly what you need.
Exports are available for **Customers**, **Subscriptions**, **Products**, **Invoices**, and **Orders**.
## Exporting Data
Navigate to **Bulk Actions** in your dashboard.
Select **Export** as the action type, then pick which entity you want to export (Customers, Subscriptions, Products, Invoices, or Orders).
Select the **Export as CSV** option.
Select one or more tags to only export items with those tags. Leave empty to export everything.
Confirm the export — your browser downloads a CSV file named `{entity}_export_{date}.csv`.
## What's Included Per Entity
| Entity | Columns |
| - | - |
| **Customers** | ID, Name, Email, Phone, Company, Language, Tax Exempt, Created, Tags |
| **Subscriptions** | ID, Name, Customer, Product, Amount (EUR), Interval, Status, Next Billing, Tags |
| **Products** | ID, Name, SKU, Price (EUR), Tax Rate (%), Type, Status, Stock, Tags |
| **Invoices** | Invoice details including status and amounts |
| **Orders** | Order details including status and amounts |
Exports are scoped to your account only — you can never export another business's data.
## FAQ
CSV is the supported export format today. Use the tag filter to narrow down exactly what you need, then open the CSV in Excel, Numbers, or Google Sheets if you need a formatted document.
Not yet — exports are triggered manually from Bulk Actions. For ongoing reporting, consider the [API](/api/overview) to pull data programmatically on your own schedule.
This depends on the tag filter and entity selection — archived items are included unless you filter them out with tags.
## Next Steps
See all bulk actions available beyond exporting
Organize records with tags so exports are easy to filter
Pull data programmatically instead of exporting manually
# Business Insights Dashboard
Source: https://docs.payreque.st/analytics-and-reporting/insights-dashboard
Monitor your business performance with comprehensive analytics and real-time metrics
# Business Insights Dashboard 📊
The Business Insights dashboard is your command center for understanding your business performance. Get a comprehensive overview of your revenue trends, customer growth, subscription metrics, and recent activities - all in one beautifully designed interface.
## What You'll Find on Your Insights Dashboard
### 📈 Monthly Revenue Comparison
Track your business growth with side-by-side revenue comparisons:
* **Current Month vs. Last Month**: See exactly how your revenue is trending
* **Percentage Growth**: Quick visual indicators show if you're growing or need attention
* **Interactive Charts**: Hover over any point to see detailed daily breakdowns
* **Smart Date Ranges**: Automatically compares equivalent time periods for accurate insights
The monthly comparison chart uses your actual transaction data, so you'll see real-time updates as payments are processed throughout the month.
### 💰 Key Performance Metrics
Get instant insights into your most important business metrics:
#### Monthly Revenue (labeled "MRR")
* **Current Month-to-Date**: Total paid Mollie transaction volume so far this month, compared to the same period last month
* **Growth Trend**: See if this month's revenue is tracking ahead or behind last month
* **Sparkline Chart**: Quick visual representation of your revenue trend over the past 12 months
This metric is labeled "MRR" on the dashboard, but it's actually **gross month-to-date revenue from Mollie transactions** (all paid Mollie payments, one-time and recurring combined) — not a true Monthly Recurring Revenue figure limited to active subscriptions, and it doesn't include Stripe, PayPal, crypto, or bank transfer payments.
#### Financial Health Indicators
* **Mollie Balance**: See your available payment processor balance (when connected)
* **Bank Balance**: Monitor your connected bank accounts through Ponto integration
* **Transfer Schedule**: Know when to expect fund transfers
#### Business Growth Metrics
* **Active Subscriptions**: Track your growing subscriber base
* **New Customers**: Monitor customer acquisition this month
* **Payment Volume**: See how many payments you're processing
All metrics update automatically as new transactions are processed, giving you the most current view of your business.
Check your insights on any device - the dashboard adapts perfectly to mobile and tablet screens.
### 🕒 Recent Activity Log
Stay informed about what's happening in your business with the comprehensive activity log:
#### What You'll See
* **Recent Actions**: Create, update, delete operations on customers, products, subscriptions
* **Payment Activities**: Successful payments, failed payments, refunds
* **Email Communications**: Invoice emails sent, payment confirmations, reminders
* **System Events**: Subscription renewals, trial expirations, mandate updates
#### Activity Display Options
* **10 or 25 entries**: Choose how many recent activities to display
* **Smart Icons**: Color-coded icons instantly tell you what type of activity occurred
* **Time Stamps**: See exactly when each activity happened (e.g., "2 uur geleden")
* **Entity Details**: Click through to see the specific customer, invoice, or subscription involved
#### Activity Types & Icons
* 🟢 **Create Actions**: New customers, products, or subscriptions (green plus icon)
* 🔵 **Updates**: Changes to existing records (blue pencil icon)
* 🔴 **Deletions**: Removed items (red trash icon)
* 💳 **Payments**: Successful payments and transactions (green credit card icon)
* 📧 **Emails**: Communications sent to customers (purple envelope icon)
### 📋 Recent Business Activities
Quick overviews of your latest business activities across different areas:
#### Recent Invoices
* **Latest 5 invoices**: See your most recent billing activity
* **Payment Status**: Quickly identify paid, pending, and unpaid invoices
* **Customer Names**: Know who you're billing and when
* **Amount Tracking**: Monitor invoice values at a glance
#### Recent Subscriptions
* **New Subscriptions**: See customers who recently signed up
* **Status Overview**: Active, trial, paused, or canceled subscriptions
* **Product Information**: Which plans are customers choosing
* **Growth Patterns**: Identify your most popular subscription offerings
#### Recent Orders
* **Shop Activity**: Track one-time purchases through your shop
* **Order Values**: See the revenue from each order
* **Customer Orders**: Monitor repeat purchase behavior
* **Order Status**: Completed, processing, or pending orders
### 🔄 Upcoming Subscription Renewals
Never miss a renewal with the upcoming renewals tracker:
#### Renewal Overview
* **Next 30 Days**: See all subscriptions renewing in the coming month
* **Priority Indicators**: Color-coded badges show urgency (red for today/tomorrow, amber for this week)
* **Revenue Forecast**: Understand upcoming cash flow from renewals
* **Customer Details**: Know which customers are renewing when
#### Renewal Management
* **Days Until Renewal**: Clear countdown for each subscription
* **Amount Information**: See the exact renewal amount for each subscription
* **Customer Context**: Customer name and subscription details
* **Quick Actions**: Jump directly to subscription management if needed
Pay special attention to subscriptions showing in red (today/tomorrow) or amber (this week) - these may need your attention if there are payment issues.
## Making the Most of Your Insights
### Daily Business Check-ins
Start each day by reviewing:
1. **Yesterday's Activity**: Check the activity log for any important overnight events
2. **Today's Renewals**: Look for any subscriptions renewing today
3. **Recent Payments**: Ensure payment processing is running smoothly
4. **New Customers**: Welcome any new sign-ups
### Weekly Business Reviews
Once a week, dive deeper into:
1. **Monthly Trends**: Are you on track to meet your revenue goals?
2. **Customer Growth**: How many new customers did you acquire?
3. **Subscription Health**: Any concerning cancellation patterns?
4. **Payment Issues**: Any failed payments that need attention?
### Monthly Planning
Use month-end insights for:
1. **Growth Analysis**: Compare this month to last month's performance
2. **Revenue Forecasting**: Use renewal data to predict next month's revenue
3. **Customer Retention**: Analyze subscription lifecycle patterns
4. **Business Optimization**: Identify areas for improvement
## Understanding Your Data
### Revenue Metrics
All revenue data comes from your actual payment transactions, ensuring accuracy. We track:
* **Paid Transactions**: Only completed payments count toward revenue
* **Currency Handling**: All amounts displayed in your configured currency (typically EUR)
* **Real-time Updates**: New payments appear within minutes
### Activity Tracking
The activity log captures:
* **User Actions**: Things you do in the dashboard
* **System Events**: Automated processes and scheduled tasks
* **Customer Activities**: Actions taken by your customers
* **Integration Events**: Data from connected payment providers
### Data Privacy
Your insights dashboard respects privacy:
* **User-Scoped**: You only see data for your business
* **Secure Access**: All data is encrypted and access-controlled
* **GDPR Compliant**: Customer data handling follows European privacy standards
## Troubleshooting Common Questions
Revenue data comes from completed payments through your connected payment providers. If you're not seeing data:
* Ensure your payment provider (Mollie/Stripe) is connected and active
* Check that you've processed actual payments (test payments may not appear)
* Allow up to 15 minutes for new payments to appear in insights
The dashboard's "MRR" figure is actually month-to-date gross revenue from **Mollie transactions only** — it includes one-time payments, not just subscriptions, and excludes Stripe, PayPal, crypto, and bank transfer payments. If it seems off:
* Remember it resets and recalculates from the 1st of each month
* Check whether the payments you expected to see went through Mollie specifically
* For a true recurring-revenue view limited to active subscriptions, check the [Monthly Subscription Report](/analytics-and-reporting/monthly-subscription-report) instead
If you're not seeing activities:
* Activities are only recorded for actions within PayRequest
* External payment provider activities may not appear immediately
* Try refreshing the page or adjusting the display limit (10 vs 25 entries)
Renewal dates are based on your subscription billing cycles:
* Check individual subscription "next billing date" settings
* Paused subscriptions won't show renewal dates
* Failed payment subscriptions may have delayed renewal dates
## Next Steps
Dive deeper into your revenue analytics with detailed tracking and forecasting tools.
Generate detailed reports for accounting, tax purposes, and business analysis.
Understand your customer behavior, lifetime value, and retention patterns.
Learn how to export your data for external analysis and record keeping.
***
*Your insights dashboard is designed to give you confidence in your business decisions. The more you use PayRequest, the richer your insights become!* 📊✨
# Monthly Subscription Report
Source: https://docs.payreque.st/analytics-and-reporting/monthly-subscription-report
Receive automated monthly email reports with comprehensive subscription analytics and actionable insights
# Monthly Subscription Report 📊
Stay on top of your subscription business with automated monthly email reports delivered straight to your inbox. Get a comprehensive overview of your subscription performance, revenue trends, customer behavior, and actionable insights - all without lifting a finger.
## What Is the Monthly Subscription Report?
The Monthly Subscription Report is an automated email summary that provides a complete retrospective analysis of your subscription business performance. Every month, you'll receive a beautifully designed email showcasing your key metrics, growth patterns, and areas that need attention.
The report is sent on **the 1st of each month at 8:00 AM**, covering the previous month's data. For example, on November 1st, you'll receive insights for October.
## What's Included in Your Report
### 🎯 Business Overview
Get instant visibility into your subscription health with key metrics:
* **Active Subscriptions**: Total number of paying subscribers at month-end
* **New Subscriptions**: Customers who started subscriptions during the month
* **Reactivated Subscriptions**: Customers who resumed paused or canceled subscriptions
* **Cancelled Subscriptions**: Customers who ended their subscriptions
* **Total Revenue**: Your Monthly Recurring Revenue (MRR) for the period
* **Average Revenue Per User (ARPU)**: The average value of each subscription
See at a glance whether you gained or lost subscribers, with clear percentage indicators showing business momentum.
Understand exactly how much recurring revenue your subscriptions generated and what each customer is worth on average.
### 🔄 Renewals & Billing Performance
Monitor the health of your billing system with detailed renewal statistics:
* **Renewal Attempts**: Total number of subscription renewals processed
* **Successful Renewals**: How many renewals completed successfully
* **Success Rate**: Percentage of successful renewals (with performance rating)
* **Failed Payments**: Number of renewal failures that need attention
A renewal success rate above 95% is excellent! If you're seeing lower rates, the report will provide specific recommendations to improve payment success.
### 💳 Chargebacks & Refunds
Keep track of payment disputes and customer refunds:
* **Chargebacks**: Number and total value of payment disputes from customers
* **Refunds**: Number and total value of refunds processed
* **Total Impact**: Combined financial impact on your business
* **Smart Insights**: Automatic warnings when chargeback rates exceed healthy levels
The report provides intelligent recommendations based on your chargeback volume:
* ✅ **No issues**: Congratulations when you have zero chargebacks
* 👍 **Under control**: When impact is minimal (\< €100)
* ⚠️ **Monitor closely**: When you should review patterns (€100-500)
* 🚨 **Action required**: When high volumes need immediate attention (> €500)
### 🏆 Top 5 Most Popular Subscriptions
Discover which subscription products are driving your business:
* **Product Rankings**: Your five best-performing subscription offerings
* **Active Subscriber Count**: How many customers have each subscription
* **Monthly Revenue**: The recurring revenue generated by each product
Use this insight to:
* Focus marketing efforts on popular products
* Identify underperforming offerings
* Make informed pricing decisions
* Plan product development priorities
### 📈 Strategic Insights
Automatically calculated key performance indicators help you understand your business trajectory:
#### Growth Metrics
* **Growth Rate**: How fast your subscriber base is expanding
* **Churn Rate**: Percentage of customers canceling subscriptions
* **Payment Success Rate**: Overall billing reliability
#### Performance Benchmarks
* **Chargeback Rate**: Percentage of renewals resulting in disputes
* **Industry Comparisons**: See how your metrics compare to healthy benchmarks
The report includes intelligent recommendations when metrics fall outside healthy ranges, helping you identify and address issues before they impact revenue.
## Enabling Monthly Reports
Monthly Subscription Reports are controlled through your notification settings:
1. Navigate to **Settings** in your dashboard
2. Click on the **Notifications** tab
3. Scroll to the **Subscriptions** section
4. Toggle **"Monthly Subscription Report"** to ON
You can enable or disable these reports at any time. Your setting will take effect for the next scheduled report.
## Report Delivery Schedule
### When You'll Receive Reports
* **Delivery Date**: 1st of every month
* **Delivery Time**: 8:00 AM (local time)
* **Reporting Period**: Previous full calendar month
### Example Timeline
| Report Date | Covers | Sent To |
| - | - | - |
| November 1, 8:00 AM | October 1-31 | Your registered email |
| December 1, 8:00 AM | November 1-30 | Your registered email |
| January 1, 8:00 AM | December 1-31 | Your registered email |
Reports are sent to your PayRequest account email address. Make sure to keep your email address up to date in your profile settings.
## Making the Most of Your Reports
### Monthly Review Ritual
Set aside 15 minutes at the start of each month to:
1. **Review Growth Trends**: Are you gaining or losing subscribers?
2. **Check Renewal Health**: Is your billing system performing well?
3. **Address Failed Payments**: Take action on subscriptions that need attention
4. **Analyze Product Performance**: Double down on what's working
5. **Monitor Financial Impact**: Keep chargebacks and refunds in check
### Strategic Planning
Use monthly reports for:
**🎯 Goal Setting**
* Set subscriber growth targets based on trends
* Establish churn reduction goals
* Plan revenue milestones
**📊 Performance Tracking**
* Compare month-over-month growth
* Track improvement in payment success rates
* Monitor the impact of business changes
**💡 Business Optimization**
* Identify which products to promote
* Spot patterns in customer cancellations
* Improve payment recovery strategies
**📈 Forecasting**
* Predict future revenue based on active subscriptions
* Plan for seasonal subscription patterns
* Anticipate cash flow needs
### Sharing with Your Team
Forward reports to stakeholders who need subscription insights:
* Financial team for revenue forecasting
* Marketing team for campaign effectiveness
* Customer success team for retention focus
* Leadership for strategic decision-making
## Understanding Your Data
### What Counts in the Report
The monthly report includes:
* **Active Subscriptions**: All subscriptions in "active" status on the last day of the month
* **New Subscriptions**: Subscriptions created during the reporting period
* **Completed Renewals**: Successful recurring payments processed
* **Revenue**: Only from successfully completed payments
### Data Accuracy
* **Real-Time Collection**: Data is gathered throughout the month as events occur
* **Final Snapshot**: Reports reflect the complete month with no partial data
* **Transaction-Based**: All metrics calculated from actual payment transactions
* **Multi-Currency Support**: Amounts displayed in your configured currency
## Frequently Asked Questions
You'll still receive the report, but it will show zeros for subscription metrics. This is useful for tracking when you launch your subscription business and seeing your first metrics appear.
Each PayRequest account receives its own monthly report. If you manage multiple businesses, you'll receive a separate report for each one.
Yes! You'll receive your first report on the 1st of the month following your signup. The report will cover whatever data you have from the partial month.
Reports are sent to your primary account email. Update your email address in **Settings → Personal** to change where reports are delivered.
Reports are sent once per month. If you miss one, you can view your subscription data in your dashboard at any time by visiting **Subscriptions** and using the date filters.
Yes! Enable the **Daily Business Summary** for a morning overview of the last 24 hours, including overnight billing results, payments, and new customers. Go to **Settings → Notifications → Reports & Digests** to enable it. See the [Daily Business Summary](/analytics-and-reporting/daily-business-summary) documentation for details.
The report automatically includes chargeback data when relevant. This helps you stay informed about payment disputes so you can take action to reduce them and protect your revenue.
## What Makes These Reports Valuable
### Automated Business Intelligence
Instead of manually compiling data from various sources, you get:
* **Time Savings**: 15+ hours of manual reporting saved monthly
* **Consistency**: Same metrics tracked the same way every month
* **Completeness**: All relevant subscription data in one place
* **Accessibility**: Delivered to your inbox, no login required
### Strategic Insights
The report doesn't just show numbers - it provides context:
* **Performance Ratings**: Know if your metrics are healthy or need attention
* **Smart Recommendations**: Get actionable advice when issues are detected
* **Trend Analysis**: Compare performance to identify patterns
* **Benchmarking**: Understand how your business compares to healthy standards
### Proactive Problem Detection
Catch issues before they become serious:
* **Failed Payment Alerts**: See exactly which subscriptions need follow-up
* **Chargeback Warnings**: Get notified when dispute rates are concerning
* **Churn Monitoring**: Track subscription cancellations month-over-month
* **Revenue Tracking**: Spot declining revenue trends early
## Next Steps
View real-time subscription metrics in your dashboard for up-to-the-minute insights.
Learn how to manage the full subscription lifecycle to improve retention and reduce churn.
Discover strategies to recover failed subscription payments and reduce involuntary churn.
Set up automated emails to improve customer communication and reduce payment failures.
***
*Your Monthly Subscription Report is designed to make subscription management effortless. Enable it today and start receiving strategic insights delivered to your inbox automatically!* 📊✨
# PayRequest Page Visitor Analytics
Source: https://docs.payreque.st/analytics-and-reporting/payrequest-page-visitors
See how many people visit your PayRequest Page every day — a Premium plan feature
# PayRequest Page Visitor Analytics
The **Analytics** tab on your PayRequest Page shows how many people visited your page each day, so you can see whether traffic from a social post, README badge, or QR code actually reached your page.
Visitor analytics is a **Premium plan** feature (and included in Business too). Free plan accounts see the chart blurred with an **Upgrade to Premium** button — see [PayRequest Plans](/business-settings/payrequest-plans) for details.
## What It Shows
* **Daily visitor chart** — a line chart of unique visitors for the last 16 days
* **Total visitors** — the sum across that window, shown above the chart
* **Per-day tooltip** — hover any point on the chart to see the exact date and visitor count
## How Visits Are Counted
* Each visitor is counted **once per day** per PayRequest Page, even if they reload the page or come back multiple times that day
* Visits are identified using a hashed combination of IP address and browser — PayRequest never stores your visitors' raw IP addresses
* **You don't count as a visitor** when you view your own PayRequest Page while logged into your dashboard, so your own testing/previewing doesn't inflate the numbers
* Automated bots and crawlers are filtered out of the count
Because counting is per-day, refreshing your own page 10 times in a browser where you're signed in won't add 10 visitors — and a real visitor who checks your page twice in one day still only counts once.
## Accessing Visitor Analytics
Go to **PayRequest Page** from the main menu.
It sits between **Overview** and **Styling**.
The chart shows the last 16 days. Hover any point for the exact count on that day.
## Free Plan Accounts
If you're on the Free plan, the Analytics tab is still visible — the chart is shown blurred behind an **Upgrade to Premium** button so you know the feature exists and what upgrading unlocks. Visitor data is still being collected in the background, so once you upgrade your existing history is already there.
## Frequently Asked Questions
Only visits to your actual public PayRequest Page count. Visits to a Smart Link, a direct invoice link, or your dashboard don't count toward PayRequest Page visitor numbers.
No. PayRequest only stores a one-way hash used to deduplicate the same visitor within the same day — never raw IP addresses or any personally identifying information.
Not currently — the chart is fixed to the most recent 16 days.
Yes. Visitor analytics is available on Premium and Business — Free is the only tier without access.
## Next Steps
Compare Free, Premium, and Business plans
Customize your page's look and feel
Drive traffic to your PayRequest Page from GitHub and beyond
Revenue, subscriptions, and activity in one place
# Revenue Tracking
Source: https://docs.payreque.st/analytics-and-reporting/revenue-tracking
MRR and growth metrics
# Revenue Tracking
Track how your revenue is trending — on demand from your dashboard, or delivered automatically to your inbox.
## On-Demand: Insights Dashboard
The [Business Insights Dashboard](/analytics-and-reporting/insights-dashboard) is where you check revenue in real time:
* **Month-to-date revenue** compared to the same period last month (labeled "MRR" on the dashboard, though it's actually gross Mollie transaction revenue — see the note on that page for the exact definition)
* **12-month sparkline** showing the trend at a glance
* **Upcoming renewals** for the next 30 days, so you can forecast near-term cash flow
For a true recurring-revenue view scoped to active subscriptions only (not one-time payments), use the [Monthly Subscription Report](/analytics-and-reporting/monthly-subscription-report) instead of the dashboard's "MRR" figure.
## Automated: Scheduled Email Reports
PayRequest can email you revenue summaries automatically, so you don't have to check the dashboard every day:
Every morning at 8:00 — overnight payments, renewals, and key metrics from the last 24 hours
On the 1st of each month — a full retrospective on subscription revenue, ARPU, and growth
Both are opt-in — enable them in **Settings → Notifications** under **Reports & Digests**.
## Where the Numbers Come From
All revenue figures are built from your actual paid transactions — never estimates:
| Source | Feeds Into |
| - | - |
| Paid Mollie transactions | Dashboard "MRR" widget, Daily Business Summary |
| Active/new/cancelled subscriptions | Monthly Subscription Report, ARPU |
| Paid invoices + completed orders | Per-customer lifetime value on [Customer Analytics](/analytics-and-reporting/customer-analytics) |
If a number looks off, check [Transaction Reports](/analytics-and-reporting/transaction-reports) first — every revenue metric traces back to real transaction records you can inspect individually.
## FAQ
The dashboard's "MRR" widget currently only counts Mollie transactions. Subscription-based reports (Monthly Subscription Report) count subscriptions regardless of payment provider. For a complete cross-provider view, check [Transaction Reports](/analytics-and-reporting/transaction-reports), which covers Mollie, PayPal, and bank transactions.
By customer: yes, see [Customer Analytics](/analytics-and-reporting/customer-analytics) for per-customer lifetime revenue. By product, use [Export Functions](/analytics-and-reporting/export-functions) to export orders/invoices and analyze in a spreadsheet.
Not as a built-in feature today. Use the monthly comparison on the Insights Dashboard to track progress against your own targets manually.
## Next Steps
See all real-time metrics in one place
Browse the underlying payment history
Lifetime value per customer
# Transaction Reports
Source: https://docs.payreque.st/analytics-and-reporting/transaction-reports
Payment history and analysis
# Transaction Reports
Browse, search, and filter your complete payment history — synced directly from your connected payment providers.
Your **Transactions** page (Mollie-synced) is the single source of truth for paid amounts and `paid_at` timestamps across PayRequest. If a payment shows here, it's real and confirmed by the provider — not just an internal PayRequest record.
## Where to Find Transaction History
Your main transaction list, synced from Mollie. Search by customer, description, or reference and filter by status.
Transaction detail view for payments processed through a connected PayPal account.
Transactions synced from your connected bank account via [Ponto](/payment-processing/bank-sync-ponto).
Raw bank feed transactions from Ponto, useful for reconciling incoming bank transfers against invoices.
## Searching and Filtering
On the main Transactions page you can:
* **Search** by customer name, description, or transaction reference
* **Filter by status** using the status dropdown (populated from the statuses actually present in your data — e.g. paid, open, failed, canceled, expired)
* **Select multiple transactions** for bulk actions
## What Counts as "Paid"
PayRequest treats a transaction as paid based on confirmation from the payment provider itself (Mollie, Stripe, PayPal, or on-chain confirmation for crypto) — never based on invoice or order status alone. This is why the Transactions page, not the Invoices or Orders page, is the definitive record for accounting and reconciliation.
If an invoice shows as unpaid but you believe it was paid, check the Transactions page first — payment provider webhooks are the source of truth, and [webhook delivery issues](/troubleshooting/payment-failures) are the most common cause of a mismatch.
## FAQ
Not every transaction is tied to an invoice — payment page payments without a selected product, crypto tips, or manually recorded payments can create a transaction without a formal invoice.
Invoices and Orders can be exported via [Export Functions](/analytics-and-reporting/export-functions). For raw transaction-level exports, use the [API](/api/overview) to pull transaction data directly.
PayRequest syncs continuously via webhooks as payments happen, with a periodic sync job as a backup in case a webhook is ever missed.
## Next Steps
See revenue trends built from this same transaction data
Export invoices, orders, and other records to CSV
Troubleshoot missing or mismatched payments
# Authentication
Source: https://docs.payreque.st/api/authentication
Secure your API requests with OAuth2 tokens
# API Authentication
The PayRequest API uses **OAuth2** with Personal Access Tokens for authentication. All API requests must include a valid access token in the `Authorization` header.
## Creating an Access Token
Go to **Settings** → **API Tokens** in your PayRequest dashboard.
Click the **Create New Token** button.
* Enter a descriptive name (e.g., "MCP Billing Agent")
* Select the scopes (permissions) your token needs
* Click **Create**
Your token is only shown once. Copy it immediately and store it securely.
If you lose it, you'll need to create a new token.
## Using Your Token
Include the token in the `Authorization` header of every API request:
```bash theme={null}
curl -X GET "https://payrequest.app/api/v1/invoices" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json"
```
## OAuth Scopes
Scopes define what actions your token can perform. Request only the scopes you need for better security.
### Available Scopes
| Scope | Description | Use Case |
| - | - | - |
| `billing.read` | Read invoices, subscriptions, transactions | Dashboards, reporting, monitoring |
| `billing.write` | Create and modify invoices and subscriptions | Invoice automation, billing workflows |
| `billing.agent` | Full AI billing agent access | MCP integrations, AI assistants |
| `customers.read` | Read customer information | CRM integrations, customer lookup |
| `customers.write` | Create and modify customers | Customer sync, onboarding automation |
| `products.read` | Read product catalog | Catalog sync, price checks |
| `products.write` | Create and modify products | Product management automation |
### Default Scope
If you don't specify scopes when creating a token, it will receive the default `billing.read` scope.
### Scope Inheritance
The `billing.agent` scope includes all capabilities of `billing.read` and `billing.write`, making it ideal for AI-powered billing assistants.
## Token Expiration
| Token Type | Expiration |
| - | - |
| Personal Access Token | 6 months |
| Access Token | 15 days |
| Refresh Token | 30 days |
Tokens expire automatically for security. Plan to refresh or regenerate tokens before they expire.
## Security Best Practices
* Never commit tokens to version control
* Use environment variables or secret management services
* Encrypt tokens at rest
* Only request the scopes your application needs
* Review and audit token permissions regularly
* Create separate tokens for different integrations
* Regenerate tokens periodically (every 3-6 months)
* Revoke tokens that are no longer needed
* Monitor for unauthorized usage
* Always use HTTPS (enforced by our API)
* Don't log or display full tokens
* Use secure headers in requests
## Revoking Tokens
To revoke a token:
1. Go to **Settings** → **API Tokens**
2. Find the token you want to revoke
3. Click the **Delete** button
4. Confirm the deletion
Revoking a token is immediate and cannot be undone. Any applications using that token will lose access.
## Error Responses
### Invalid or Missing Token
```json theme={null}
{
"message": "Unauthenticated."
}
```
**HTTP Status**: `401 Unauthorized`
**Solution**: Ensure you're including a valid token in the `Authorization` header.
### Insufficient Scope
```json theme={null}
{
"success": false,
"error": "Invalid scope(s) provided."
}
```
**HTTP Status**: `403 Forbidden`
**Solution**: Create a new token with the required scopes or update your existing token's permissions.
### Expired Token
```json theme={null}
{
"message": "Unauthenticated."
}
```
**HTTP Status**: `401 Unauthorized`
**Solution**: Generate a new access token from the dashboard.
## Example: Complete Authentication Flow
```javascript theme={null}
// Node.js example using fetch
const API_TOKEN = process.env.PAYREQUEST_API_TOKEN;
async function getInvoices() {
const response = await fetch('https://payrequest.app/api/v1/invoices', {
method: 'GET',
headers: {
'Authorization': `Bearer ${API_TOKEN}`,
'Accept': 'application/json',
'Content-Type': 'application/json'
}
});
if (!response.ok) {
if (response.status === 401) {
throw new Error('Invalid or expired API token');
}
if (response.status === 403) {
throw new Error('Insufficient permissions');
}
throw new Error(`API error: ${response.status}`);
}
return response.json();
}
```
```python theme={null}
# Python example using requests
import os
import requests
API_TOKEN = os.environ.get('PAYREQUEST_API_TOKEN')
def get_invoices():
response = requests.get(
'https://payrequest.app/api/v1/invoices',
headers={
'Authorization': f'Bearer {API_TOKEN}',
'Accept': 'application/json',
'Content-Type': 'application/json'
}
)
if response.status_code == 401:
raise Exception('Invalid or expired API token')
if response.status_code == 403:
raise Exception('Insufficient permissions')
response.raise_for_status()
return response.json()
```
# Error Handling
Source: https://docs.payreque.st/api/errors
Understanding and handling API errors
# Error Handling
The PayRequest API uses conventional HTTP response codes and returns detailed error messages to help you diagnose issues quickly.
## HTTP Status Codes
| Code | Meaning | Description |
| - | - | - |
| `200` | OK | Request succeeded |
| `201` | Created | Resource created successfully |
| `400` | Bad Request | Invalid request parameters or body |
| `401` | Unauthorized | Missing or invalid authentication |
| `403` | Forbidden | Valid auth but insufficient permissions |
| `404` | Not Found | Resource doesn't exist or doesn't belong to you |
| `422` | Unprocessable Entity | Validation errors |
| `429` | Too Many Requests | Rate limit exceeded |
| `500` | Internal Server Error | Something went wrong on our end |
## Error Response Format
All error responses follow this structure:
```json theme={null}
{
"success": false,
"error": "Human-readable error message",
"errors": {
"field_name": [
"Specific validation error"
]
}
}
```
| Field | Type | Description |
| - | - | - |
| `success` | boolean | Always `false` for errors |
| `error` | string | General error description |
| `errors` | object | Field-specific validation errors (optional) |
## Common Errors
### Authentication Errors
**Cause**: Missing, invalid, or expired access token.
```json theme={null}
{
"message": "Unauthenticated."
}
```
**Solutions**:
* Ensure you're including the `Authorization` header
* Check that your token starts with `Bearer `
* Generate a new token if expired
**Cause**: Your token doesn't have the required scope.
```json theme={null}
{
"success": false,
"error": "Invalid scope(s) provided."
}
```
**Solutions**:
* Check which scope the endpoint requires
* Create a new token with the required scopes
* Use the [Authentication guide](/api/authentication) for scope details
### Validation Errors
**Cause**: Request body failed validation rules.
```json theme={null}
{
"success": false,
"error": "The given data was invalid.",
"errors": {
"customer_id": ["The customer id field is required."],
"items": ["The items field is required."],
"due_date": ["The due date must be a date after or equal to date."]
}
}
```
**Solutions**:
* Check each field in the `errors` object
* Ensure required fields are provided
* Verify data types and formats match the documentation
### Resource Errors
**Cause**: Resource doesn't exist or doesn't belong to your account.
```json theme={null}
{
"success": false,
"error": "Invoice not found"
}
```
**Solutions**:
* Verify the resource ID is correct
* Ensure the resource belongs to your account
* Check if the resource was deleted
**Cause**: Business logic prevented the action.
```json theme={null}
{
"success": false,
"error": "Invoice is already paid"
}
```
**Solutions**:
* Check the current state of the resource
* Review the error message for specific guidance
### Rate Limiting
**Cause**: Too many requests in a short period.
```json theme={null}
{
"success": false,
"error": "Too many requests. Please try again later."
}
```
**Headers included**:
```
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1706540400
Retry-After: 45
```
**Solutions**:
* Implement exponential backoff
* Cache responses where possible
* Wait until `X-RateLimit-Reset` timestamp
## Best Practices
### Implement Proper Error Handling
```javascript theme={null}
async function apiRequest(endpoint, options = {}) {
const response = await fetch(`https://payrequest.app/api/v1${endpoint}`, {
...options,
headers: {
'Authorization': `Bearer ${process.env.PAYREQUEST_TOKEN}`,
'Accept': 'application/json',
'Content-Type': 'application/json',
...options.headers
}
});
const data = await response.json();
if (!response.ok) {
// Handle specific error types
switch (response.status) {
case 401:
throw new AuthenticationError('Invalid or expired token');
case 403:
throw new PermissionError('Insufficient permissions');
case 404:
throw new NotFoundError(data.error || 'Resource not found');
case 422:
throw new ValidationError(data.errors);
case 429:
const retryAfter = response.headers.get('Retry-After');
throw new RateLimitError(`Rate limited. Retry after ${retryAfter}s`);
default:
throw new ApiError(data.error || 'Unknown error');
}
}
return data;
}
```
### Retry Strategy
For transient errors (5xx, network issues), implement exponential backoff:
```javascript theme={null}
async function apiRequestWithRetry(endpoint, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
return await apiRequest(endpoint, options);
} catch (error) {
// Don't retry client errors (4xx)
if (error.status >= 400 && error.status < 500) {
throw error;
}
// Don't retry on last attempt
if (attempt === maxRetries - 1) {
throw error;
}
// Exponential backoff: 1s, 2s, 4s
const delay = Math.pow(2, attempt) * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
}
}
}
```
### Validate Before Sending
Catch validation issues early:
```javascript theme={null}
function validateInvoiceData(data) {
const errors = {};
if (!data.customer_id) {
errors.customer_id = ['Customer ID is required'];
}
if (!data.items || data.items.length === 0) {
errors.items = ['At least one line item is required'];
}
if (data.due_date && data.date && new Date(data.due_date) < new Date(data.date)) {
errors.due_date = ['Due date must be on or after invoice date'];
}
if (Object.keys(errors).length > 0) {
throw new ValidationError(errors);
}
}
```
## Getting Help
If you encounter persistent errors:
1. Check this documentation for the endpoint requirements
2. Verify your token has the correct scopes
3. Test with a minimal request body
4. Contact [support@payrequest.io](mailto:support@payrequest.io) with:
* The endpoint you're calling
* Your request (without the token)
* The error response
* Your account email
# Invoices
Source: https://docs.payreque.st/api/invoices
Create, retrieve, and manage invoices via the API
# Invoice Endpoints
Manage your invoices programmatically with these endpoints. All endpoints require authentication and the appropriate OAuth scope.
## List All Invoices
Retrieve a paginated list of all your invoices.
Bearer token with `billing.read` scope
Number of invoices per page (max 100)
Page number for pagination
```bash theme={null}
GET /api/v1/invoices
```
### Request Example
```bash theme={null}
curl -X GET "https://payrequest.app/api/v1/invoices?per_page=10&page=1" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"
```
### Response
```json theme={null}
{
"success": true,
"data": {
"current_page": 1,
"data": [
{
"id": 1234,
"invoice_number": "INV-000042",
"reference": "Project Alpha",
"amount": 1250.00,
"currency": "EUR",
"status": "pending",
"date": "2025-01-15",
"due_date": "2025-01-30",
"customer": {
"id": 567,
"name": "Acme Corp",
"email": "billing@acme.com",
"company": "Acme Corporation"
},
"invoice_items": [
{
"description": "Web Development Services",
"quantity": 40,
"unit_price": 25.00,
"tax_rate": 21,
"total": 1000.00
}
]
}
],
"per_page": 10,
"total": 150,
"last_page": 15
}
}
```
***
## Get Invoice Details
Retrieve detailed information about a specific invoice.
The invoice ID
```bash theme={null}
GET /api/v1/invoices/{invoice}
```
### Request Example
```bash theme={null}
curl -X GET "https://payrequest.app/api/v1/invoices/1234" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"
```
### Response
```json theme={null}
{
"success": true,
"data": {
"id": 1234,
"invoice_number": "INV-000042",
"reference": "Project Alpha",
"amount": 1250.00,
"currency": "EUR",
"status": "pending",
"date": "2025-01-15",
"due_date": "2025-01-30",
"notes": "Payment terms: Net 15",
"customer": {
"id": 567,
"name": "Acme Corp",
"email": "billing@acme.com",
"company": "Acme Corporation",
"phone": "+31 20 123 4567",
"address": "123 Business Street",
"city": "Amsterdam",
"postal_code": "1012 AB",
"country": "Netherlands"
},
"invoice_items": [...],
"transactions": [...],
"subscription": null
}
}
```
***
## Get Invoice Statistics
Get aggregated statistics about your invoices.
```bash theme={null}
GET /api/v1/invoices/stats
```
### Request Example
```bash theme={null}
curl -X GET "https://payrequest.app/api/v1/invoices/stats" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"
```
### Response
```json theme={null}
{
"success": true,
"data": {
"total_invoices": 150,
"pending_invoices": 23,
"paid_invoices": 120,
"overdue_invoices": 7,
"total_outstanding": 15750.00,
"total_overdue": 4200.00,
"currency": "EUR"
}
}
```
### Response Fields
| Field | Type | Description |
| - | - | - |
| `total_invoices` | integer | Total number of invoices |
| `pending_invoices` | integer | Invoices awaiting payment |
| `paid_invoices` | integer | Fully paid invoices |
| `overdue_invoices` | integer | Invoices past due date |
| `total_outstanding` | decimal | Sum of all unpaid invoices |
| `total_overdue` | decimal | Sum of overdue invoices |
***
## Get Overdue Invoices
Retrieve all invoices that are past their due date. Ideal for payment follow-up automation and AI billing agents.
```bash theme={null}
GET /api/v1/invoices/overdue
```
### Request Example
```bash theme={null}
curl -X GET "https://payrequest.app/api/v1/invoices/overdue" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"
```
### Response
```json theme={null}
{
"success": true,
"count": 7,
"total_outstanding": 4200.00,
"currency": "EUR",
"data": [
{
"id": 1230,
"invoice_number": "INV-000038",
"reference": "Maintenance Q4",
"amount": 600.00,
"currency": "EUR",
"status": "sent",
"date": "2024-12-01",
"due_date": "2024-12-15",
"days_overdue": 45,
"customer": {
"id": 890,
"name": "TechStart BV",
"email": "finance@techstart.nl",
"phone": "+31 20 987 6543"
},
"payment_link": "https://payrequest.me/yourshop/invoice/1230"
}
]
}
```
The `payment_link` field contains a direct link you can share with the customer. It's `null` if a payment has already been initiated.
***
## Create Invoice
Create a new invoice with line items.
Bearer token with `billing.write` scope
```bash theme={null}
POST /api/v1/invoices
```
### Request Body
The ID of an existing customer
Custom invoice number (auto-generated if not provided)
Your internal reference (e.g., project name, PO number)
Invoice date in `YYYY-MM-DD` format
Due date in `YYYY-MM-DD` format (must be on or after invoice date)
Additional notes to include on the invoice
Array of invoice line items (minimum 1 item)
### Request Example
```bash theme={null}
curl -X POST "https://payrequest.app/api/v1/invoices" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"customer_id": 567,
"reference": "Project Beta",
"date": "2025-01-29",
"due_date": "2025-02-13",
"notes": "Thank you for your business!",
"items": [
{
"description": "Consulting Services",
"quantity": 8,
"unit_price": 150.00,
"tax_rate": 21
},
{
"description": "Software License",
"quantity": 1,
"unit_price": 500.00,
"tax_rate": 21
}
]
}'
```
### Response
```json theme={null}
{
"success": true,
"message": "Invoice created successfully",
"data": {
"id": 1235,
"invoice_number": "INV-000043",
"reference": "Project Beta",
"amount": 1700.00,
"currency": "EUR",
"status": "pending",
"date": "2025-01-29",
"due_date": "2025-02-13",
"customer": {...},
"invoice_items": [...]
}
}
```
**HTTP Status**: `201 Created`
### Item Structure
Each item in the `items` array should have:
| Field | Type | Required | Description |
| - | - | - | - |
| `description` | string | Yes | Line item description |
| `quantity` | decimal | Yes | Quantity (min: 0.01) |
| `unit_price` | decimal | Yes | Price per unit |
| `tax_rate` | decimal | No | Tax percentage (default: 0) |
***
## Send Payment Reminder
Send a payment reminder email for an unpaid invoice.
Bearer token with `billing.write` scope
The invoice ID
```bash theme={null}
POST /api/v1/invoices/{invoice}/reminder
```
### Request Example
```bash theme={null}
curl -X POST "https://payrequest.app/api/v1/invoices/1230/reminder" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"
```
### Response
```json theme={null}
{
"success": true,
"message": "Invoice reminder sent successfully"
}
```
### Error Responses
**Invoice already paid:**
```json theme={null}
{
"success": false,
"error": "Invoice is already paid"
}
```
**HTTP Status**: `400 Bad Request`
**Invoice not found:**
```json theme={null}
{
"success": false,
"error": "Invoice not found"
}
```
**HTTP Status**: `404 Not Found`
***
## Invoice Statuses
| Status | Description |
| - | - |
| `draft` | Invoice created but not finalized |
| `pending` | Invoice created, awaiting payment |
| `sent` | Invoice emailed to customer |
| `viewed` | Customer has viewed the invoice |
| `paid` | Invoice fully paid |
| `partial` | Invoice partially paid |
| `overdue` | Payment past due date |
| `cancelled` | Invoice cancelled |
***
## MCP Integration Example
Here's how to use the invoice API with an MCP billing agent:
```typescript theme={null}
// MCP Server Tool Definition
{
name: "get_overdue_invoices",
description: "Get all overdue invoices that need follow-up",
inputSchema: {
type: "object",
properties: {}
}
}
// Tool Implementation
async function getOverdueInvoices() {
const response = await fetch(
'https://payrequest.app/api/v1/invoices/overdue',
{
headers: {
'Authorization': `Bearer ${process.env.PAYREQUEST_TOKEN}`,
'Accept': 'application/json'
}
}
);
const data = await response.json();
return {
content: [{
type: 'text',
text: `Found ${data.count} overdue invoices totaling €${data.total_outstanding}`
}],
invoices: data.data
};
}
```
# API Overview
Source: https://docs.payreque.st/api/overview
Connect your applications to PayRequest using our REST API
# PayRequest API
The PayRequest API allows you to programmatically access your billing data, create invoices, and automate your billing workflows. It's designed for integrations with external tools, MCP servers, and custom applications.
## Base URL
All API requests should be made to:
```
https://payrequest.app/api/v1
```
## API Versioning
The API uses URL-based versioning. The current version is `v1`. We recommend always specifying the version in your requests to ensure compatibility.
## Features
List, create, and manage invoices programmatically
Secure token-based authentication using OAuth2
Create fixed-amount payment links with a custom description for reconciliation
Receive signed HMAC-SHA256 notifications on payment.succeeded events
Query and reconcile payments by description or status
Automate follow-ups for overdue invoices
## Quick Start
### 1. Create an API Token
1. Go to **Settings** → **API Tokens** in your PayRequest dashboard
2. Click **Create New Token**
3. Give your token a name (e.g., "MCP Integration")
4. Select the required scopes (permissions)
5. Copy and securely store your access token
### 2. Make Your First Request
```bash theme={null}
curl -X GET "https://payrequest.app/api/v1/invoices" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"
```
### 3. Handle the Response
```json theme={null}
{
"success": true,
"data": {
"data": [...],
"current_page": 1,
"per_page": 25,
"total": 150
}
}
```
## Available Endpoints
| Method | Endpoint | Description | Scope Required |
| - | - | - | - |
| GET | `/v1/invoices` | List all invoices | `billing.read` |
| GET | `/v1/invoices/{id}` | Get invoice details | `billing.read` |
| GET | `/v1/invoices/stats` | Get invoice statistics | `billing.read` |
| GET | `/v1/invoices/overdue` | List overdue invoices | `billing.read` |
| POST | `/v1/invoices` | Create a new invoice | `billing.write` |
| POST | `/v1/invoices/{id}/reminder` | Send payment reminder | `billing.write` |
| POST | `/v1/payment-links` | Create a payment link | `billing.write` |
| GET | `/v1/payment-links` | List payment links | `billing.read` |
| GET | `/v1/payments` | List & filter payments | `billing.read` |
| POST | `/v1/deposits` | Create a security deposit link | `billing.write` |
| GET | `/v1/deposits` | List and filter security deposits | `billing.read` |
| GET | `/v1/deposits/{id}` | Get security deposit status | `billing.read` |
| POST | `/v1/deposits/{id}/capture` | Capture an authorized deposit | `billing.write` |
| POST | `/v1/deposits/{id}/release` | Release an authorized deposit | `billing.write` |
## Rate Limiting
API requests are rate limited to ensure fair usage:
* **Standard limit**: 60 requests per minute
* **Burst limit**: 100 requests per minute (temporary)
Rate limit headers are included in all responses:
```
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1706540400
```
## Response Format
All API responses follow a consistent JSON format:
### Success Response
```json theme={null}
{
"success": true,
"data": { ... },
"message": "Optional success message"
}
```
### Error Response
```json theme={null}
{
"success": false,
"error": "Error description",
"errors": {
"field_name": ["Validation error message"]
}
}
```
## SDKs and Libraries
While we don't currently offer official SDKs, the API works seamlessly with:
* **MCP (Model Context Protocol)** servers for AI assistants
* Standard HTTP libraries in any programming language
* Tools like Postman, Insomnia, or cURL
## Support
Need help with the API? Contact us at [support@payrequest.io](mailto:support@payrequest.io) or check our [troubleshooting guide](/troubleshooting/common-issues).
# Payment Links & Payments
Source: https://docs.payreque.st/api/payment-links
Programmatically create payment links and reconcile payments via the API
# Payment Links & Payments
Use these endpoints to generate fixed-amount payment links on the fly and query incoming payments for reconciliation — for example, per-user or per-reference billing flows.
## Create a Payment Link
Generates a shareable payment link (Smart Link) with a fixed amount and a custom description you can use as a reference when reconciling.
Bearer token with `billing.write` scope
```bash theme={null}
POST /api/v1/payment-links
```
### Request Body
Your internal reference, shown on the payment page and included in all webhook payloads and payment records. Example: `JMIT-githubuser`
Fixed payment amount in euros (decimal). Example: `49.00`
3-letter ISO currency code. Defaults to `EUR`.
### Request Example
```bash theme={null}
curl -X POST "https://payrequest.app/api/v1/payment-links" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "JMIT-githubuser",
"amount": 49.00
}'
```
### Response
```json theme={null}
{
"success": true,
"data": {
"id": 42,
"url": "https://payrequest.me/jmit/jmit-githubuser",
"description": "JMIT-githubuser",
"amount": 49.00,
"currency": "EUR",
"created_at": "2026-05-30T12:00:00+02:00"
}
}
```
The URL slug is automatically derived from your `description` (e.g. `JMIT-githubuser` → `jmit-githubuser`). If a link with that slug already exists, a numeric suffix is appended (`jmit-githubuser-2`).
***
## List Payment Links
Returns a paginated list of all your payment links.
Bearer token with `billing.read` scope
Number of results per page (max 100)
```bash theme={null}
GET /api/v1/payment-links
```
### Request Example
```bash theme={null}
curl "https://payrequest.app/api/v1/payment-links?per_page=10" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
### Response
```json theme={null}
{
"success": true,
"data": {
"current_page": 1,
"data": [
{
"id": 42,
"url": "https://payrequest.me/jmit/jmit-githubuser",
"description": "JMIT-githubuser",
"amount": 49.00,
"currency": "EUR",
"payments_count": 1,
"revenue": 49.00,
"is_active": true,
"created_at": "2026-05-30T12:00:00+02:00"
}
],
"per_page": 25,
"total": 1
}
}
```
***
## List Payments
Query incoming payments for reconciliation. Filter by `description` to find all payments tied to a specific reference.
Bearer token with `billing.read` scope
Filter payments by description (case-insensitive partial match). Example: `JMIT-githubuser`
Filter by status: `paid`, `open`, `pending`, or `failed`
Start date filter (YYYY-MM-DD)
End date filter (YYYY-MM-DD)
Number of results per page (max 100)
```bash theme={null}
GET /api/v1/payments
```
### Request Example
```bash theme={null}
curl "https://payrequest.app/api/v1/payments?description=JMIT-githubuser&status=paid" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
### Response
```json theme={null}
{
"success": true,
"data": {
"current_page": 1,
"data": [
{
"id": 1234,
"description": "JMIT-githubuser",
"amount": 49.00,
"currency": "EUR",
"status": "paid",
"payment_method": "ideal",
"payment_link_id": 42,
"payment_link_url": "https://payrequest.me/jmit/jmit-githubuser",
"reference": "tr_abc123",
"paid_at": "2026-05-30T11:59:45+02:00",
"created_at": "2026-05-30T11:58:00+02:00",
"customer": {
"id": 99,
"name": "Jane Doe",
"email": "jane@example.com"
}
}
],
"per_page": 25,
"total": 1
}
}
```
***
## Reconciliation workflow
A typical programmatic billing flow using these endpoints:
1. **Create a payment link** with the user's identifier as `description` (e.g. `JMIT-githubuser`)
2. **Send the `url`** to your customer via email or embed it in your app
3. **Receive a webhook** (`payment.succeeded`) with the `description` and `payment_link_id` when payment arrives — see [Webhooks](/api/webhooks)
4. **Or poll** `GET /v1/payments?description=JMIT-githubuser&status=paid` to reconcile on demand
# Security Deposits API
Source: https://docs.payreque.st/api/security-deposits
Create deposit links and synchronize authorization status with your own software
# Security Deposits API
Create a card authorization link for a booking, send it through your own guest communication system, and synchronize its status using signed webhooks.
All endpoints require an OAuth bearer token. Use `billing.write` to create, capture, or release deposits and `billing.read` to retrieve them.
## Create a deposit link
```http theme={null}
POST /api/v1/deposits
Authorization: Bearer YOUR_TOKEN
Idempotency-Key: booking-12345-deposit
Content-Type: application/json
```
```json theme={null}
{
"booking_reference": "BOOKING-12345",
"amount": 300.00,
"currency": "EUR",
"customer": {
"name": "John Doe",
"email": "john@example.com"
},
"check_in_date": "2026-09-10",
"check_out_date": "2026-09-17",
"metadata": {
"apartment_id": "APT-42"
}
}
```
The response contains an `authorization_url`. Send this URL to the guest. Repeating the request with the same `Idempotency-Key` returns the original deposit instead of creating a duplicate.
## Retrieve deposits
```http theme={null}
GET /api/v1/deposits?booking_reference=BOOKING-12345
GET /api/v1/deposits/{id}
```
The list endpoint also accepts `status` and `per_page`. Available statuses are `pending`, `authorized`, `partially_captured`, `captured`, `released`, `expired`, and `failed`.
### Dashboard labels and authorization attempts
The dashboard uses more descriptive labels without changing these API status values:
| API status | Dashboard label | Interpretation |
| - | - | - |
| `pending` | Waiting for customer | No confirmed hold; the customer may still need to complete authorization. |
| `pending` with `metadata.authorization_state=processing` | Processing authorization | The provider is processing the attempt. Wait before requesting another payment. |
| `pending` with `metadata.authorization_state=expired` | Authorization attempt expired | The checkout attempt expired without a confirmed hold. A fresh authorization attempt is needed. |
| `authorized` | Funds reserved | A confirmed hold is available until `capture_before`. |
| `captured` | Captured | Capture is final. For Stripe this includes a partial amount with the remainder released. |
| `expired` | Expired | A previously confirmed hold expired. |
Authorization-attempt metadata is provider-confirmed where available. Its absence does not prove that a customer has never opened a link. The new dashboard labels are not accepted as `status` query parameters; use the API values above.
## Capture or release
Capture the full remaining amount by omitting `amount`, or capture part of it:
```http theme={null}
POST /api/v1/deposits/{id}/capture
Content-Type: application/json
{
"amount": 75.00,
"description": "Damage to kitchen table"
}
```
Release the remaining card authorization:
```http theme={null}
POST /api/v1/deposits/{id}/release
```
Stripe deposits currently support **one final capture**. Capturing €150 from a €350 authorization charges €150, releases €200, and returns status `captured` with `captured_amount` equal to `150.00`. The difference between `amount` and `captured_amount` is not available for a second capture. Do not infer a remaining authorization by subtracting these fields. Attempts to capture a locally finalized deposit return HTTP 409.
Stripe deposit captures have a **0% PayRequest platform fee**. Stripe processing fees apply separately. See [Security Deposits](/payment-processing/security-deposits) for dashboard steps, status explanations, and examples.
## Webhook events
PayRequest sends `deposit.created`, `deposit.authorized`, `deposit.partially_captured`, `deposit.captured`, `deposit.released`, `deposit.expired`, and `deposit.failed` to the webhook URL configured under **Settings → API & MCP**.
A final partial Stripe capture emits `deposit.captured`, not a promise that another capture remains available. Updates to pending authorization-attempt metadata do not introduce new deposit webhook event names. Retrieve the deposit to read the latest metadata.
Verify the `X-PayRequest-Signature` header using the configured webhook secret. The signature format is `sha256=` followed by the HMAC-SHA256 digest of the raw request body. The `X-PayRequest-Event` header contains the event name.
Card authorizations expire. Create the link close enough to check-in for the selected payment provider's authorization window.
# Webhooks
Source: https://docs.payreque.st/api/webhooks
Receive signed real-time notifications for payments and security deposits
# Webhooks
PayRequest can send signed HTTP POST requests when a payment succeeds or a security deposit changes status. Use these events to automate fulfillment, synchronize bookings, or trigger downstream workflows without polling.
## Setup
1. Go to **Settings → API & MCP** in your PayRequest dashboard
2. Scroll down to the **Webhooks** section
3. Enter your endpoint URL (must be publicly reachable over HTTPS)
4. Click **Save** — a signing secret is generated automatically
5. Copy the **Signing Secret** and store it securely in your environment
***
## Verifying signatures
Every request includes an `X-PayRequest-Signature` header containing an HMAC-SHA256 signature of the raw request body. **Always verify this before processing the event.**
```
X-PayRequest-Signature: sha256=a1b2c3d4...
```
```php PHP theme={null}
$secret = $_ENV['PAYREQUEST_WEBHOOK_SECRET'];
$body = file_get_contents('php://input');
$received = $_SERVER['HTTP_X_PAYREQUEST_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $body, $secret);
if (!hash_equals($expected, $received)) {
http_response_code(401);
exit;
}
$event = json_decode($body, true);
```
```python Python theme={null}
import hashlib, hmac, os
from flask import request, abort
secret = os.environ['PAYREQUEST_WEBHOOK_SECRET'].encode()
body = request.get_data()
sig = request.headers.get('X-PayRequest-Signature', '')
expected = 'sha256=' + hmac.new(secret, body, hashlib.sha256).hexdigest()
if not hmac.compare_digest(expected, sig):
abort(401)
event = request.get_json()
```
```javascript Node.js theme={null}
const crypto = require('crypto');
const secret = process.env.PAYREQUEST_WEBHOOK_SECRET;
const body = req.rawBody; // use raw body, not parsed JSON
const sig = req.headers['x-payrequest-signature'] ?? '';
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(body)
.digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig))) {
return res.status(401).send('Invalid signature');
}
const event = JSON.parse(body);
```
Always use a timing-safe comparison (`hash_equals`, `hmac.compare_digest`, `timingSafeEqual`) to prevent timing attacks.
***
## Event: `payment.succeeded`
Fired when a transaction status changes to `paid`. Delivered asynchronously via the queue (typically within seconds).
### Payload
```json theme={null}
{
"event": "payment.succeeded",
"timestamp": "2026-05-30T12:00:00+02:00",
"data": {
"id": 1234,
"amount": 49.00,
"currency": "EUR",
"description": "JMIT-githubuser",
"payment_link_id": 42,
"payment_method": "ideal",
"reference": "tr_abc123",
"paid_at": "2026-05-30T11:59:45+02:00",
"customer": {
"id": 99,
"name": "Jane Doe",
"email": "jane@example.com"
}
}
}
```
### Fields
| Field | Type | Description |
| - | - | - |
| `event` | string | Always `payment.succeeded` |
| `timestamp` | ISO 8601 | When the event was dispatched |
| `data.id` | integer | Transaction ID |
| `data.amount` | decimal | Amount paid (e.g. `49.00`) |
| `data.currency` | string | 3-letter ISO currency code |
| `data.description` | string | Your custom reference (e.g. `JMIT-githubuser`) |
| `data.payment_link_id` | integer\|null | ID of the Smart Link used, if any |
| `data.payment_method` | string | Payment method used (e.g. `ideal`, `creditcard`) |
| `data.reference` | string | Payment provider transaction reference |
| `data.paid_at` | ISO 8601 | Exact time the payment was confirmed |
| `data.customer` | object\|null | Customer name, email, and ID |
## Security deposit events
Security deposit integrations can receive:
* `deposit.created`
* `deposit.authorized`
* `deposit.partially_captured`
* `deposit.captured`
* `deposit.released`
* `deposit.expired`
* `deposit.failed`
The request also includes `X-PayRequest-Event` with the event name. See the [Security Deposits API](/api/security-deposits) for the payload and integration flow.
***
## Retries
Security deposit webhook delivery uses **5 attempts** with increasing backoff intervals. Payment webhook delivery uses the existing payment queue policy.
Return any `2xx` status code to acknowledge receipt.
***
## Rotating the secret
If your secret is compromised, go to **Settings → API & MCP → Webhooks** and click **Regenerate**. Your old secret stops working immediately — update your environment variable before rotating.
***
## Testing locally
Use a tunnel tool to expose your local server during development:
```bash theme={null}
# Using ngrok
ngrok http 8000
# Then set your webhook URL to:
# https://abc123.ngrok.io/webhooks/payrequest
```
# Services & integrations
Source: https://docs.payreque.st/business-settings/app-store
Connect payment, domain and VPN providers for your business
# Services & integrations
The PayRequest App Store is your central hub for connecting, configuring, and managing all third-party integrations. From payment processors to domain provisioning services, the App Store provides a unified interface to manage all your business connections.
**Location**: Open **Sell** → **Services & integrations** in your dashboard sidebar or visit `/apps`.
## Overview
The App Store organizes integrations into categories, making it easy to find and configure the services you need:
* **💳 Payments**: Payment processors like Mollie and Stripe
* **🌐 Provisioning**: Domain registration and management services like OpenProvider
* **📱 All Apps**: View all available integrations in one place
## Available Categories
### Payments
Connect payment processors to accept payments from your customers.
**European payment processing powerhouse**
* iDEAL (Netherlands)
* SEPA Direct Debit
* Credit & Debit Cards
* Bancontact (Belgium)
* And 15+ other methods
Perfect for EU-based businesses with automatic SEPA mandate management for subscriptions.
More payment providers coming soon! We're actively working on expanding our payment processor integrations.
### Provisioning
Automate domain registration and management directly from PayRequest.
**Domain registration and management**
* Automatic domain provisioning
* TLD pricing configuration
* DNS management
* SSL certificate support
Ideal for hosting companies, web agencies, and SaaS platforms offering domain services.
## Connecting Your First App
Let's walk through connecting an integration from the App Store.
Go to **Sell** → **Services & integrations** in your dashboard sidebar, or visit `/apps`.
Use the category tabs to filter apps:
* **All integrations**: View everything at once
* **Payments**: Filter to payment processors only
* **Hosting & domains**: Show domain provisioning
* **Other integrations**: Find VPNresellers and other service integrations
Click on any app card to view its detail page with:
* Current connection status
* Configuration options
* Management tools
* Setup instructions
Follow the app-specific connection process:
* For **Mollie**: OAuth connection via "Connect with Mollie"
* For **OpenProvider**: Enter API credentials manually
* For **VPNresellers**: The business owner enters their reseller API token
## Managing Connected Apps
Once an app is connected, you can manage it directly from the App Store.
### Connection Status
Apps display clear status badges:
* 🟢 **Connected**: App is active and configured
* ⚪ **Not Connected**: App needs to be set up
* 🟡 **Test Mode**: App is in testing/sandbox mode
* 🔴 **Inactive**: App is configured but disabled
### App Management Actions
Each connected app provides specific management options:
**Available Actions:**
* View connection status and account details
* Switch between Mollie profiles
* Enable/disable payment methods
* Configure customer sync
* Manage subscription sync
* Test connection
* Disconnect and reconnect
**Quick Access:** Click the Mollie card → Manage settings
**Available Actions:**
* View provider statistics
* Test API connection
* Configure TLD pricing
* Manage default nameservers
* Toggle test/production mode
* Enable/disable provider
* Update credentials
**Quick Access:** Click OpenProvider card → Configure settings
## App-Specific Guides
### VPNresellers Integration
Connect your own API 4.1 token to sell paid monthly or annual VPN subscriptions. Each business uses its own reseller balance. VPN accounts are delivered after confirmed payment, and authorized customers manage passwords and download configurations from **My services → VPN** in the customer portal.
Only the business owner can configure the connection and use delivery recovery actions. Open the VPNresellers card or visit `/apps/vpnresellers` to connect, check your balance, create a VPN product and review service delivery.
See [VPNresellers](/integrations/vpnresellers) for the complete setup, access rules and troubleshooting guide.
### Mollie Integration
Mollie is the recommended payment processor for European businesses.
* Active Mollie account (sign up at [mollie.com](https://www.mollie.com))
* Verified website profile in Mollie dashboard
* Approved payment methods
1. Click **Connect with Mollie** in the Mollie app page
2. Log into your Mollie account
3. Authorize PayRequest to access your account
4. Select your default profile
After connection:
* **Profile Management**: Switch between multiple Mollie profiles
* **Payment Methods**: Enable/disable specific payment methods
* **Customer Sync**: Optionally sync customers to Mollie
* **Subscription Sync**: Keep PayRequest and Mollie subscriptions in sync
Use the **Test Connection** button to verify everything works correctly before processing real payments.
**Important**: Always start with test mode enabled. Switch to live mode only after thoroughly testing your payment flow.
### OpenProvider Integration
OpenProvider enables automated domain provisioning for your products.
1. Sign up for an OpenProvider account
2. Navigate to your OpenProvider dashboard
3. Generate API credentials (username & password)
1. Click **Add OpenProvider Credentials** on the OpenProvider app page
2. Enter your provider name (e.g., "My OpenProvider Account")
3. Paste your API username and password
4. Configure default nameservers (optional)
5. Toggle test mode if using sandbox
After connecting:
1. Click **TLD Management** from the OpenProvider page
2. Sync available TLDs from OpenProvider
3. Set your profit margins per TLD
4. Configure sell prices for each extension
Use the **Test Connection** button to verify your credentials work correctly.
OpenProvider automatically provisions domains when customers purchase domain products through your shop. No manual registration needed!
## Connection Status Indicators
Understanding what each status means:
| Status | Badge | Meaning |
| - | - | - |
| **Connected** | 🟢 Green | Fully configured and active |
| **Not Connected** | ⚪ Gray | Needs configuration |
| **Test Mode** | 🟡 Amber | Using sandbox/test credentials |
| **Production** | 🔵 Blue | Live mode active |
| **Inactive** | ⚪ Gray | Configured but disabled |
## Troubleshooting
Common issues and solutions when working with App Store integrations.
**Solution:**
* Verify your credentials are correct
* Check that the app is set to "Active" status
* For Mollie: Ensure OAuth connection was completed
* Test your connection using the "Test Connection" button
**Possible causes:**
* Incorrect Mollie account permissions
* Browser blocking cookies/redirects
* Mollie account not fully verified
**Solution:**
* Use a different browser
* Ensure Mollie account is verified
* Check that website profile is approved in Mollie
**Possible causes:**
* Wrong API credentials
* Account not activated
* IP whitelist restrictions
**Solution:**
* Double-check username and password
* Verify OpenProvider account is active
* Contact OpenProvider support for IP whitelist issues
**Solution:**
* Check you're looking in the correct category tab
* Use the **All integrations** tab to see everything
* Some apps may require specific plan levels
## Best Practices
Enable test/sandbox mode before processing real transactions. Verify the entire flow works as expected.
Regularly check your app connections in the App Store to ensure everything remains properly configured.
Never share your API credentials. Use environment-specific credentials for testing vs production.
Set up webhook notifications to stay informed about transaction events and sync issues.
## Security Considerations
PayRequest takes the security of your integrations seriously:
* ✅ **Encrypted Storage**: All credentials are encrypted at rest using AES-256
* ✅ **OAuth Preferred**: We use OAuth 2.0 for Mollie to avoid storing passwords
* ✅ **Token Refresh**: Access tokens are automatically refreshed before expiration
* ✅ **Audit Logs**: All connection changes are tracked in your activity log
* ✅ **Secure Transit**: All API calls use TLS 1.3 encryption
**Never share** your PayRequest API keys or provider credentials with third parties. PayRequest support will never ask for your passwords or access tokens.
## Coming Soon
We're actively working on expanding the App Store with new integrations:
* 🔜 **Stripe**: Alternative payment processor with global reach
* 🔜 **TransIP**: Domain provisioning for Dutch market
* 🔜 **Exact Online**: Accounting software integration
* 🔜 **Mailchimp**: Email marketing automation
Have a specific integration request? [Email us](mailto:support@payrequest.io) with your suggestion!
## Related Documentation
Learn about available payment methods
Set up custom domains for your shop
Integrate with PayRequest API
***
**Quick Navigation**: Open `/apps` or **Sell → Services & integrations** in your dashboard sidebar.
# Business Details
Source: https://docs.payreque.st/business-settings/business-details
Set your company identity, tax numbers, bank details, and logo used across invoices and payment pages.
# Business Details
Your business details identify your company on every invoice, payment page, and customer-facing document PayRequest generates — company name, address, registration numbers, bank details, and logo.
Manage these under **Settings > Business** (`/settings?tab=business`). This tab is only shown for business accounts, not personal accounts.
## Fields You Can Set
Company name, address, country, and preferred language
Company (Chamber of Commerce) number, VAT number, tax number
IBAN/BIC or local bank account details, depending on your bank's country
Upload a logo shown on invoices and your payment pages
## Updating Your Details
Navigate to **Settings** in your dashboard, then select the **Business** tab.
**Company Name** and **Company Address** are required. As you type the address, PayRequest suggests matching addresses to reduce typos.
Choosing a country from the list automatically sets the correct country code. **Language** controls the default language for documents (English, Nederlands, Deutsch, Français, or Español).
**Company Number**, **VAT Number**, and **Tax Number** are all optional free-text fields shown on invoices where applicable.
Set your **Bank Country** first — PayRequest shows an IBAN/BIC form for IBAN-zone countries, a routing-number-style form for the US, or a generic account number field for everywhere else.
Upload an image (max 1MB). It's used on invoices and your payment pages. You can remove it at any time.
Click save to persist your changes immediately.
## Bank Detail Format by Country
| Bank Country | Fields Shown |
| - | - |
| **IBAN-zone countries** (NL, DE, BE, FR, etc.) | IBAN, BIC |
| **United States** | Bank account holder, account number, routing number |
| **Other countries** | Generic account holder and account number fields |
Bank details entered here are for display/reference (e.g. on invoices for manual bank transfer). They are separate from your connected payment providers (Mollie, Ponto, etc.), which handle actual payment processing.
## What's Configured Elsewhere
Business Details covers company identity only. Related settings live on their own tabs:
* **Invoice numbering, footer text, and IBAN display on invoices** — Settings > Invoice Design, see [Invoice Settings](/business-settings/invoice-settings)
* **VAT registration, default tax rate, tax region, and currency** — Settings > Tax & Currency, see [Tax & VAT Guide](/business-settings/tax-vat-guide)
## FAQ
No. If you don't upload one, invoices and payment pages display without a logo.
1MB. If your file is larger, compress or resize it before uploading.
No — Business Details are set once per account and apply across your business.
No. Already-generated invoices keep the business details that were active when they were created. Only new invoices use the updated details.
## Next Steps
Configure invoice numbering, footer, and display defaults
Set up VAT registration and tax defaults
Invite team members to help manage your account
Control which business notifications you receive by email
# Data Import & Export
Source: https://docs.payreque.st/business-settings/data-import-export
Export your customers, products, subscriptions, invoices, and orders to CSV for backups, accounting, or analysis.
# Data Import & Export
PayRequest lets you export your core business data — customers, products, subscriptions, invoices, and orders — to CSV files. This is useful for backups, accounting, spreadsheet analysis, or moving data into another tool.
CSV export is available from the **Bulk Actions** page. See [Export Functions](/analytics-and-reporting/export-functions) for the full step-by-step guide, entity-by-entity column reference, and FAQ.
## What You Can Export
Name, email, phone, company, language, tax exempt status, tags
Name, SKU, price, tax rate, type, status, stock, tags
Customer, product, amount, interval, status, next billing date, tags
Amounts, status, dates, and tags
Exports can be filtered by tags, so you can pull exactly the subset you need instead of your entire dataset. Full details are in [Export Functions](/analytics-and-reporting/export-functions).
## Other Places You Can Export Data
A few other pages in PayRequest offer their own scoped CSV exports:
* **Mollie Customers** — export your synced Mollie customer list directly from the Mollie Customers page. See [Customer Sync](/customer-management/customer-sync).
* **Tags** — exporting subscriptions, Mollie subscriptions, or products for a specific tag from the tag detail page.
## Importing Data
PayRequest does not currently offer a bulk CSV importer for customers or products. Customers and products are created individually (through the dashboard, a customer's first checkout, or automatically via [Mollie Customer Sync](/customer-management/customer-sync)).
If you're migrating from another platform, the practical paths today are:
* **Customers**: create them manually, or let them populate automatically as they check out on your payment page or shop
* **Products**: recreate them individually using the product wizard — see [Creating Products](/products-and-pricing/creating-products)
## FAQ
No. Exports are per entity type (customers, products, subscriptions, invoices, or orders) — you export one type of record at a time as a CSV.
CSV, with a UTF-8 byte-order mark so the file opens correctly with accented characters in Excel, Numbers, or Google Sheets.
Yes — see the [API Reference](/api/overview) to fetch invoices, payments, and payment links programmatically rather than downloading CSVs.
## Next Steps
Full step-by-step guide to CSV exports
See everything else the Bulk Actions page can do
Pull your existing Mollie customers into PayRequest
Access your billing data programmatically
# Email Configuration
Source: https://docs.payreque.st/business-settings/email-configuration
Control which business notifications you receive by email, and how customer email replies reach you.
# Email Configuration
PayRequest sends two kinds of email: automated notifications to **you** about events in your business, and transactional emails to your **customers** (invoices, receipts, reminders, etc.). This page covers how to control what you receive and how customer replies reach you — see the linked pages below for customer-facing email content and delivery troubleshooting.
Manage your own notification preferences under **Settings > Notifications** (`/settings?tab=notifications`).
## Notification Settings
Choose which business events send you an email, grouped by category:
| Category | Example Notifications |
| - | - |
| **Payments** | Payment received, payment failed, refund processed, chargeback received, manual payment awaiting confirmation |
| **Customers** | New customer, customer profile updated |
| **Orders** | New order, order completed, order cancelled |
| **Subscriptions** | New subscription, subscription renewed, subscription cancelled, subscription payment failed, trial ending soon, monthly subscription report |
| **Reports & Digests** | Daily business summary (off by default) |
Open **Settings** and select the **Notifications** tab.
Each notification type has its own switch. Most are enabled by default; the daily business summary is off by default.
Each toggle saves immediately — there's no separate save button.
Notifications are sent to your account's login email address. Event-based notifications (payment received, new order, new subscription, etc.) are sent as soon as the event happens. The **Daily Business Summary** is sent at 08:00 (Europe/Amsterdam), and the **Monthly Subscription Report** is sent at 08:00 on the 1st of each month.
## Receiving Customer Replies (Email-to-Ticket)
Every email PayRequest sends to your customers — invoices, reminders, order confirmations, and more — includes a Reply-To address unique to your business. When a customer replies, it's automatically converted into a support ticket in your dashboard.
This requires no setup — your Reply-To address is generated automatically from your shop name or PayRequest Page handle (e.g. `yourshop@payreque.st`). Full details, including how ticket matching and two-way email conversations work, are covered in [Support Requests](/customer-management/support-requests).
## Customizing Customer-Facing Emails
The content and subject line of transactional emails (invoices, reminders, subscription notices, etc.) are customized separately from notification preferences. See [Email Templates](/invoices/email-templates) to edit the wording customers see.
There's currently no setting to change the sending domain or use your own SMTP relay — all business emails are sent through PayRequest's own email infrastructure.
## FAQ
Not currently — notifications go to your account's login email address.
Notification settings are configured at the account level, not per team member.
Check [Email Delivery Issues](/troubleshooting/email-delivery-issues) for common causes — spam filtering is the most frequent one.
There's no single master switch — toggle off each notification type individually under Settings > Notifications.
## Next Steps
See how customer email replies become support tickets
Customize the content of customer-facing emails
Learn what triggers automated customer emails
Troubleshoot missing or delayed emails
# Invoice Settings
Source: https://docs.payreque.st/business-settings/invoice-settings
Configure your invoice numbering format, sequence, and related defaults
# Invoice Settings
Invoice numbering is configured per business, so every invoice you create follows a consistent, predictable sequence.
Invoice numbering lives at **Settings → Business → Invoice Design → Numbering**. The same screen also has Logo and Footer tabs for visual branding — see [Invoice Templates](/invoices/invoice-templates).
## Numbering Format
Enter a format string using placeholders:
* `{NUMBER}` — the sequential number
* `{YEAR}` — the current year
* `{MONTH}` — the current month
For example, `INV-{YEAR}{MONTH}-{NUMBER}` produces numbers like `INV-202607-0001`.
This is the sequential number your **next** invoice will use.
Choose how many digits the sequential number is padded to with leading zeros (1–10). A padding of 4 turns `1` into `0001`.
The settings page shows exactly how your next invoice number will look, based on your current format, next number, and padding.
### How the Sequence Resets
Your numbering scope is determined automatically by which placeholders you use in the format:
| Format includes | Numbering resets |
| - | - |
| `{MONTH}` | Every month (numbering restarts within each new month) |
| `{YEAR}` (no `{MONTH}`) | Every year |
| Neither | Never — one continuous global sequence |
When generating the next number, PayRequest checks your existing invoices matching the current period's prefix and uses whichever is higher: your stored "next number" setting, or one past the highest number already used. This avoids duplicate invoice numbers even if you've manually edited a number before.
Credit notes draw from the same numbering sequence as regular invoices — creating a credit note also advances your next invoice number.
## Related Invoice Defaults
A few other settings affect how new invoices behave, though they live on separate settings screens:
| Setting | Location | Effect |
| - | - | - |
| **Auto-enable payment reminders** | Settings → Business → Payment Reminders | When on, every new invoice you create has payment reminders enabled by default (still adjustable per invoice) |
| **Show IBAN on Invoice** | Settings → Business → Invoice Design → Footer | Whether your bank IBAN is printed on invoices, under your VAT number |
| **Default tax rate** | Settings → Business → Tax & Currency | The tax rate applied to manually-added invoice items and new products |
## FAQ
Yes, anything outside of `{NUMBER}`, `{YEAR}`, and `{MONTH}` is treated as literal text — useful for prefixes like `INV-` or separators.
PayRequest always uses the higher of your stored next number and one past the highest existing invoice number in the current numbering scope, so you won't get a collision with an existing invoice number.
No. Existing invoices keep the number they were created with. Only invoices created after the change use the new format.
## Next Steps
Customize your invoice's logo and footer
Learn the invoice creation flow
Configure your automatic reminder schedule
Set your default tax rate and VAT registration
# Linked Accounts
Source: https://docs.payreque.st/business-settings/linked-accounts
Link separate PayRequest accounts and switch between businesses or personal pages without signing in again.
# Linked Accounts
Linked accounts let you move between separate PayRequest accounts without signing out. This is useful when you manage more than one business, or when you have both a business account and a personal PayRequest Page.
For example, one login session can give you access to:
* Your company account
* A second business with its own email address
* A personal account with its own `payrequest.me` handle
Linking accounts does not merge them. Each account keeps its own customers, products, invoices, payment providers, subscription, settings, and PayRequest Page.
## Link an Existing Account
Both accounts must already exist before you can link them.
Click your account name in the top-right corner of the PayRequest dashboard, then select **Linked accounts**.
Under **Link an existing account**, enter the email address used by the other PayRequest account and click **Send confirmation**.
Open the confirmation email sent to the other account and click **Confirm account link**. The confirmation link expires after one hour.
Sign in to any linked account. The account menu now includes **Switch account**.
Only link accounts you personally own and trust. Access to one account in a linked group allows switching to the other accounts in that group.
## Switch Accounts
1. Click the current account name in the top-right corner.
2. Open **Switch account**.
3. Select the business or personal account you want to use.
PayRequest opens the selected account's dashboard. The account name and email shown in the menu help you confirm which account is currently active.
Always check the active account before creating invoices, connecting a payment provider, changing settings, or publishing products.
## What Remains Separate
| Account data | Shared after linking? |
| - | - |
| Customers and contacts | No |
| Products and orders | No |
| Invoices and transactions | No |
| Mollie, Stripe, PayPal, and bank connections | No |
| PayRequest plan and billing | No |
| Business details and tax settings | No |
| PayRequest Page and handle | No |
| Login session for switching | Yes |
This means switching from a company account to a personal account also switches to that personal account's own products, payment connections, and `payrequest.me` page.
## Unlink an Account
1. Switch to an account that should remain in the linked group.
2. Open **Linked accounts** from the account menu.
3. Find the other account and click **Unlink**.
4. Confirm the action.
After unlinking, you must sign in separately to access that account again. No account data is deleted.
## Security
* The other account must confirm the initial link through its registered email address.
* Confirmation links expire after one hour.
* Both accounts receive a security notification after linking.
* Account switches are recorded in PayRequest's activity logs.
* Team members cannot link accounts or switch into a business owner's other accounts.
* PayRequest never links accounts automatically based on a matching name, company domain, customer record, or payment provider.
## Troubleshooting
Check the spam folder and confirm that you entered the email address of an existing PayRequest account. You can submit the request again to receive a new link; the previous link will stop working.
Open **Linked accounts** and send a new confirmation. Each link remains valid for one hour.
PayRequest does not automatically combine two existing account groups because that could grant unintended access. Unlink the account from its current group before linking it to a different group.
No. Linked accounts are intended for an owner managing their own separate PayRequest accounts. Use [Team Management](/business-settings/team-management) to give colleagues controlled access to one business.
## Related Guides
Configure the identity and tax information for each business account
Invite colleagues without linking your owner accounts
# PayRequest Plans: Free, Premium & Business
Source: https://docs.payreque.st/business-settings/payrequest-plans
Compare the Free, Premium, and Business plans and see exactly what each tier unlocks
# PayRequest Plans
PayRequest offers three tiers: **Free**, **Premium**, and **Business**. Every account starts on the Free plan — you can invoice, take payments, and run a PayRequest Page from day one. Upgrading to Premium removes the per-transaction fee and unlocks features like quotes, digital products, and PayRequest Page visitor analytics.
The Business plan (subscriptions, an online shop, and order management) is available **on request** rather than as a self-serve upgrade. See [Requesting the Business Plan](#requesting-the-business-plan) below.
## Plan Comparison
| | **Free** | **Premium** | **Business** |
| - | - | - | - |
| Price | €0/month | €5/month | €20/month |
| Transaction fee | 2% per payment | 0% | 0% |
| PayRequest Page & payment links | ✅ | ✅ | ✅ |
| Basic invoicing | ✅ | ✅ | ✅ |
| Customer management | – | ✅ | ✅ |
| Digital products | – | ✅ | ✅ |
| Activity log | – | ✅ | ✅ |
| Quotes | – | ✅ | ✅ |
| Bulk actions & exports | – | ✅ | ✅ |
| Debt collection | – | ✅ | ✅ |
| PayRequest Page visitor analytics | – | ✅ | ✅ |
| Manual payment methods (bank transfer instructions, etc.) | – | ✅ | ✅ |
| Subscriptions & recurring billing | – | – | ✅ |
| Online shop | – | – | ✅ |
| Order management | – | – | ✅ |
## Free Plan
Every new account starts here. You can create a PayRequest Page, send invoices, and accept payments right away.
The trade-off is a **2% fee** on every successful transaction — this is how PayRequest covers its costs for accounts that aren't on a paid plan. There's no monthly charge either way.
Free accounts don't have access to quotes, digital products, bulk actions, debt collection, the activity log, or PayRequest Page visitor analytics. Where these appear in the dashboard, you'll see an **Upgrade to Premium** prompt instead.
## Premium Plan — €5/month
Premium removes the 2% transaction fee entirely and unlocks the tools most freelancers and solo businesses need day-to-day:
* **Customer management** — full customer profiles instead of just invoice recipients
* **Digital products** — sell downloads and Pay to Unlock images, audio, or video
* **Memberships & Community** — sell one recurring membership and create a private welcome page with organized members-only posts
* **Activity log** — a full audit trail of what happened on your account and when
* **Quotes** — send quotes that convert into invoices once accepted
* **Bulk actions & exports** — act on many invoices/customers at once, export data
* **Debt collection** — automated payment plans and collection workflows for overdue invoices
* **PayRequest Page visitor analytics** — see how many people visit your page each day (see below)
* **Manual payment methods** — configure your own bank transfer instructions (or other manual instructions) as a payment option on your payment page
The 0% transaction fee and manual payment methods both require an **active or trial subscription** to Premium/Business specifically — not just having `plan_type` set on your account. If your subscription lapses (e.g. a failed renewal payment), these features are gated again until it's active.
### Upgrading to Premium
1. Go to **Settings → PayRequest Plan**
2. Find the **Premium** card and click **Subscribe to Premium**
3. Complete the payment — your account unlocks immediately
If you're on Free and click a Premium-gated feature (like Quotes or Bulk Actions), PayRequest redirects you to an upgrade page explaining exactly what you're missing — you don't need to hunt for the billing page yourself.
## Business Plan — €20/month
Business adds everything needed to run recurring billing and a full online shop on top of Premium:
* **Everything in Premium**
* **Subscriptions & recurring billing** — Mollie/iDEAL mandates, dunning, pausing, and lifecycle management
* **Online shop** — a full storefront beyond the single PayRequest Page
* **Order management** — track and fulfill shop orders
### Requesting the Business Plan
The Business plan is **not** a self-serve checkout — it's available on request so we can make sure it's set up correctly for how you plan to use subscriptions and the shop.
Email [support@payrequest.io](mailto:support@payrequest.io?subject=Business%20plan) and let us know you'd like the Business plan.
We'll check your account and connected payment provider to make sure subscriptions and the shop will work smoothly for your use case.
Once confirmed, we activate the Business plan on your account — no self-serve checkout involved.
Existing Business plan customers keep their subscription exactly as-is — this change only affects new sign-ups, who now request access instead of subscribing directly from the billing page.
## Managing Your Plan
Go to **Settings → PayRequest Plan** to see your current plan, payment method, next billing date, and billing history. From there you can also:
* **Pause** your subscription (with an optional auto-resume date)
* **Resume** a paused subscription
* **Cancel** your subscription (you keep access until the end of your current billing period)
Canceling removes access to Premium-only features (quotes, digital products, bulk actions, debt collection, activity log, PayRequest Page analytics) at the end of your billing period, and your account reverts to the Free plan's 2% transaction fee.
## Frequently Asked Questions
Downgrading from Business isn't available directly in the billing page. Contact [support@payrequest.io](mailto:support@payrequest.io) if you need to change tiers.
No. The 2% per-transaction fee only applies to the Free plan. Premium and Business both have a flat 0% platform fee — your subscription cost is the only fee PayRequest charges.
Nothing is deleted. Your invoices, customers, and products remain in your account — you simply lose access to Premium-only features and pages until you resubscribe.
The Business plan involves subscriptions and shop configuration that we want to get right from the start, so it's now request-only. Premium remains fully self-serve.
## Next Steps
See daily visitor counts for your PayRequest Page — a Premium feature
Customize the page your visitors and customers see
Automated payment plans for overdue invoices — a Premium feature
Configure your business information
Get Premium for free by locking \$PAYR tokens on Solana instead of paying by card
# Tax & VAT Guide
Source: https://docs.payreque.st/business-settings/tax-vat-guide
Complete guide to setting up and managing tax collection, VAT compliance, and tax exemptions in PayRequest
# Tax & VAT Guide
PayRequest provides comprehensive tax handling for businesses of all sizes. Whether you're collecting Dutch BTW, EU VAT, or dealing with international tax exemptions, this guide covers everything you need to know.
## Overview
PayRequest automatically calculates taxes based on your product settings, customer location, and tax exemption status.
Built-in support for EU VAT rules including reverse charge mechanisms for B2B transactions.
Choose how prices are displayed to customers - with tax included or shown separately.
Easy-to-manage tax exemption status for B2B customers and qualifying organizations.
## Setting Up Your Tax Configuration
### Step 1: Configure Business Tax Settings
Navigate to **Settings > Tax & Currency** to configure your business-wide tax defaults.
Toggle **VAT Registered** if your business is registered for VAT/BTW. This enables tax collection features across your account.
Enter your default tax rate (e.g., **21%** for Dutch BTW high rate). This rate will be applied to new products automatically.
Select your business location (**NL** for Netherlands, or your EU country code). This affects how taxes are calculated for international customers.
Add your official VAT/BTW registration number. This appears on invoices and enables VAT validation features.
Your default tax settings serve as templates for new products. You can always override these on individual products.
### Step 2: Configure Product Tax Settings
Each product can have its own tax configuration. Go to **Products > Edit Product** to adjust:
| Setting | Description | Example |
| - | - | - |
| **Tax Rate** | The percentage of tax to apply | 21%, 9%, 0% |
| **Tax Included** | Whether the displayed price includes tax | Yes (recommended) |
**Tax Included (Recommended for B2C)**
When enabled, the price you set is the final price customers see. Tax is calculated backwards from this price.
* Price set: €121.00
* Tax rate: 21%
* Net amount: €100.00
* Tax amount: €21.00
**Tax Excluded (Common for B2B)**
When disabled, the price you set is the net price. Tax is added on top.
* Price set: €100.00
* Tax rate: 21%
* Tax amount: €21.00
* Total: €121.00
### Step 3: Configure Shop Tax Display
Control how prices appear in your shop. Go to **Settings > Shop** and find the **Tax Display** setting:
Prices show the final amount including tax.
**Customer sees:**
```
Product Name
€121.00 incl. BTW
```
Best for: B2C businesses, consumer-facing shops
Prices show the base amount, with tax added at checkout.
**Customer sees:**
```
Subtotal: €100.00
BTW (21%): €21.00
Total: €121.00
```
Best for: B2B businesses, wholesale pricing
## Dutch BTW (VAT) Rates
PayRequest supports all Dutch BTW rates:
| Rate | Name | Common Use Cases |
| - | - | - |
| **21%** | High Rate (Algemeen tarief) | Most goods and services |
| **9%** | Low Rate (Verlaagd tarief) | Food, books, medications, hotels |
| **0%** | Zero Rate (Nultarief) | Exports, intra-EU B2B supplies |
Always consult with your accountant to determine the correct tax rate for your products or services.
## Tax Exemptions for Customers
Some customers may qualify for tax exemption, such as:
* B2B customers with valid EU VAT numbers
* Non-profit organizations
* Government entities
* Export customers outside the EU
### Marking a Customer as Tax Exempt
Navigate to **Customers** and select the customer you want to mark as exempt.
In the customer details, toggle **Tax Exempt** to enabled.
Add a note explaining why this customer is tax exempt (e.g., "Valid EU VAT number verified" or "Non-profit organization").
### What Happens When a Customer is Tax Exempt?
When you create invoices or process orders for tax-exempt customers:
* All tax rates are automatically set to **0%**
* Invoice line items show **"BTW VERLEGD"** (Tax Reversed)
* The invoice total excludes tax
* Cart and checkout calculations reflect zero tax
Tax exemption status is checked automatically at checkout. Exempt customers always see tax-free prices.
### Bulk Tax Exemption Updates
Need to update multiple customers at once? Use the **Bulk Actions** feature:
1. Go to **Customers**
2. Select multiple customers using checkboxes
3. Click **Bulk Actions**
4. Choose **Toggle Tax Exempt**
## EU VAT Rules
PayRequest implements standard EU VAT rules for cross-border transactions:
### B2C Sales (Business to Consumer)
| Your Location | Customer Location | Tax Applied |
| - | - | - |
| Netherlands | Netherlands | Dutch BTW (21%) |
| Netherlands | Other EU Country | Dutch BTW (21%)\* |
| Netherlands | Outside EU | 0% (Export) |
\*Note: For high-volume sellers, One-Stop-Shop (OSS) rules may apply.
### B2B Sales (Business to Business)
| Your Location | Customer Location | Tax Applied |
| - | - | - |
| Netherlands | Netherlands | Dutch BTW (21%) |
| Netherlands | Other EU Country with VAT | 0% (Reverse Charge) |
| Netherlands | Outside EU | 0% (Export) |
When selling B2B to customers in other EU countries who have a valid VAT number, the reverse charge mechanism applies:
* You charge **0% VAT** on the invoice
* The invoice shows **"BTW VERLEGD"** or "VAT Reverse Charge"
* The customer accounts for VAT in their own country
* You must verify the customer's VAT number is valid
**To apply reverse charge in PayRequest:**
1. Mark the customer as **Tax Exempt**
2. Store their EU VAT number in the customer profile
3. Add a note confirming VAT number validation
### Supported EU Countries
PayRequest recognizes all 27 EU member states:
| Code | Country |
| - | - |
| AT | Austria |
| BE | Belgium |
| BG | Bulgaria |
| HR | Croatia |
| CY | Cyprus |
| CZ | Czech Republic |
| DK | Denmark |
| EE | Estonia |
| FI | Finland |
| FR | France |
| DE | Germany |
| GR | Greece |
| HU | Hungary |
| IE | Ireland |
| IT | Italy |
| LV | Latvia |
| LT | Lithuania |
| LU | Luxembourg |
| MT | Malta |
| NL | Netherlands |
| PL | Poland |
| PT | Portugal |
| RO | Romania |
| SK | Slovakia |
| SI | Slovenia |
| ES | Spain |
| SE | Sweden |
## Tax on Invoices
### How Tax Appears on Invoices
Your customers see a clear tax breakdown on every invoice:
```
┌─────────────────────────────────────────┐
│ INVOICE #2025-001 │
├─────────────────────────────────────────┤
│ Product/Service Qty Amount │
│ Web Hosting (Monthly) 1 €100.00 │
│ Domain Registration 1 €15.00 │
├─────────────────────────────────────────┤
│ Subtotal €115.00 │
│ BTW 21% €24.15 │
│ Total €139.15 │
└─────────────────────────────────────────┘
```
For tax-exempt customers:
```
┌─────────────────────────────────────────┐
│ INVOICE #2025-002 │
│ BTW VERLEGD │
├─────────────────────────────────────────┤
│ Product/Service Qty Amount │
│ Consulting Services 5 €500.00 │
├─────────────────────────────────────────┤
│ Subtotal €500.00 │
│ BTW (0% - Verlegd) €0.00 │
│ Total €500.00 │
└─────────────────────────────────────────┘
```
### Per-Line Tax Rates
Different products on the same invoice can have different tax rates:
```
┌─────────────────────────────────────────────────┐
│ Product Tax Rate Amount │
├─────────────────────────────────────────────────┤
│ Software License 21% €100.00 │
│ Training Manual (Book) 9% €25.00 │
│ Export Shipping 0% €15.00 │
├─────────────────────────────────────────────────┤
│ BTW Breakdown: │
│ 21% over €100.00 €21.00 │
│ 9% over €25.00 €2.25 │
│ 0% over €15.00 €0.00 │
│ Total BTW €23.25 │
│ Total €163.25 │
└─────────────────────────────────────────────────┘
```
## Setup Fees and Tax
[Setup fees](/products-and-pricing/setup-fees) are taxed at the same rate as their parent product. If a product has:
* Price: €50.00/month at 21% BTW
* Setup fee: €100.00 (named "Borg" or "Installation Fee")
The setup fee will also be taxed at 21%.
Setup fees with custom names (like "Borg" or "Onboarding Fee") appear with their custom name on invoices, making it clear what the customer is paying for.
## Tax in the Shopping Cart
During checkout, customers see a complete tax breakdown.
The cart displays:
* Individual product prices
* Setup fees (if applicable)
* Custom field markups
* Tax amount calculated
* Total including tax
## Common Tax Scenarios
**Setup:**
* Tax Rate: 21%
* Tax Included: Yes
* Customer: Not tax exempt
**Result:** Customer pays the displayed price, which includes 21% BTW.
**Setup:**
* Tax Rate: 21%
* Customer: Regular Dutch business (not exempt)
**Result:** Customer pays 21% BTW. They can reclaim this on their own VAT return.
**Setup:**
* Customer: Marked as Tax Exempt
* Customer's EU VAT number recorded
**Result:** 0% VAT applied (reverse charge). Invoice shows "BTW VERLEGD".
**Setup:**
* Customer country: Outside EU (e.g., USA, UK)
* Customer: Should be marked as Tax Exempt
**Result:** 0% VAT applied (export). No Dutch BTW on exports.
**Setup:**
* Product Tax Rate: 9%
* Examples: Books, food, medications
**Result:** 9% BTW applied instead of standard 21%.
## Best Practices
Always validate EU VAT numbers before applying tax exemption. Use the [VIES VAT validation service](https://ec.europa.eu/taxation_customs/vies/).
Keep records of why each customer is tax exempt. Add notes to customer profiles with validation dates.
VAT numbers can become invalid. Review tax-exempt customers periodically to ensure continued compliance.
Tax laws are complex and change frequently. Work with an accountant familiar with Dutch and EU VAT regulations.
## Troubleshooting
**Check these settings:**
1. Is your business marked as VAT Registered in Settings?
2. Does the product have a tax rate set?
3. Is the customer accidentally marked as Tax Exempt?
**Possible causes:**
1. Product has a different tax rate than your default
2. Customer has specific tax settings
3. Country-based tax rules are being applied
**Solution:** Check the product's individual tax settings and the customer's tax exemption status.
**Check:**
1. Is the Tax Exempt toggle actually enabled on the customer profile?
2. Was the invoice/order created before the exemption was set?
3. Clear any cached cart data and try again
**Verify:**
1. Check if Tax Included is set correctly on the product
2. Ensure the tax rate matches what you expect
3. For existing invoices, you may need to edit and recalculate
## Related Documentation
Detailed guide on managing customer tax exemptions
How tax is configured and displayed on invoices
Configure one-time setup fees with custom names
Configure your business information including VAT number
***
Tax regulations vary by country and situation. This documentation provides general guidance on PayRequest's tax features. Always consult with a qualified tax professional for advice specific to your business.
# Team Management
Source: https://docs.payreque.st/business-settings/team-management
Invite team members and manage permissions for your business
# Team Management
Add team members to help manage your PayRequest business. Assign roles and control exactly what each team member can access and modify.
## Overview
Team management allows you to:
* Invite colleagues to your dashboard
* Assign predefined roles or custom permissions
* Control access to specific features
* Suspend or remove team members
* Track pending invitations
## Inviting Team Members
### Send an Invitation
1. Navigate to **Settings** → **Team**
2. Click **Invite Team Member**
3. Enter the team member's email address
4. Select a role (or customize permissions)
5. Click **Send Invitation**
The invited person receives an email with a link to join your team.
### Invitation Status
| Status | Description |
| - | - |
| **Pending** | Invitation sent, awaiting acceptance |
| **Accepted** | Team member has joined |
| **Expired** | Invitation link has expired |
### Resend or Cancel
For pending invitations:
* **Resend**: Send the invitation email again
* **Cancel**: Remove the invitation entirely
## Roles and Permissions
### Predefined Roles
Choose from these standard roles:
| Role | Description |
| - | - |
| **Admin** | Full access to everything |
| **Manager** | View and edit most features, limited settings |
| **Sales** | Focus on products, customers, and orders |
| **Support** | View-only access for customer support |
| **Custom** | Build your own permission set |
### Admin Role
Full access including:
* All product operations (create, edit, delete)
* All customer management
* All invoice operations
* All order operations
* Subscription management
* Settings access
* Reports and analytics
### Manager Role
Standard management access:
* Products: View, create, edit
* Customers: View, create, edit
* Invoices: View, create, edit
* Orders: View, edit
* Subscriptions: View, edit
* Settings: View only
* Reports: Full access
### Sales Role
Sales-focused permissions:
* Products: View, create
* Customers: View, create, edit
* Invoices: View, create
* Orders: View, create
* Subscriptions: View
* Reports: View
### Support Role
Read-only for customer assistance:
* Products: View
* Customers: View
* Invoices: View
* Orders: View
* Subscriptions: View
### Custom Permissions
Build a custom permission set by toggling individual permissions:
**Products**
* View products
* Create products
* Edit products
* Delete products
**Customers**
* View customers
* Create customers
* Edit customers
* Delete customers
**Invoices**
* View invoices
* Create invoices
* Edit invoices
* Delete invoices
**Orders**
* View orders
* Create orders
* Edit orders
**Subscriptions**
* View subscriptions
* Edit subscriptions
* Cancel subscriptions
**Settings**
* View settings
* Edit settings
**Reports**
* View reports and analytics
## Managing Team Members
### View Team
Navigate to **Settings** → **Team** to see:
* Active team members
* Their assigned roles
* Current status
* Pending invitations
### Suspend a Member
Temporarily disable access without removing:
1. Find the team member
2. Click the status toggle
3. Member is suspended (can be reactivated)
Suspended members cannot log in until reactivated.
### Remove a Member
Permanently remove access:
1. Find the team member
2. Click **Remove**
3. Confirm removal
**Permanent Action**: Removing a team member deletes their access permanently. You'll need to send a new invitation if you want to add them back.
### Edit Permissions
To change a team member's role or permissions:
1. Click on the team member
2. Update their role or toggle individual permissions
3. Save changes
Changes take effect immediately on their next page load.
## Team Member Experience
### Accepting an Invitation
When someone receives a team invitation:
1. They click the link in the email
2. Create a password (if new to PayRequest)
3. Accept the invitation
4. Gain access to your dashboard
### Dashboard Access
Team members see a version of the dashboard filtered by their permissions:
* Hidden features they can't access
* Read-only views for view-only permissions
* Full edit capabilities where permitted
### Switching Businesses
If a team member is invited to multiple businesses:
* They can switch between them
* Each business has separate permissions
* Data is completely isolated
## Best Practices
Give team members only the permissions they need
Start with predefined roles before customizing
Periodically review team member access
Suspend first if unsure about removing access
## Common Use Cases
### Virtual Assistant
* **Role**: Support or Custom
* **Permissions**: View customers, view invoices, view orders
* **Purpose**: Answer customer questions without making changes
### Accountant
* **Role**: Custom
* **Permissions**: View invoices, view reports, view settings
* **Purpose**: Financial oversight and reporting
### Sales Team
* **Role**: Sales
* **Permissions**: Full product and customer access
* **Purpose**: Create products and manage customer relationships
### Operations Manager
* **Role**: Manager
* **Permissions**: Most features except settings
* **Purpose**: Day-to-day business operations
## Security Considerations
### Email Verification
Team members must verify their email to accept invitations.
### Invitation Expiry
Invitations expire after a set period for security. Resend if needed.
### Activity Logging
All team member actions are logged in the activity feed for audit purposes.
### Password Requirements
Team members must create secure passwords meeting minimum requirements.
## Troubleshooting
### Invitation Not Received
* Check spam/junk folder
* Verify email address is correct
* Resend the invitation
* Ask team member to whitelist PayRequest emails
### Cannot Access Features
* Verify assigned role includes needed permissions
* Check if account is suspended
* Confirm invitation was accepted (not just clicked)
### Forgot Password
Team members can use the password reset flow on the login page.
## Related Topics
Configure your business information
Monitor team member actions
Secure team member accounts
Review all account activity
# Category Display Types
Source: https://docs.payreque.st/categories/display-types
Learn how to customize how your products are displayed in different categories using Cards, List, or Price Table layouts
# Category Display Types
PayRequest offers three different ways to display your products within categories, allowing you to choose the best layout for each type of product you sell.
## Available Display Types
### Cards Layout (Default)
The Cards layout displays your products in a grid format with product images, names, and prices in individual cards. This is the most visually appealing option and works well for most product types.
**Best for:**
* Physical products with images
* Digital products and services
* General merchandise
* When you want a modern, visual shopping experience
### List Layout
The List layout shows your products in a horizontal format with the image on the left and product details on the right. This compact view allows customers to quickly scan through multiple products.
**Best for:**
* Services and consultations
* Digital downloads
* Products where detailed descriptions are important
* When you have many products in a category
### Price Table Layout
The Price Table layout displays your products in a structured comparison table with feature-by-feature comparison, pricing, and action buttons. Each feature is shown as a row with checkmarks or values for each product, making it easy for customers to understand what's included in each plan.
**Best for:**
* Subscription plans and pricing tiers
* Service packages with different features
* Software licenses with various capabilities
* Membership options with different benefits
* When customers need to compare features side-by-side
* SaaS products with multiple plan tiers
## How to Set Category Display Types
1. **Navigate to Categories**
* Go to your dashboard
* Click on "Categories" in the sidebar
2. **Create or Edit a Category**
* Click "Create Category" for a new category, or
* Click "Edit" next to an existing category
3. **Choose Display Type**
* In the category form, find the "Display Type" field
* Select from the dropdown:
* **Cards** - Grid layout with product cards
* **List** - Horizontal list layout
* **Price Table** - Structured table layout
4. **Configure Features (Price Table Only)**
* If you selected "Price Table", you'll see a "Features" section
* Add the features you want to compare across products
* Each feature will become a row in your pricing table
* Examples: "Storage", "Users", "Support", "API Access"
5. **Save Your Changes**
* Click "Create Category" or "Update Category"
* Your category will now display products using the selected layout
## Examples in Action
### Cards Layout Example
Perfect for an "Accessories" category where customers browse visually:
* Product images are prominently displayed
* Clean grid layout
* Easy to browse and discover products
### List Layout Example
Ideal for a "Services" category where details matter:
* Detailed descriptions visible at a glance
* Compact view showing more products per page
* Professional appearance for service-based businesses
### Price Table Example
Perfect for a "Plans" or "Memberships" category:
* **Product columns** show plan names, descriptions, and pricing
* **Feature rows** display each feature with checkmarks (✓) or values
* **Visual comparison** makes it easy to see what's included
* **Setup fees** automatically displayed if configured
* **Clear action buttons** for subscribing or purchasing
* **Professional SaaS-style** presentation that customers expect
## Setting Up Price Table Features
When using the Price Table layout, you can define features that will be compared across all products in the category. This creates a professional comparison table that helps customers understand the differences between your plans or products.
### Adding Features to a Category
1. **Edit Your Category**
* Go to Categories in your dashboard
* Click "Edit" on a category with "Price Table" display type
2. **Configure Features**
* Scroll to the "Features" section
* Click "Add Feature" to add a new feature
* Enter feature names like:
* "Storage Space"
* "Number of Users"
* "Email Support"
* "API Access"
* "Custom Branding"
3. **Save Category**
* Click "Update Category" to save your features
### Setting Feature Values for Products
After defining features in your category, you need to set the values for each product:
1. **Edit a Product**
* Go to Products in your dashboard
* Click "Edit" on a product in your price table category
2. **Configure Feature Values**
* Scroll to the "Features" section
* You'll see all features defined in the category
* Set values for each feature:
* **Text values**: "100GB", "Unlimited", "24/7"
* **Yes/No features**: Leave blank for ✗ (no), add any text for ✓ (yes)
* **Numeric values**: "5 users", "\$50/hour"
3. **Save Product**
* Click "Update Product" to save feature values
### How Features Display
In your shop's price table:
* **Feature names** appear as row headers on the left
* **Feature values** show in each product column
* **Checkmarks (✓)** appear for features with values
* **X marks (✗)** appear for empty/missing features
* **Setup fees** automatically display if configured on products
### Feature Management Tips
**Naming Features**
* Use clear, descriptive names
* Keep names concise for mobile display
* Use consistent terminology across features
**Setting Values**
* Leave features blank if not included in a plan
* Use consistent units (GB, users, hours, etc.)
* Add qualifiers when helpful ("Email support", "Priority support")
**Feature Order**
* List most important features first
* Group related features together
* Put pricing-related features (like usage limits) early
### Updating Features
**Adding New Features**
* Edit the category and add new features
* Existing products will show ✗ for new features until you set values
* Edit each product to add values for new features
**Renaming Features**
* Edit the category and change feature names
* The system automatically updates product features to use new names
* Existing feature values are preserved during renames
**Removing Features**
* Remove features from the category
* Feature data is automatically removed from all products in the category
## Tips for Choosing the Right Display Type
### Consider Your Products
* **Visual products** (clothing, electronics, etc.) → Use **Cards**
* **Services or consultations** → Use **List**
* **Plans or tiers** → Use **Price Table**
### Think About Your Customers
* **Browsing behavior** → Cards work well for discovery
* **Comparison shopping** → Price tables help with decisions
* **Quick scanning** → Lists provide efficient overview
### Match Your Brand
* **Modern, visual brand** → Cards layout
* **Professional services** → List or Price Table
* **SaaS or subscription business** → Price Table
## Advanced Tips
### Category Descriptions
When using different display types, make sure your category descriptions help guide customers:
* For Cards: Focus on the product category benefits
* For Lists: Explain what makes your services unique
* For Price Tables: Highlight what customers can compare
### Product Information
Ensure your products have the right information for each display type:
* **Cards**: Good images and clear names
* **Lists**: Detailed descriptions
* **Price Tables**: Clear feature lists and pricing
### Customer Experience
You can use different display types for different categories in the same shop to create the best experience for each type of product you offer.
## Troubleshooting
**Q: Can I change the display type after creating a category?**
A: Yes! You can edit any category and change its display type at any time. When switching to Price Table, you'll need to add features.
**Q: Do all products show the same information in each layout?**
A: The layouts show different amounts of detail. Cards show basic info, Lists show more description, and Price Tables show features and structured information.
**Q: What happens when I rename a feature in a category?**
A: The system automatically updates all products in that category to use the new feature name while preserving the existing values.
**Q: Can I reorder features in the price table?**
A: Yes, edit the category and drag features to reorder them. The new order will appear in your price table.
**Q: What if I delete a feature from a category?**
A: The feature and all its values will be removed from all products in that category. This action cannot be undone.
**Q: Why don't some products show checkmarks for features?**
A: Products show checkmarks (✓) only for features that have values set. Edit the product and add values for features you want to show as included.
**Q: Can I preview how a category will look before saving?**
A: After saving your category settings, visit your shop to see how the category appears to customers.
**Q: What happens if I have products with missing information?**
A: Each layout gracefully handles missing information. For Price Tables, missing feature values show as ✗ marks. For best results, ensure your products have complete feature information.
## Price Table Best Practices
### Feature Examples by Industry
**SaaS/Software Products**
* Storage: "10GB", "100GB", "Unlimited"
* Users: "1 user", "10 users", "Unlimited"
* API Calls: "1,000/month", "10,000/month", "Unlimited"
* Support: "Email", "Priority", "24/7 Phone"
**Service Businesses**
* Response Time: "48 hours", "24 hours", "Same day"
* Revisions: "2 revisions", "5 revisions", "Unlimited"
* Meeting Time: "30 min", "1 hour", "2 hours"
* Deliverables: "Basic report", "Detailed analysis", "Full strategy"
**Membership/Subscription**
* Access Level: "Basic", "Premium", "VIP"
* Content: "Weekly", "Daily", "Real-time"
* Downloads: "5/month", "25/month", "Unlimited"
* Community: "Forum access", "Priority support", "1-on-1 calls"
### Visual Design Tips
**Feature Naming**
* Keep feature names under 20 characters when possible
* Use title case: "Email Support" not "email support"
* Be specific: "24/7 Phone Support" not just "Support"
**Value Formatting**
* Use consistent units across similar features
* Include qualifiers: "Priority email support" vs just "Email"
* Use "Unlimited" instead of very large numbers
* Keep values concise for mobile readability
**Category Organization**
* Put your most popular plan in the middle for emphasis
* Order plans from basic to premium (left to right)
* Highlight differences between adjacent plans
* Consider setup fees and trial periods in your planning
### Common Patterns
**Free Trial Indicators**
* Add "Free Trial" as a feature if applicable
* Set values like "14 days", "30 days", or "No trial"
**Setup Fees**
* Setup fees automatically display in the table
* No need to add "Setup Fee" as a manual feature
**Popular Plan Highlighting**
* Use clear naming: "Starter", "Professional", "Enterprise"
* Consider badges or special styling for recommended plans
This comprehensive comparison table approach helps customers make informed decisions and can significantly improve conversion rates for subscription and service-based businesses.
# Changelog
Source: https://docs.payreque.st/changelog
Track PayRequest platform updates, new features, and improvements
# Changelog 📝
Stay up-to-date with the latest PayRequest improvements and new features. We're constantly enhancing your billing experience.
## Request Another Payment From an Existing Customer
* **Request payment again** opens a draft using the customer's latest eligible payment, with the customer, amount, currency, and description filled in. Choose a different payment from the five recent entries on their profile.
* **No product setup required** — the draft is a one-time Amount Link. Review and edit it before creating the link; opening the draft does not save or send anything.
* **Clearer Payment Links overview** — see the customer, requested amount, payment status, last activity, and revenue. Search by customer and filter paid requests or links without a linked payment.
* **Direct actions** — copy a checkout link, request another payment, or open reminder settings for eligible unpaid links.
* **Recorded payment status** — overview figures use linked paid transactions. Historical payments without a link connection remain in the customer's payment history.
[Customer profile guide](/customer-management/customer-profiles#request-payment-again) · [Payment Links overview](/payment-processing/smart-links#payment-links-overview)
## Community — A Private Home for Paying Members
Turn one recurring membership into a simple private mini-site that lives inside your existing PayRequest Page.
### What's New
* **Private Community tab** — visitors see the membership offer; active members see the protected content area
* **Welcome page** — add formatted welcome content and an optional YouTube or Vimeo video
* **Organized sections** — group members-only posts into topics such as Breakfast, Lunch, Dinner, or Tips & tricks
* **One central setup screen** — manage the membership name, description, image, price, interval, benefits, welcome page, and sections under **Community**
* **Shared Page design** — Community automatically uses the same banner, avatar, theme, profile, and navigation as your PayRequest Page
* **Automatic access control** — successful membership payment unlocks content; access ends when the subscription is no longer active
* **Always-available login** — customer login stays visible while Community is published
* **Download library** — logged-in customers can return to digital products they purchased under **My downloads**
* **Included with Premium** — Community and membership publishing are available on Premium and higher plans
[Full Community documentation](/shop-and-checkout/community)
## Pay to Unlock (Video) — Sell Videos Behind a Teaser
Upload a full video, let customers watch a short teaser for free, and deliver the private original automatically after payment.
### What's New
* **New product type: Pay to Unlock (Video)** — available from **Products → New Product** alongside the image and audio variants
* **Automatic video teaser** — choose a free preview length up to 60 seconds; PayRequest detects the full video's duration and never offers a teaser longer than the source
* **Private original** — the public player never receives the full video URL; the MP4, MOV, WebM, or M4V original stays private until payment
* **Optional cover art** — add a separate image for product cards and listings
* **Instant delivery** — buyers receive the full original through the existing secure download-token flow
* **Clearer names** — the original photo option is now called **Pay to Unlock (Image)**, next to **Audio** and **Video**
[Full documentation](/products-and-pricing/pay-to-unlock#pay-to-unlock-video)
## Product Photo Gallery — Add Multiple Photos Per Product
Products can now show more than one photo. Upload up to 8 photos per product instead of just one — the first photo is always the cover shown in your shop, and customers browsing your checkout page can click through the rest in a simple carousel.
### What's New
* **Multiple photos per product** — upload up to 8 photos instead of one, for every product type except Pay to Unlock Image, Audio, Video, and AI Prompts (which each have their own single-image behavior)
* **First photo is the cover** — no separate "featured image" step; whichever photo is first in the gallery is automatically used in shop listings, product cards, and the Marketplace
* **Reorder and remove** — when editing a product, use the arrow buttons to reorder photos or the × button to remove one
* **AI-generated photos join the gallery** — clicking **Generate with AI** adds the generated image as your new cover photo instead of replacing a single image field
* **Checkout carousel** — products with more than one photo show a carousel with arrows and dot indicators on your checkout page; single-photo products look exactly as before
### How It Works
1. Create or edit a product and upload one or more photos in the **Product Images** field
2. Drag to reorder, or click **×** to remove a photo you don't want anymore
3. The first photo in the list is automatically your product's cover image everywhere it's shown
4. Customers see a swipeable carousel on checkout for any product with more than one photo
[Full documentation](/products-and-pricing/creating-products#product-photo-gallery)
## AI Prompts — Sell Your ChatGPT, Midjourney, and Claude Prompts
A new product type for selling the prompts you've engineered for AI tools. Customers see a teaser you write yourself, then pay to instantly unlock the full prompt with a one-click copy button — plus a dedicated Marketplace category so people who don't already know you can discover it.
### What's New
* **New product type: AI Prompts** — sell a prompt written for ChatGPT, Claude, Gemini, Midjourney, Stable Diffusion, DALL·E, Suno, Runway, and more, grouped by whether the AI produces text, images, audio, or video
* **Teaser, not a leak** — you write the pre-payment preview yourself; PayRequest never shows a snippet of the real prompt text, so the wording stays yours until it's paid for
* **Instant unlock** — after payment, the full prompt appears on the confirmation page with a **Copy Prompt** button, and is also emailed as a text file
* **Customer portal access** — customers can return to their order history any time to re-copy a purchased prompt
* **AI Prompts Marketplace category** — list your prompt on [payrequest.me/marketplace](https://payrequest.me/marketplace) under one of 10 categories: Marketing & Sales, Content & Social Media, Business & Productivity, Ecommerce, Coding & Automation, Image & Design, Video & Animation, Writing & Research, Education & Career, or Audio & Music
### How It Works
1. Create a new product and select **AI Prompt** as the type
2. Choose the target AI model, pick a category, and write a short teaser
3. Paste the full prompt text — it's stored privately and only revealed after payment
4. Optionally turn on **List on Marketplace** and pick an AI Prompts category to reach new buyers
[Full documentation](/products-and-pricing/ai-prompts)
## PayRequest Page Visitor Analytics, Plan Rename, and Business Plan by Request
See how many people visit your PayRequest Page every day with a new **Analytics** tab. Alongside it, the self-billing plan is now clearly named **Premium**, and the **Business** plan moves to a request-only model instead of self-serve checkout.
### What's New
* **Visitor analytics** — a new **Analytics** tab on your PayRequest Page shows a daily chart of unique visitors over the last 16 days, plus a total for the period
* **Privacy-friendly counting** — visits are deduplicated per day using a hashed IP + browser combination; raw IP addresses are never stored, and your own visits while logged in don't count
* **Premium plan feature** — visitor analytics is included with Premium and Business; Free plan accounts see the chart blurred with an **Upgrade to Premium** button
* **Premium plan naming finalized** — the €5/month self-billing plan (previously internally referred to as "Freelancer") is now consistently labeled **Premium** everywhere, including a clearer Free-vs-Premium-vs-Business comparison on the billing page
* **Business plan is now request-only** — the €20/month Business plan (subscriptions, online shop, order management) is no longer a self-serve checkout; existing subscribers are unaffected, and new customers request access via [support@payrequest.io](mailto:support@payrequest.io)
### How It Works
1. Go to **PayRequest Page → Analytics** to see your visitor chart
2. Go to **Settings → PayRequest Plan** to compare Free, Premium, and Business and manage your subscription
3. Need Business features? Email [support@payrequest.io](mailto:support@payrequest.io) to request access
[Full documentation](/analytics-and-reporting/payrequest-page-visitors) · [Plan comparison](/business-settings/payrequest-plans)
## README Badge — Link Back to Your PayRequest Page from Anywhere
A copy-paste badge for your GitHub README, website, or bio that links straight to your PayRequest Page — plus a faster way to switch between Products, Amounts, and Donation mode.
### What's New
* **README badge** — a new card on the **PayRequest Page → Overview** tab gives you a ready-made Markdown snippet, already filled in with your handle and link
* **Live on Donation Mode** — if your page is running a donation goal, the badge automatically shows the current amount raised, no manual updates needed
* **Works anywhere Markdown or images do** — GitHub, GitLab, npm package READMEs, blogs, or plain websites
* **Page Mode quick-toggle** — switch your page between **Products & services**, **Amount buttons**, and **Donation mode** with one click from the Overview tab sidebar, without opening Settings
* **Cleaner Overview tab** — the products list section now only shows when your page is actually in Products mode
### How It Works
1. Go to **PayRequest Page → Overview**
2. Find the **README badge** card in the sidebar and copy the snippet
3. Paste it into your GitHub README (or anywhere else that renders Markdown or images)
4. Optionally switch to **Donation mode** first from the **Page Mode** card so the badge shows your live fundraising total
[Full documentation](/shop-and-checkout/readme-badge)
## PayRequest Upload — Drop a File, Get a Payment Link
A new, WeTransfer-style way to sell a single file: drop it in, set a price, and share the link — no product wizard, no shop setup. Open to everyone at [payrequest.me/upload](https://payrequest.me/upload); you only need a PayRequest account at the very last step.
### What's New
* **One-page upload flow** — drag and drop almost any file type (documents, audio, video, images, archives, fonts, 3D models) up to 250MB
* **Auto-filled details** — the title is pre-filled from your filename and the file's category is detected automatically, both editable before you publish
* **Pay to Unlock, built in** — for photos and audio tracks, a one-click toggle sells the file behind a free preview instead of an instant download
* **Sign in without losing your upload** — clicking Generate Payment Link while signed out prompts you to sign in or register on the main app; once done, you're brought straight back to finish publishing
* **Zero setup** — creates a normal product and a Smart Link automatically, and provisions a PayRequest Page handle if your account doesn't have one yet, so the link works immediately
### How It Works
1. Go to **payrequest.me/upload** and drop your file
2. Confirm the auto-filled title and set a price
3. Optionally turn on Pay to Unlock for photos or audio
4. Click **Generate Payment Link** — sign in first if prompted
5. Share your new link: `payrequest.me/[handle]/[filename]`
[Full documentation](/products-and-pricing/quick-upload)
## Pay to Unlock (Audio) — Sell Tracks Behind a Free Preview
The **Pay to Unlock** product type now supports audio, not just photos. Upload a full track and PayRequest automatically generates a short, free preview clip — customers listen before they buy, then unlock the full track after payment.
### What's New
* **New product type: Pay to Unlock (Audio)** — create it from **Products → New Product** alongside the existing photo Pay to Unlock type
* **Automatic preview clips** — upload the full MP3, WAV, or FLAC track; a short public preview (5–60 seconds, default 25s, with a fade-out) is generated on our servers and never contains more than that clip
* **Configurable preview length** — adjust the **Free preview length** slider any time; the preview regenerates automatically, even without re-uploading the track
* **Full track and preview length shown to customers** — product and checkout pages display both, e.g. "0:15 free preview of the 0:27 track"
* **Separate cover art** — upload album/cover artwork independently of the track itself
* **Same secure delivery as Digital Products** — the full track is delivered via a download token immediately after payment, with the same download limit and link expiry settings
### How It Works
1. Go to **Products → New Product** and select **Pay to Unlock (Audio)**
2. Upload the full track and set the free preview length
3. Optionally add cover art and a description
4. Publish — customers can listen to the free preview and pay to unlock the full track
[Full documentation](/products-and-pricing/pay-to-unlock)
## Commissions — Sell Custom-Scoped Creative & Freelance Work
A new **Commission** product type for work where the final price depends on scope — illustrations, tattoo designs, custom development, and other bespoke work. List it with a starting price, and PayRequest handles the rest: a distinct storefront badge, a capped platform fee, and an optional turnaround note.
### What's New
* **New product type: Commission** — create it from **Products → New Product** just like any other product
* **"From €X" pricing** — the price you set is shown to customers as a starting price, not a fixed one, since final cost can vary once you scope the request
* **Pink "Commission" badge** — automatically shown on your PayRequest Page storefront so commissions stand out from regular products
* **Typical turnaround field** — optional note (e.g. "5-7 business days") shown under the price
* **Capped platform fee** — commission purchases use a flat 2% fee capped at €25, regardless of your plan, instead of the normal plan-based fee
### How It Works
1. Go to **Products → New Product** and select **Commission** as the type
2. Set your **Starting Price**, add a description and sample image
3. Optionally add a **Typical turnaround** on the Commission Details step
4. Publish — it appears on your PayRequest Page with the Commission badge and "From €X" pricing
5. Once purchased, follow up with the customer to scope the work; invoice separately for anything beyond the starting price
[Full documentation](/products-and-pricing/commissions)
## Product Carousel — New Layout for Your Services & Products
Your PayRequest Page's product showcase now has two display modes. Switch between a horizontal **Carousel** (always open, swipeable cards with a storefront feel) and the classic collapsible **Grid** — all from a single toggle in the Settings tab.
### What's New
* **Carousel layout** — horizontal scrollable row with external prev/next controls, fade edges, and large product image cards; always visible without an accordion
* **Grid layout** — unchanged classic 3-column collapsible grid; remains the default for all existing pages
* **Product layout picker** — Grid / Carousel segment control in **PayRequest Page → Settings → Products**
### How It Works
1. Go to **PayRequest Page → Settings**
2. Scroll to **Products** and find the **Product layout** picker
3. Select **Carousel** or **Grid**
4. Click **Save Settings** — your public page updates immediately
[Full documentation](/shop-and-checkout/product-display)
## Invoice Bundle — Pay All Open Invoices with One Link
Send a customer a single payment link that covers all their outstanding invoices. Instead of chasing each invoice separately, bundle them all into one Smart Link and let the customer settle everything in a single Mollie checkout.
### What's New
* **New Smart Link type: Invoice Bundle** — select a customer and tick the invoices to include; the total is calculated automatically
* **Branded payment page** — lists all invoices with numbers, amounts, due dates, and an "Overdue" badge where applicable, then a single **Pay** button for the combined total
* **Auto-mark paid** — when the Mollie payment succeeds, all bundled invoices are instantly marked paid and linked to the payment ID
* **Email & SMS delivery** — send the link to the customer on creation, with a rich email showing the full invoice breakdown and total
* **Re-send from edit** — update the invoice selection and re-send the link at any time from the smart link edit page
### How It Works
1. Go to **Payment Page → Smart Links** and click **Create Smart Link**
2. Choose **Invoice Bundle** as the link type
3. Select the customer — all their open, sent, and overdue invoices appear as checkboxes
4. Tick the invoices to include; the total updates in real time
5. Add an optional description (e.g., "Your hosting has been suspended — please pay below")
6. Choose **Email** and/or **SMS** delivery and click **Create**
7. The customer receives the link, pays once, and all invoices are marked paid automatically
[Full documentation](/payment-processing/smart-links#creating-a-smart-link)
## Apple Wallet Card for Your PayRequest Page
Carry your PayRequest Page as a card in Apple Wallet. Show it to a customer, they scan the QR code, and they land straight on your page to pay — no need to pull up your QR code separately.
### What's New
* **Add to Apple Wallet** button on your PayRequest Page settings, next to your QR code
* The card shows your business name, handle, and tagline in PayRequest's signature blue
* Built-in QR code scans to the same link as your existing PayRequest Page QR code
### How It Works
1. Go to **PayRequest Page** in the main menu
2. Click **Add to Apple Wallet** next to your QR code
3. Confirm on the Apple Wallet add screen
4. Show the card to customers any time — they scan to pay
[Full documentation](/shop-and-checkout/apple-wallet-card)
## Payment Pages Now Speak 21 Languages
Every Payment Page (`payrequest.me/yourhandle`) now automatically shows in your customer's own language — no translation work required on your end.
### What's New
* **21 languages**: English 🇬🇧, Dutch 🇳🇱, German 🇩🇪, French 🇫🇷, Spanish 🇪🇸, Italian 🇮🇹, Portuguese 🇵🇹, Polish 🇵🇱, Swedish 🇸🇪, Danish 🇩🇰, Norwegian 🇳🇴, Finnish 🇫🇮, Greek 🇬🇷, Czech 🇨🇿, Romanian 🇷🇴, Hungarian 🇭🇺, Turkish 🇹🇷, Russian 🇷🇺, Chinese 🇨🇳, Japanese 🇯🇵, and Ukrainian 🇺🇦
* **Automatic detection** — based on the customer's browser language, falling back to their country (via IP) when needed
* **Manual language switcher** — a flag-icon dropdown in the corner of every Payment Page, with the active language shown first and checked
* **Shareable language links** — e.g. `payrequest.me/yourhandle?lang=it` always opens in Italian
### How It Works
Nothing to configure — it just works on every existing Payment Page. Core checkout fields (name, email, address, totals, payment method, and more) are translated for all 21 languages.
[Full documentation](/payment-processing/payment-forms#multi-language-support)
## 26 Manual Payment Platforms — Asia & LatAm Coverage
The **Other Ways to Pay** feature now covers 26 platforms, adding Mercado Pago, GCash, PayNow, PromptPay, KakaoPay, MoMo, WeChat Pay, and Alipay — plus smarter handle input that auto-corrects common mistakes.
### What's New
* **Mercado Pago** 🌎 — Argentina, Brazil, Mexico, Colombia, and more (alias, phone, or CVU)
* **GCash** 🇵🇭 — Philippines' most popular mobile wallet
* **PayNow** 🇸🇬 — Singapore instant transfers via phone, NRIC, or UEN
* **PromptPay** 🇹🇭 — Thailand's national payment system
* **KakaoPay** 🇰🇷 — South Korea's chat-native payment app
* **MoMo** 🇻🇳 — Vietnam's leading mobile wallet
* **WeChat Pay** 🇨🇳 — China's ubiquitous payment platform
* **Alipay** 🇨🇳 — Accepted by hundreds of millions worldwide
* **Auto-correct on save** — Pasting a full profile URL or adding a stray `@` is fixed automatically for Wise, Revolut, Venmo, bunq.me, and Cash App
* **Binance Pay numeric-only** — The Binance Pay ID field now accepts only digits, preventing entry errors
### How It Works
1. Go to **Settings → Payment Providers → Other Ways to Pay**
2. Find the platform, enter your handle or phone number, and click **Save**
3. Toggle visibility on or off — active platforms appear as buttons on your payment page
[Full documentation](/payment-processing/other-ways-to-pay)
## Payoneer — Global Payments for Creators
Accept payments from customers in 150+ countries by connecting your Payoneer account. Ideal for creators and businesses with audiences in Asia, LatAm, Africa, and the Middle East — markets where Mollie and Stripe have limited reach.
### What's New
* **Payoneer Checkout integration** — A **Pay with Payoneer** button now appears on your payment links when Payoneer is connected
* **API-key onboarding** — Connect in seconds using your Client ID and Client Secret from the Payoneer Developer Portal — no OAuth redirect required
* **150+ currencies** — USD, EUR, GBP, INR, PHP, IDR, NGN, KES, BRL, and many more
* **Sandbox / test mode** — Toggle `PAYONEER_SANDBOX=true` to test without real charges
* **Runs alongside Mollie, Stripe, and PayPal** — All four providers can be active simultaneously; buyers choose at checkout
### How It Works
1. Go to **Settings → Providers** and find the Payoneer card under **Add more payment options**
2. Click **Connect**, enter your Payoneer API credentials, and save
3. The **Pay with Payoneer** button appears on your payment links immediately
[Full documentation](/payment-processing/connect-payoneer)
## Automatic Currency Conversion for PayPal
Fixed a bug where PayPal could charge the wrong amount when your payment page currency differed from your PayPal account's settlement currency.
### What's New
* **Live exchange-rate conversion** — When your PayPal account settles in a different currency than your payment page displays, PayRequest now converts the amount automatically before sending it to PayPal
* **Accurate buyer preview** — The PayPal button shows the converted amount (e.g. "≈ ₱607.50") before checkout, so buyers know exactly what PayPal will charge
* **Conversion audit trail** — Every converted payment records the exchange rate and original/converted amounts on the transaction
[Learn more](/payment-processing/connect-paypal#currency-conversion)
## 25 Social Platforms on Your PayRequest Page
Your PayRequest Page now supports the platforms creators actually use — from Instagram and TikTok to OnlyFans, Twitch, and Discord — each displayed with its official brand icon.
### What's New
* **25 supported platforms** — Instagram, TikTok, Twitter/X, YouTube, Twitch, Discord, Telegram, Snapchat, Spotify, Kick, WhatsApp, Facebook, Reddit, SoundCloud, Substack, Pinterest, LinkedIn, GitHub, Calendly, Patreon, Signal, OnlyFans, plus Email, Phone, and Website
* **Official brand icons everywhere** — Every link on your public page shows the platform's real logo (YouTube now shows the YouTube icon, not a generic play button)
* **Searchable platform picker** — Click **Add More** in the Styling tab and type to filter the list instantly
* **Direct contact links** — Email and phone entries automatically become click-to-email and click-to-call links for your visitors
* **Smart URL handling** — Paste a full URL or just the address; PayRequest formats the link correctly
### How It Works
1. Open **PayRequest Page → Styling** and scroll to the **Social Links** card
2. Fill in the always-visible favorites (Instagram, TikTok, Twitter/X, YouTube, Website)
3. Click **Add More** and search for any other platform
4. Watch the live preview update with each brand icon as you type
[Full documentation](/shop-and-checkout/sales-page-styling#social-links)
## SMS Payment Links for Everyone
Send payment links straight to your customer's phone — now available on every PayRequest account with a fair credit system.
### What's New
* **SMS delivery for all accounts** — Sending smart payment links via SMS no longer requires a paid plan
* **1 free SMS credit** — Every account starts with one credit on the house
* **Earn credits by getting paid** — Every payment you receive adds 1 SMS credit to your balance, automatically
* **Automatic refunds** — If an SMS fails to send, your credit comes right back
* **Clear balance display** — The smart link form shows your remaining credits, and explains how to earn more when you run out
* **Better SMS messages** — Texts now always link to your own branded payment URL and show your business name as sender
### How It Works
1. Create a smart link and select a customer with a phone number
2. Tick **SMS** as the delivery method — the form shows your credit balance
3. Save the link and the SMS is sent instantly
4. Receive any payment and earn a fresh credit
[Full documentation](/payment-processing/sms-payment-links)
## Telegram Payment Bot
Create payment links and receive payment notifications directly in Telegram — no app switching required.
### What's New
* **@payrequestme\_bot** — Connect your PayRequest account with one tap and start creating payment links straight from Telegram
* **Instant payment alerts** — Get a Telegram message the moment a payment lands, with amount, customer name, and invoice number
* **`/pay` command** — Type `/pay 50 for design work` and the bot returns a ready-to-share payment link in seconds
* **`/links` and `/status`** — View your recent payment links and transactions without opening the dashboard
* **Permanent connection** — Link your Telegram account once; notifications and commands work forever until you disconnect
### How to Connect
1. Open **@payrequestme\_bot** in Telegram and tap **Start**
2. Tap the connect link the bot sends you
3. Log in to PayRequest — your account is linked instantly
[Full setup guide](/integrations/telegram-bot)
## Crypto Recurring Payments for Subscriptions
Subscriptions can now be paid with **USDC on Base**. Crypto works as an invoice-based payment method — each billing cycle generates an invoice that the customer pays from their wallet, with 98% going directly to your wallet via the on-chain FeeSplitting contract.
### What's New
* **Crypto as a subscription payment method** — Select **Crypto (USDC)** when creating or editing a subscription, just like you would choose automatic or manual payment
* **Invoice-based recurring billing** — Each billing cycle generates an invoice; customers pay with USDC from their wallet via WalletConnect. No mandate or bank details needed
* **Instant settlement** — Once the customer confirms the transaction, Base settles it in under a second. The invoice is marked paid, and your wallet receives 98% automatically
* **No chargebacks** — USDC payments are irreversible on-chain, even for recurring billing
* **Switch anytime** — Toggle between crypto, automatic (SEPA/card), and manual bank transfer on any subscription, even mid-cycle
* **Works with trials** — Free trials convert normally; the first invoice after trial end can be paid with crypto
### How It Works
1. Enable **Crypto (USDC)** in your Provider Settings (one-time setup)
2. Create or edit a subscription → set payment method to **Crypto (USDC)**
3. On each billing date, PayRequest generates an invoice with a **Pay with Crypto** option
4. Customer opens the invoice, scans the WalletConnect QR code, and confirms the USDC amount
5. 98% goes directly to your wallet; the invoice is marked paid automatically
[Read the full guide](/subscriptions/crypto-recurring-payments) · [Crypto Payments overview](/payment-processing/crypto-payments)
## P2P Payments: Multi-Wallet Support
P2P wallet payments now work with every major Solana wallet — not just Phantom.
### What's New
* **Solflare, Coinbase Wallet, Trust Wallet, Backpack** — all supported for sending P2P USDC
* **MetaMask native Solana** — MetaMask's native Solana support (Wallet Standard) is now detected automatically; existing MetaMask users can send without installing a separate wallet
* **MetaMask Snaps** — Install the Solflare Snap from inside MetaMask (Snaps → Search "Solflare") to add full Solana support in one click
* **Wallet Standard auto-detection** — Any wallet implementing the [Solana Wallet Standard](https://github.com/wallet-standard/wallet-standard) is discovered and usable automatically
* **Simplified UX** — P2P section no longer has its own amount/note fields; it reads from the main payment form so there's no duplication
* **Separate wallet storage** — Your Solana P2P wallet and Base USDC wallet are now stored separately in Provider Settings so connecting one never affects the other
[P2P Wallet Payments guide](/payment-processing/p2p-wallet-payments)
## Crypto Page Themes + P2P Wallet Payments
Two new Web3-native features for your `payrequest.me` page.
### What's New
* **Crypto Page Themes** — Choose a visual theme in **PayRequest Page → Styling → Page Theme**. Two options: **Solana** (deep dark bg with purple-to-green radial glow and glowing card border) and **Crypto Native** (animated gradient mesh background with a glassmorphism frosted-glass card). Themes work alongside your existing accent color — they control the background and card style while your accent color still applies to buttons and highlights.
* **P2P Wallet Payments** — Any Phantom user can now send USDC directly to your Solana wallet from your `payrequest.me` page. Connect your Solana wallet in Settings and a **"Send USDC directly"** panel appears on your page automatically. No invoice, no checkout form, no platform fee — 100% of the USDC goes to your wallet. Transfers are tracked in your Wallet Dashboard with Solscan links.
### How It Works — P2P Payments
1. Connect your Solana wallet in **Settings → Wallet**
2. A visitor opens your `payrequest.me/{handle}` page
3. They enter an amount and click **Connect Phantom to send**
4. They confirm the transfer in Phantom — USDC arrives in your wallet in under a second
[Crypto Page Themes guide](/shop-and-checkout/crypto-page-themes) · [P2P Wallet Payments guide](/payment-processing/p2p-wallet-payments)
## Crypto Wallet Balance + Atomic On-Chain Fee Split
Two improvements to the USDC payment system on Base.
### What's New
* **Wallet balance in settings** — Your USDC and ETH balances on Base are now shown directly in **Provider Settings → Crypto (USDC)**. No need to open your wallet app to check your balance. Cached for 5 minutes with a one-click Refresh button.
* **ETH gas balance** — Alongside the USDC balance, your ETH balance is displayed so you always know you have enough gas for transactions.
* **Atomic FeeSplitting contract** — Payments are now split on-chain in a single transaction: 98% goes directly to your wallet, 2% to PayRequest — atomically, with no intermediate escrow or treasury step. The contract is immutable with no admin keys.
* **New supported wallets guide** — A dedicated [Supported Wallets](/payment-processing/crypto-supported-wallets) page covering MetaMask, Coinbase Wallet, Rabby, Rainbow, Trust Wallet, Kraken Wallet, and more — with setup instructions and troubleshooting tips.
[Read the Crypto Payments guide](/payment-processing/crypto-payments) · [Supported Wallets](/payment-processing/crypto-supported-wallets)
## One-Click Payment Method Toggles for Stripe
Turning on a Stripe payment method like **MobilePay**, **Klarna**, or **iDEAL** now actually shows it to buyers — in one click. Previously, enabling a method inside PayRequest only told Stripe "my account wants this method", but a separate buyer-visibility switch inside Stripe stayed off, so customers never saw the new tile at checkout. We now flip both switches together.
### What's New
* **One-click enable** — Click **Enable** on a method in **Provider Settings → Stripe → Payment Methods** and the tile shows up on your next checkout. No more hunting through Stripe Dashboard settings.
* **"Hidden at checkout" badge** — If a method is enabled on your account but Stripe says it's not currently visible to buyers (wrong currency, wrong buyer country, or pending verification), an amber **Hidden at checkout** badge appears next to it. So you know exactly why a method isn't appearing on a test page.
* **Bonus fix** — Smart Link donation pages and amount links now show Stripe (and PayPal) when those are the only providers connected. Previously they fell back to a "no payment provider connected" message even when Stripe was wired up.
[Read the Stripe payment-method guide](/payment-processing/connect-stripe#choosing-which-payment-methods-show)
## Donation Mode + Default Payment Gateway
Two big additions to your PayRequest Page and payment setup. Run a **donation goal** with a live progress bar and a public donor feed — perfect for community servers, creator support, or recurring cost crowdfunding. And tidy up multi-provider setups by picking a **default payment gateway** for your account.
### What's New — Donation Mode
* **Third display mode** on the PayRequest Page, alongside Products & services and Amount buttons — switch any time from **PayRequest Page → What to show on your page**
* **Goal amount** with two reset cycles: **Monthly** (auto-resets on the 1st) or **One-time** (runs until you change it)
* **Live progress bar** showing total raised vs. goal, with percentage funded and "€X to go" status
* **Public donor feed** with name, amount, and relative time ("3 hours ago"); 1–50 donors visible, default 10
* **Goal-reached banner** kicks in at 100% — donations keep accepting so supporters can overshoot
* **Pay any amount** — donors enter custom amounts or pick from optional preset buttons (€1, €5, €10…)
* **Permanent URL** at `payrequest.me/` — share once, never expires, the goal resets on its own
* **Refund-safe totals** — the progress bar reads from paid invoices, so refunds and chargebacks roll back automatically
### What's New — Default Payment Gateway
* **New "Set as default" button** on each active provider card in **Provider Settings**
* **Blue Default badge** on the active gateway so it's clear at a glance
* Only one provider can be default at a time — assigning a new one demotes the previous default automatically
* Inactive providers can't be marked as default — you must activate first
* Doesn't disable other providers — customers can still pay through any active gateway
### How It Works (Donation Mode)
1. Open **PayRequest Page** from the dashboard
2. Under **What to show on your page**, click the **Donation goal** tab
3. Set your goal amount (e.g. `10.00`) and reset period
4. Toggle the donor feed on and pick a count
5. Optionally add suggested amount buttons
6. Click **Save Settings** — your live page is ready to share
[Read the Donation Mode guide](/shop-and-checkout/donation-mode) · [Default gateway setup](/payment-processing/setting-up-payment-providers#setting-a-default-gateway)
## Embed Smart Link Payment Buttons on Any Website
Every Smart Link now ships with a ready-to-paste **payment button snippet**. Copy the HTML, paste it on your website, blog, WordPress page, or email signature, and customers can pay directly from there — your Smart Link analytics keep tracking views, payments, and conversion rate exactly as before.
### What's New
* **Three button styles** — Blue (default), Dark, and Outline — each chosen to fit different site designs out of the box
* **Live preview** — See exactly how each style looks with your Smart Link's label before copying
* **One-click copy** — Click **Copy snippet** to put the full HTML on your clipboard, ready to paste
* **Works everywhere** — WordPress Custom HTML blocks, Squarespace, Wix, Webflow, plain HTML, even email signatures — anywhere a hyperlink can be pasted
* **Editable label** — The button text defaults to the Smart Link amount or name, but you can rewrite it freely after pasting (e.g. "Donate", "Buy now", or in any language)
* **Optional secure-lock modifier** — Add `pr-btn--secure` to prefix the button with a small lock icon for an extra trust signal
* **Centralised styling** — The button stylesheet is hosted by PayRequest, so design refreshes appear automatically across every embed
### How It Works
1. Open **Payment Page → Smart Links** and click the link you want to embed
2. Click **Share** at the top right
3. Scroll to **Embed button on your website** in the share dialog
4. Pick **Blue**, **Dark**, or **Outline** — the snippet preview updates instantly
5. Click **Copy snippet** and paste it into a Custom HTML block on your site
[Read the full guide](/payment-processing/smart-links#embed-button-on-your-website)
## Brand Your PayRequest Page with a Custom Accent Color
The PayRequest Page Styling tab now has an **Accent Color** picker. Choose a brand color and it's applied to your "Pay" button, avatar border, and other primary highlights on your public PayRequest Page — so visitors see *your* color, not the default blue.
### What's New
* **Three ways to pick a color** — A 10-color curated swatch palette, your OS-native color picker for any custom shade, or a hex input for exact brand matching
* **Live preview** — The preview avatar border and sample Pay button update instantly as you change the color, before you save
* **Applied across the live page** — The chosen color flows into the main Pay button, the avatar border, the selected-product ring, and other primary call-to-action elements
* **Clear to default** — Reset back to the standard blue accent in one click
* **Per-page setting** — Stored on your PayRequest Page, ready to extend per-business in the future
### How It Works
1. Open **PayRequest Page** from the dashboard and click the **Styling** tab
2. Find the **Accent Color** card under Tagline & Bio
3. Click a swatch, use the native color picker, or paste a hex value (e.g. `#f59e0b`)
4. Watch the preview avatar and sample Pay button update instantly
5. Click **Save Styling** — your live PayRequest Page picks up the new color on the next visit
[Read the full guide](/shop-and-checkout/sales-page-styling#accent-color)
## Stripe and PayPal — Now Available Alongside Mollie
PayRequest now supports **Stripe** and **PayPal** as payment providers in addition to Mollie. Connect any combination of the three, and your customers will see whichever methods you've enabled. This release covers payment links — invoices and subscriptions still run through Mollie for now, with broader Stripe and PayPal support coming in upcoming releases.
### What's New
* **Connect Stripe in one click** — A new Stripe card on Provider Settings runs the full Stripe Connect flow. Cards, Apple Pay, Google Pay, Klarna, iDEAL, Bancontact, and many more methods drop in automatically based on the buyer's location.
* **Connect PayPal in one click** — A new PayPal card on Provider Settings runs PayPal's Partner onboarding. Adds the familiar PayPal button, plus Pay Later for higher-ticket orders and Venmo for US mobile buyers.
* **Adaptive Pricing for Stripe** — Buyers see prices in their own local currency in 150+ countries. The 2–4% conversion fee is paid by the buyer, not you. Toggle on or off per merchant from Provider Settings.
* **Embedded checkout** — Both providers render directly on your payment page. No redirect to a third-party site; buyers stay in your branded flow start to finish.
* **Login with PayPal** — New merchants can sign up to PayRequest by authenticating with PayPal, which automatically chains a PayPal Connect step so their account is ready to take payments by the end of signup.
* **Smart payment-method labels** — On Stripe checkouts, the pay button updates to show the chosen method ("Pay with iDEAL", "Pay with Apple Pay") so buyers always know what they're confirming.
* **Multi-provider transaction view** — The transactions table now shows the source provider on each row, with deep-links to the right detail page for Mollie, Stripe, or PayPal.
### How It Works
1. Open `/provider-settings` from your dashboard
2. Click **Connect** on the Stripe or PayPal card (or both)
3. Authorize on the provider's onboarding page and return to PayRequest
4. Share a payment link — your customers see the new options automatically
[Read the full guide](/payment-processing/setting-up-payment-providers)
## File Attachments on Support Requests
Replies on support tickets can now carry file attachments — screenshots, PDFs, signed documents, anything that helps resolve an issue. Attachments show up inline in the conversation on both sides, and are sent along as real attachments in the reply email so customers never have to open the portal to get them.
### What's New
* **Drag-and-drop upload** — A new Attachments dropzone below the reply editor accepts files via drop or file picker
* **Admin and customer uploads** — Both the dashboard reply form and the customer portal reply form support attachments
* **Up to 10 files per reply, 20 MB each** — Any file type (images, PDFs, spreadsheets, ZIPs, etc.)
* **Inline conversation display** — Images render as previews, other files appear as download cards with filename and size
* **Real email attachments** — When you send a reply notification, the files are attached to the email itself, not just linked
* **Ticket-scoped access** — Downloads are served through an authorized endpoint that checks ticket ownership, with unguessable file identifiers
* **Automatic cleanup** — Attachments are tied to their reply; removing the reply removes the files
### How It Works
1. Open a support request and scroll to the reply form
2. Drop files onto the **Attachments** dropzone or click to browse
3. Remove any queued file before sending by clicking its remove icon
4. Send the reply — attachments appear in the conversation history and, if email notification is enabled, arrive in the customer's inbox as real attachments
5. Customers see the same dropzone in the portal when replying, and downloaded files from your replies through a secure link
[Read the full documentation](/customer-management/support-requests#-file-attachments)
## Email-to-Ticket: Inbound Email Support
Customers can now create support tickets by **replying to any email** they receive from your business — invoices, payment reminders, order confirmations, and more. Business owners are notified instantly and can reply directly from email for a seamless two-way conversation.
### What's New
* **Reply-To on all outgoing emails** — Every invoice, order, reminder, and notification email now includes a Reply-To address at your business's `payreque.st` address
* **Automatic ticket creation** — Customer replies are parsed and converted into support tickets with full message body
* **Smart customer matching** — Matches sender by exact email or company domain (e.g., `jan@acme.com` matches existing customer `support@acme.com`)
* **Spam protection** — Emails from unknown senders (not matching any customer) are automatically rejected
* **Two-way email conversations** — Business owners can reply to ticket notification emails, which appends to the conversation and notifies the customer
* **New ticket notifications** — Business owners receive an email when a new ticket is created (both from portal and inbound email)
* **Freelancer support** — Works for businesses with shops and freelancers with PayRequest Pages alike
* **Attachment references** — Email attachments are tracked in ticket metadata for future retrieval
### How It Works
1. Customer receives an invoice, reminder, or any other email from your business
2. Customer replies to the email with their question or concern
3. A support ticket is automatically created and you receive a notification
4. Reply to the notification email or open the ticket in your dashboard
5. Your reply is sent to the customer — they can reply back to continue the conversation
[Read the full documentation](/customer-management/support-requests#-email-to-ticket-inbound-email)
## Archive Subscriptions
A new **Archived** status lets you permanently shelve subscriptions you no longer need — customers who switched plans, former clients, completed projects, discontinued products — while keeping all invoices and transaction history intact.
### What's New
* **Archive button on canceled subscriptions** — Open any canceled subscription and click **Archive Subscription** to move it out of your active list
* **Confirmation modal** — Clear explanation of what archiving does before you confirm
* **Dedicated Archived tab** — The subscription list includes an Archived tab with count badge
* **Hidden from customer portal** — Archived subscriptions are invisible to customers
* **Billing & MRR excluded** — No more accidental billing, not counted in revenue calculations
* **Reactivation support** — Bring back any archived subscription if a customer returns
* **Bulk action protection** — Archived subscriptions cannot be resumed or canceled via bulk actions
* **All data preserved** — Invoices, transactions, tags, and notes remain accessible on the detail page
### How It Works
1. **Cancel** the subscription (if still active)
2. Click **Archive Subscription** on the canceled subscription's detail page
3. Confirm in the modal — the subscription moves to the **Archived** tab
4. Customer no longer sees it, billing stops, your list stays clean
5. Need it back? Click **Reactivate Subscription** any time
[Read the full documentation](/subscriptions/archiving-subscriptions)
## Chargeback Details on Invoice Page
Invoice detail pages now show chargeback information and payment retry status directly in the sidebar, eliminating the need to navigate to the subscription page to understand a failed payment.
### What's New
* **Chargeback status badge** — Invoices with chargebacks display a red "Chargeback" badge instead of "Paid"
* **Chargeback details card** — Shows amount, date, SEPA reason code, and chargeback ID on the invoice sidebar
* **Payment retry status** — Failed attempts, last failure date, next retry schedule, and full retry history visible on the invoice
* **Status protection** — Chargeback status can no longer be accidentally overwritten back to "Paid" by webhooks or payment syncs
* **Direct subscription link** — Quick navigation to the associated subscription from the chargeback card
### How It Works
1. When a chargeback is received, the invoice status automatically changes to **Chargeback**
2. Open the invoice to see the **Chargeback Details** card in the sidebar
3. If linked to a subscription, the card also shows **Payment Retry Status** with attempt history
4. Click **View Subscription** to manage retry settings or take further action
[Read the full documentation](/payment-processing/handling-chargebacks)
## Bulk Subscription Price Adjustments
Apply inflation adjustments and price increases to multiple subscriptions at once. The enhanced bulk pricing wizard supports multiple increase methods, smart rounding, scheduling, MRR impact previews, and legally compliant customer notifications.
### What's New
* **Three increase methods** — Choose between percentage-based increase (+X%), fixed amount (+EUR X), or setting a specific new price for all selected subscriptions.
* **Smart rounding** — Round results to the nearest EUR 0.50, EUR 1.00, or EUR 5.00 with options for round up, round down, or nearest.
* **Price cap** — Set a maximum price to prevent subscriptions from exceeding a limit after the increase.
* **Flexible scheduling** — Apply immediately, on a specific future date, or at each subscription's individual next renewal date.
* **MRR impact preview** — See the total revenue impact before executing, with current MRR, new MRR, increase amount, and percentage change.
* **Per-subscription preview table** — Review each subscription's old price, new price, and difference in a scrollable table.
* **Customer notification emails** — Automatically send price increase emails with old/new price, effective date, and cancellation link.
* **Dutch law compliance** — Built-in 30-day notice validation, cancellation right inclusion, and ACM-compliant email templates.
* **Enhanced audit trail** — Full price change details (old/new amounts per subscription) stored in bulk action history.
### How It Works
1. Go to **Bulk Actions > Subscriptions > Apply Inflation Adjustment**
2. Configure the increase method, rounding, scheduling, and notification preferences
3. Review the MRR impact preview and per-subscription price changes
4. Confirm and execute — scheduled changes are applied automatically before billing
[Read the full documentation](/subscriptions/price-adjustments)
## Support Request Improvements
Enhanced the support request system with smarter subscription linking, admin approval actions for cancellation requests, and detailed subscription popovers.
### What's New
* **Required subscription selection** — When creating a "Cancel Subscription" or "Pause Subscription" request, the subscription field is now required and auto-selected. The dropdown shows subscription names with amounts and status.
* **Subscription hover popover** — On the admin request detail page, hovering over a linked subscription shows a detailed card with name, status, amount, billing interval, next billing date, and cancellation details.
* **Approve & Reject actions** — Cancel subscription requests now show dedicated "Approve & Cancel" and "Reject & Keep Active" buttons for one-click decisions.
* **Support page layout fix** — Fixed a layout issue on the customer portal support requests page where the heading and table were displayed side-by-side instead of stacked.
* **Cancellation constraint fix** — Fixed a database constraint that prevented cancel subscription requests from being created.
[Read the support requests documentation](/customer-management/support-requests)
## Subscription Cancellation Requests
Subscription cancellations now go through a structured request process with configurable notice periods, reason collection, and automatic domain management. Customers submit a cancellation request from the portal, and the subscription stays active until the notice period ends.
### What's New
* **Cancellation request flow** — Customers select a reason and submit a request instead of instantly canceling. A support ticket is automatically created for admin review.
* **Configurable notice period** — Set a notice period per product (default 30 days). The effective date is the later of the notice period end or the next billing date.
* **Automatic domain management** — Linked domain auto-renewals are automatically disabled when a cancellation is requested.
* **Admin controls** — Withdraw cancellation requests or cancel immediately from the subscription detail page.
* **Separate pause and cancel toggles** — Per-product settings to independently enable or disable pause and cancel actions in the customer portal.
* **Cancellation mode choice** — Choose between "Request" mode (notice period + support ticket) or "Immediate" mode (instant cancel) per product.
* **Automatic processing** — A daily scheduled job cancels subscriptions that have passed their effective cancellation date.
### How It Works
1. Customer clicks **Cancel Subscription** in the portal and selects a reason
2. A support request is created and the notice period begins
3. The subscription stays active until the effective date
4. Admin can review, communicate, withdraw, or cancel immediately
5. After the notice period, the subscription is automatically canceled
[Read the full documentation](/subscriptions/cancellation-requests)
## Digital Product File Delivery
Sell digital files like PDFs, ebooks, and guides with automatic secure delivery. Upload a file to any digital product and customers receive unique download links immediately after payment.
### What's New
* **File upload on products** — Upload PDF, ZIP, or EPUB files (up to 50MB) when creating or editing a digital product
* **Automatic delivery** — Customers receive secure, unique download links on the success page, in their order email, and in the customer portal
* **Download limits** — Configure how many times a customer can download (1-100, default: 5) and how long the link stays active (1-365 days, default: 30)
* **Download tracking** — See per-product and per-order download statistics including total downloads, active tokens, and exhausted tokens
* **Payment page preview** — Digital products show an "Includes digital file" card on the payment page so customers know what they're getting
* **Multi-domain support** — Download links work across all domains including payrequest.me, custom domains, and the dashboard
* **Customer portal access** — Customers can re-download files from their order history with remaining download count and expiry info
### How It Works
1. Create a product with type **Digital** and upload your file
2. Configure **Max Downloads** and **Link Expiry** in the download settings
3. Customer purchases the product and pays via Mollie
4. A unique download token is created with your configured limits
5. Customer downloads from the success page, email link, or customer portal
[Read the full documentation](/products-and-pricing/digital-products)
## Consolidated Invoicing
Customers with multiple subscriptions can now receive a single combined invoice instead of separate invoices for each subscription. This reduces email noise and saves on transaction costs (up to €0.29 per consolidated charge with Mollie SEPA Direct Debit).
### What's New
* **Global toggle** — Enable consolidated invoicing in **Settings** > **Consolidated Invoicing** with configurable frequency (monthly, bi-weekly, weekly) and anchor day slider
* **Per-customer opt-in** — Enable consolidation individually per customer with optional frequency and anchor day overrides
* **Automatic bundling** — Subscription charges are collected as pending items, then bundled into a single invoice on the anchor day
* **Consolidated badge** — Invoices created by consolidation show an indigo **Consolidated** badge and can be filtered in the invoice list
* **Grouped line items** — Consolidated invoice detail view groups charges by subscription
* **Smart cancellation** — Pending items are automatically voided when a subscription is canceled
* **Multi-currency support** — Customers with subscriptions in different currencies receive separate consolidated invoices per currency
* **Automatic scheduling** — Invoices are generated automatically on the configured anchor day
### How It Works
1. Enable **Consolidated Invoicing** in Settings and choose frequency + anchor day
2. Opt in customers via the **Invoice Consolidation** section in the customer edit form
3. Subscription billing creates pending items instead of individual invoices
4. On the anchor day, all pending items are bundled into one invoice per customer
5. Payment is collected automatically (mandate) or an invoice email is sent (bank transfer)
[Read the full documentation](/invoices/consolidated-invoicing)
## Pause/Resume, Partial Payments & Pre-Incasso
Debt collection cases now support pausing, manual payment registration, balance waivers, and a new pre-collection stage — giving you full control over the recovery process.
### What's New
* **Pause & Resume** — Temporarily suspend automated escalation while negotiating with customers. Paused cases show a purple badge and banner, and the customer portal shows "Case On Hold"
* **Register Payments** — Record bank transfers, cash, or other payments received outside PayRequest. The amount breakdown updates in real-time and the case auto-closes when fully paid
* **Waive Balance (Kwijtschelding)** — Write off the remaining balance after partial payments for settlements. Waived amounts are tracked separately in the payment history
* **Pre-Incasso (Stage 0)** — New optional first stage with gentle, informal reminder language. Auto-escalates to Stage 1 after 14 days. Toggle when creating a case
* **Unified Activity Timeline** — All actions (emails, letters, payments, stage changes, notes) shown in a single timeline on the case sidebar
* **Payment History Table** — Full log of every payment registered, with date, amount, method, and notes
* **Paused filter** — Filter the debt collection overview by paused status
* **Customer portal updates** — Paused banner, stage 0 soft language, and partial payment breakdown visible to customers
### How It Works
1. Create a case with optional **Pre-Incasso** toggle for a soft start
2. **Pause** the case from the Actions sidebar when negotiating
3. **Register payments** as they come in via bank transfer or cash
4. **Waive remaining** balance when you've agreed on a settlement
5. Case auto-closes when the full balance is covered
[Read the full documentation](/debt-collection/managing-cases)
## Email Bounce Suppression & Delivery Tracking
PayRequest now automatically detects email bounces and spam complaints, suppresses future emails to problematic addresses, and confirms delivery of invoice reminders. No more silently sending emails to dead addresses.
### What's New
* **Automatic email suppression** — Bounced and complained emails are blocked until you clear the suppression or update the email address
* **Bounce warning on customer profiles** — Red callout with bounce type, SMTP error, and a **Clear Suppression** button
* **Email Issue History** — Full chronological log of bounces, complaints, and failures in the customer's Logs tab
* **Customer list filter** — New **Email Issues** filter and red **Bounced** badge on affected customer cards
* **Delivery confirmation** — Invoice reminders show a green **Email Delivered** event in the timeline when Resend confirms receipt
* **Auto-resolve transient failures** — Temporary delivery failures clear automatically when the next email delivers
* **Smart email change** — Updating a customer's email automatically clears suppressions and removes bounce tags
* **16 email channels protected** — Every customer-facing email (reminders, confirmations, debt collection, smart links, deposits) checks suppression before sending
* **MCP integration** — The `send-invoice-reminder` tool returns a clear error when the customer email is suppressed
### How It Works
1. Resend reports a bounce or complaint via webhook
2. PayRequest records the issue and blocks future emails to that address
3. A red warning appears on the customer profile with full details
4. Fix the email or click **Clear Suppression** to resume delivery
[Read the full documentation](/customer-management/customer-health)
## Contact Persons
Customers and business owners can now add **Contact Persons** — additional people from the customer's organization who receive email notification copies (CC). Perfect for bookkeepers who need invoice copies, managers who want payment updates, or technical contacts for subscription changes.
### What's New
* **Contact Persons page** in the customer portal sidebar with add, edit, and delete
* **Role labels** — General, Billing, Bookkeeping, Technical, Management, or Support
* **Two notification categories** — Billing emails (invoices, payments, reminders) and Account emails (subscriptions, orders)
* **Admin management** — Add and manage contact persons from the customer detail page in the dashboard
* **Automatic CC** — Contact persons are automatically CC'd on matching email types
* **Up to 10 contacts** per customer with duplicate email prevention
### How It Works
1. Customer navigates to **Contact Persons** in the portal sidebar
2. Adds a contact person with name, email, role, and notification preferences
3. Future emails matching their selected categories are automatically CC'd to them
[Read the full documentation](/customer-management/contact-persons)
## Subscription Suspension
A new **Suspended** status for subscriptions lets you halt service for non-paying customers while tracking the state in PayRequest and automatically reactivating when they pay.
### What's New
* **Suspend button** on subscription detail page with optional reason field
* **Orange "Suspended" badge** — distinct from blue "Paused" to differentiate admin-initiated holds from voluntary pauses
* **Customer email notification** sent automatically when a subscription is suspended
* **Auto-reactivation** when the overdue invoice is paid via Mollie webhook — no manual follow-up needed
* **Manual unsuspend** button for admin to reactivate at any time
* **Suspended tab** in the subscription table with count badge
* **Insights dashboard** Action Required section now shows suspended subscription count
* **Customizable email template** under Settings > Email Templates > Subscription Suspended
* **Full activity log** tracking for suspend, unsuspend, and auto-reactivation events
### How It Works
1. Customer has overdue invoices and isn't paying
2. Admin clicks **Suspend Subscription** and enters an optional reason
3. Status changes to Suspended, customer receives email
4. When customer pays the overdue invoice, subscription auto-reactivates
[Read the full documentation](/subscriptions/suspending-subscriptions)
## Debt Collection & Payment Recovery
A complete debt collection system to help you recover unpaid invoices professionally. From friendly reminders to formal notices and physical letters — manage the entire recovery process from your dashboard.
### 📋 Collection Cases
Create and manage collection cases for overdue invoices:
* **Case Management**: Track every collection case with unique case numbers
* **From Invoices**: Open a case directly from any overdue invoice
* **External Debts**: Create cases for debts outside your invoicing system (auto-creates invoice)
* **Customer Portal**: Customers can view their case, see what they owe, and pay directly
* **Activity Tracking**: Full audit trail of every action, reminder, and payment
### 🔄 4-Stage Escalation Pipeline
Gradually increase urgency with a structured escalation process:
| Stage | Name | What Happens |
| - | - | - |
| 1 | Friendly Reminder | Polite notice, assumes oversight |
| 2 | Formal Notice | Professional letter with payment deadline |
| 3 | Collection Fees | Fees added to the outstanding balance |
| 4 | Final Warning | Last chance before further consequences |
* **Automatic Escalation**: Cases progress through stages automatically based on days overdue
* **Manual Control**: Escalate or send reminders at any time
* **Per-Case Language**: Set Dutch or English per case for accurate communication
### 💶 Payment Plans (Installments)
Let customers pay in monthly installments when they can't afford the full amount:
* **Flexible Terms**: 2, 3, 6, or 12 monthly installments
* **Automatic Billing**: Uses PayRequest's subscription system for automatic monthly charges
* **Progress Tracking**: Visual progress bar showing installments completed
* **Auto-Close**: Cases automatically close when all installments are paid
* **Customer Requests**: Customers can request a payment plan from the portal (toggle per case)
### ✉️ Postal Letters via Pingen
Send physical collection letters for formal notices:
* **Professional Layout**: A4 business letters with your company details
* **Stage-Appropriate Content**: Letter text matches the current collection stage
* **QR Code Payment**: Each letter includes a QR code for quick mobile payment
* **Automatic Sending**: Letters sent automatically during escalation (Stage 2+)
* **Delivery Tracking**: Monitor letter status (pending, sent, delivered)
### 💰 Collection Fees
Add collection fees at later stages to cover recovery costs:
* **Visible Everywhere**: Fees shown on payment pages, portal, and postal letters
* **Clear Breakdown**: Customers see original amount + fee = total
* **Included in Plans**: Payment plans cover the total including fees
### 🏪 Customer Experience
Customers see their collection case in the portal with:
* Warning banner explaining the situation
* Case details and amount breakdown
* Stage progress indicator
* Pay Now button for immediate settlement
* Payment plan request option
[Read the full Debt Collection guide →](/debt-collection/overview)
## MCP Integration: Claude Desktop & ChatGPT Support
Connect your favorite AI assistant to PayRequest and manage your billing with natural language conversations. The Model Context Protocol (MCP) integration is now fully working with both Claude Desktop and ChatGPT.
### 🤖 Supported AI Assistants
* **Claude Desktop**: Anthropic's desktop application with full MCP support
* **ChatGPT**: OpenAI's ChatGPT with MCP connector support (Plus subscription required)
### 💬 Natural Language Billing
Ask questions in plain English:
* *"What are my invoice statistics?"*
* *"Show me all overdue invoices"*
* *"List my recent invoices"*
* *"Send a payment reminder for invoice #INV-2025-042"*
### 🔧 Available Tools
| Tool | Description |
| - | - |
| Get Invoice Stats | Real-time overview of total, pending, paid, and overdue invoices |
| List Invoices | Search and filter invoices by status |
| Get Overdue Invoices | Find invoices that need attention |
| Send Invoice Reminder | Automate payment reminder emails |
### 🔐 Secure OAuth Authentication
* Industry-standard OAuth 2.0 with PKCE
* No API keys to manage or rotate
* Revoke access anytime from your dashboard
* All actions logged for audit purposes
### ⚡ Quick Setup
1. Go to **Settings → API** in your PayRequest dashboard
2. Select the **Claude Desktop** or **ChatGPT** tab
3. Follow the on-screen instructions
4. Authenticate with your PayRequest account
5. Start chatting with your billing data!
[Read the full MCP setup guide →](/mcp/setup)
## Bank Transfer Payment Method
Accept bank transfers with automatic payment matching. Customers pay via bank transfer, and PayRequest automatically marks invoices as paid when the payment arrives.
### 🏦 Zero-Fee Bank Payments
Accept bank transfers without any PayRequest transaction fees:
* **Automatic Matching**: Ponto integration matches incoming payments automatically
* **Unique References**: Each payment gets a unique reference code (e.g., `PAY-12345`)
* **Instant Recognition**: Payments matched within minutes of arriving in your bank
* **Copy Buttons**: Easy one-click copying of IBAN and reference for customers
### 💰 How It Works
1. Customer selects "Bank Transfer" at checkout
2. Customer sees your IBAN and unique payment reference
3. Customer transfers the exact amount via their bank
4. Ponto syncs your bank transactions automatically
5. PayRequest matches the reference and marks invoice as paid
### 📍 Available Everywhere
Bank Transfer is now available on all payment surfaces:
* **Payment Pages**: Your public payment page (payrequest.me/yourbusiness)
* **Invoice Payments**: Customer portal invoice payment
* **Smart Links**: Shareable payment links
### ⚙️ Easy Setup
1. Connect your bank via **Settings → Ponto**
2. Toggle **Bank Transfer Payment Method** on
3. Optionally add custom instructions for customers
4. Start accepting bank transfers!
### 🎯 Perfect For
* **B2B Payments**: Business customers who prefer bank transfers
* **High-Value Transactions**: Large payments without card limits
* **Cost-Conscious Customers**: No processing fees passed on
* **European Markets**: Strong bank transfer culture in NL, BE, DE
[Learn more about Bank Transfer Payments →](/payment-processing/bank-transfer)
## Vacation Mode
Take a break from your business without missing a beat. The new Vacation Mode lets you temporarily pause all new orders while keeping your shop and PayRequest Pages visible.
### 🏖️ Pause Orders Temporarily
Enable Vacation Mode when you need a break:
* Going on holiday
* Restocking inventory
* Seasonal closures
* Maintenance periods
### ⏰ Automatic End Dates
Set it and forget it:
* Choose when vacation mode should automatically disable
* Your shop resumes accepting orders at midnight on the selected date
* Or leave it empty and manually re-enable when ready
### 💬 Custom Messages
Tell customers what's happening:
* Write a personalized vacation message
* Display your return date
* Keep customers informed and engaged
### 🛡️ What's Protected
Vacation Mode only blocks **new** orders:
* Existing subscriptions continue billing normally
* Customers can still pay outstanding invoices
* Your shop remains browsable
### 📍 Where to Find It
**Shop** → **Shop Settings** tab → **Vacation Mode** card
[Learn more about Vacation Mode →](/shop-and-checkout/vacation-mode)
## Paid-Only Order Creation
Reduce email noise and keep your order data clean with the new Order Creation Mode for products.
### 🛒 Order Creation Control
New product setting to control when orders are created during checkout:
**Orders at Checkout (Default)**
* Current behavior - orders created immediately when checkout starts
* Emails sent right away (customer registration, order confirmation)
* Good for standard e-commerce where you want to track all attempts
**Paid-Only Orders (New)**
* Orders only created after successful payment
* No emails until payment is confirmed
* Perfect for high-traffic products with many abandoned checkouts
### 📧 Cleaner Email Flow
With paid-only mode enabled:
* No "Customer registered" emails for window shoppers
* No "New order" notifications that get cancelled minutes later
* No "Order cancelled" emails for abandoned checkouts
* Customers only receive order confirmation when they actually pay
### 🎯 Where It Works
The order creation mode setting works across all checkout channels:
* Shop checkout (cart-based purchases)
* Payment page (product links)
* Smart links (shareable payment URLs)
### 💡 When to Use
Enable paid-only orders for products that:
* Generate many abandoned checkouts
* Are used in marketing campaigns with high traffic
* Don't require pre-payment order tracking
* Create too much email noise for your team
**How to Enable:**
1. Edit your product
2. Go to Custom Fields step
3. Find "Order Creation" setting
4. Select "Paid-only orders"
## Smarter Pricing & Better Payment Recovery
Make your pricing more flexible and ensure customers can easily complete their payments, even after interruptions.
### 💰 Price Per Unit for Numeric Fields
Create dynamic pricing based on quantities your customers enter. Perfect for rental days, seats, licenses, or any quantity-based pricing.
**Example Use Cases:**
* Rental equipment: €16 per day × number of days
* Event tickets: €25 per person × number of attendees
* Software licenses: €10 per seat × number of users
**How It Works:**
1. Add a number field to your product's custom fields
2. Set a "per unit markup" price (e.g., €16)
3. Customers enter their quantity and the total updates automatically
**What Customers See:**
* Clear input field with per-unit price displayed
* Real-time calculation as they change the quantity
* Example: "2 × €16.00 = +€32.00"
### 📊 Price Breakdown on PayRequest Page
Customers now see exactly what they're paying for with a clear, itemized breakdown on your payment page.
**Breakdown Shows:**
* Base product price
* Each custom field option with its price impact
* Setup fees (with your custom name like "Deposit" or "Installation")
* **Total price** - clearly visible
**Benefits:**
* Builds trust with transparent pricing
* Reduces customer questions about charges
* Professional checkout experience
### 🔄 Custom Fields Retained After Failed Payment
When a customer's payment is interrupted (cancelled, failed, or closed), they no longer lose their selections.
**Before:** Customer fills in rental days, size, options → payment fails → all data lost, start over.
**Now:** Customer returns to payment page → all their custom field selections are still there, ready to complete.
**Works With:**
* Cancelled payments
* Failed payments
* Browser closed during payment
* Session timeouts
### 🚫 Cancelled Invoice Protection
Cancelled invoices can no longer be paid, preventing confusion and duplicate payments.
**What Happens:**
* Customer visits a cancelled invoice link
* Clear message: "This invoice has been cancelled"
* Invoice items shown with strikethrough (so they know what was ordered)
* Payment form is completely hidden
**Why This Matters:**
* Prevents payments on orders you've already cancelled
* Clear communication with customers
* No manual refunds needed for cancelled orders
**Pro Tip:** Use the per-unit markup feature for rental businesses, event tickets, or any service where customers choose quantities. Combined with the price breakdown, customers see exactly what they're paying for.
## Get Paid Faster with Automated Reminders & Invoice Read Receipts
Stop chasing payments manually. PayRequest now automatically reminds your customers about unpaid invoices and shows you exactly when they've seen them.
### 🔔 Automated Payment Reminders
Set it and forget it. Your invoices now remind customers automatically so you don't have to.
**What You Get:**
* Automatic reminder emails sent daily at 9:00 AM
* Choose when to remind: before due date, after due date, or both
* Control how often reminders are sent (e.g., once per week)
* Professional reminder emails with your branding and invoice details
**Easy Setup:**
1. Open any invoice
2. Go to the "Payment Reminders" tab
3. Toggle reminders on
4. Set your preferences (days before/after, frequency)
5. Done! Reminders will be sent automatically
**Stay in Control:**
* Send a reminder manually anytime with one click
* Send reminders to multiple invoices at once with bulk actions
* See complete history of all reminders sent
### 👁️ Invoice Read Receipts
Know the moment your customer opens their invoice - just like email read receipts.
**New "Viewed" Indicator:**
* Sky blue "Viewed" badge appears on invoices your customer has opened
* See the exact date and time they viewed it
* Appears in invoice history timeline
**Why This Matters:**
* **Customer says "I never received it"?** Check if they viewed it
* **Following up on unpaid invoice?** Know if they've seen it first
* **Optimize your timing:** Follow up right after they've viewed
### 💡 Get Paid Faster
**Before:** Manually tracking which invoices need reminders, guessing if customers received them, chasing payments one by one.
**Now:** Reminders go out automatically, you see when customers view invoices, and you can focus on your actual business.
**Pro Tip:** Set reminders to start 3 days before the due date. This gives customers a gentle nudge while there's still time to pay on time.
## Payment Page Enhancements: Duplicate Prevention & Language Switcher
Prevent accidental double charges and serve international customers better with two important payment page improvements.
### 🛡️ Pending Payment Protection
Customers can no longer accidentally pay twice while SEPA Direct Debit payments are processing.
**How It Works:**
* When a customer pays via SEPA Direct Debit, payment takes 1-3 business days to complete
* During this time, the invoice status is "pending" instead of "paid"
* If customer opens the payment link again, they see a clear warning
* **Payment form is completely hidden** - prevents duplicate charges
**What Customers See:**
* ⏰ Yellow warning callout: "Payment Processing"
* Message: "SEPA Direct Debit is pending. This typically takes 1-3 business days to complete."
* Full invoice details (items, quantities, total amount)
* No payment button or form visible
**Benefits:**
* ✅ Zero duplicate payments - impossible to pay twice
* ✅ Clear communication - customers understand what's happening
* ✅ No manual refunds - prevents the problem entirely
* ✅ Professional experience - shows payment processing expertise
**Technical Details:**
* Applies to all payment pages: direct links, smart links, invoice links
* Checks real-time payment status via Mollie transaction data
* Works with `?invoice=` parameter in URLs
* Automatic - no configuration needed
### 🌍 Language Switcher Dropdown
All payment pages now include an interactive language switcher for seamless multilingual experiences.
**Features:**
* **Fixed Top-Right Position**: Always visible, never in the way
* **Flag Emoji Indicators**: 🇬🇧 English and 🇳🇱 Dutch with country flags
* **Smart URL Preservation**: Keeps all parameters (invoice numbers, product IDs, etc.)
* **Instant Switching**: No page reload, immediate language change
* **Clean Design**: Ghost button style matches payment page aesthetic
**What Customers See:**
* Current language flag in top-right corner (🇬🇧 or 🇳🇱)
* Click to reveal dropdown with both language options
* Select new language → page content updates immediately
* All buttons, labels, and messages translate automatically
**Use Cases:**
* International businesses serving Dutch and English customers
* Customers sharing payment links with others who prefer different languages
* Invoices sent to companies with international teams
* Payment pages accessed from global marketing campaigns
**Technical Integration:**
* Works with `?lang=en` and `?lang=nl` URL parameters
* Preserves query parameters when switching languages
* Example: `?invoice=1505&lang=nl` → `?invoice=1505&lang=en`
* Uses FluxUI dropdown component for consistency
**Pro Tip**: The language switcher is especially useful when sending payment links via email campaigns. Recipients can choose their preferred language without you having to create separate links.
## Quote Requests for Freelancer Pages
Engage with potential customers before they buy. Enable quote requests on your freelancer page to receive custom project inquiries.
### 💬 Quote Request Button
Let visitors request custom quotes directly from your freelancer page.
* **One-Click Enable**: Toggle "Enable Request Quote" in Payment Page settings
* **Beautiful Modal Form**: Professional quote form appears without leaving the page
* **Clean UX**: No URL changes, smooth AJAX submission with success confirmation
* **Instant Notifications**: Email sent to you immediately with customer details
* **Auto-Creates Customers**: New customer profiles created automatically
**Perfect for:**
* Custom service inquiries
* Project scope discussions
* Pricing questions before commitment
* Building customer relationships
* Qualifying leads
### 📊 Support Requests Dashboard
Manage all customer inquiries in one place.
**New Features:**
* **Support Requests Sidebar Item**: Access from Store Management section
* **Available on Freelancer Plan**: No upgrade required - all users can receive quotes
* **Quote Request Type**: Dedicated request type with "Quote" label
* **Customer Linking**: Automatically finds or creates customer profiles
* **Email Integration**: Reply-to set to customer email for easy responses
**Request Management:**
* View all quote requests in dashboard
* Filter by type (Quote, Support, Refund, etc.)
* Track request status (Open, In Review, Resolved)
* Assign to team members
* Add internal notes
* Link to created invoices
### 🎨 Professional Customer Experience
Built-in features for a polished experience.
* **Success Callout**: Green checkmark confirmation when quote sent
* **Error Handling**: Clear error messages if something goes wrong
* **Form Validation**: Email format checking, required fields
* **Loading States**: "Sending..." button during submission
* **Mobile Optimized**: Works perfectly on all devices
**How It Works:**
1. Customer clicks "Request Custom Quote" on your freelancer page
2. Fills form with name, email, and message
3. Clicks "Send Request" → Shows "Sending..."
4. Green success callout appears: "Quote request sent!"
5. You receive email + dashboard notification
6. Respond to customer and convert to invoice
**Pro Tip**: Respond within 4 hours for best conversion rates. Quick responses show professionalism and increase your chances of winning the project.
## AI-Powered Products & Smart Subscription Management
Save time with AI-generated product descriptions, offer profitable add-ons with markup pricing, and collect payments faster with one-click mandate charging.
### 🤖 AI Product Description Writer
Never stare at a blank screen again. Generate professional product descriptions in seconds.
* **Click the Sparkles Icon**: Located right in your product editor toolbar
* **Instant Professional Copy**: AI writes 2-3 sentences highlighting your product's benefits
* **Sales-Focused**: Emphasizes value and what customers get, not just features
* **Edit & Personalize**: Use as a starting point and customize to match your brand
* **Always Available**: Works for any product - just enter a product name and click
**Perfect for:**
* Quickly creating product catalogs
* Maintaining consistent professional tone
* Overcoming writer's block
* Saving hours of copywriting time
### 💰 Flexible Add-On Pricing
Offer extras and upgrades with automatic price calculations. Perfect for upselling services and options.
**Toggle Add-Ons**
* Simple on/off switches for extras (SSL certificate, priority support, etc.)
* Price clearly shown: "+€25.00"
* Customers see exactly what they're paying for
**Dropdown Options**
* Different pricing tiers in one product (Basic/Pro/Enterprise)
* Each option can have its own markup price
* Great for server resources, storage tiers, feature bundles
**Works Everywhere**
* Customer shop checkout
* Subscription creation in dashboard
* Automatic price calculation: (Base Price + Selected Add-ons) × Quantity
**Smart Custom Pricing**
* Set a fixed custom price when creating subscriptions
* Add-ons automatically excluded (custom price is final amount)
* Clear info message explains no add-ons will be charged
* Perfect for special deals and negotiated contracts
### ⚡ Instant Mandate Charging
Get paid faster. Charge existing SEPA mandates with one click instead of waiting for the billing cycle.
**How It Works**
1. Open any unpaid invoice linked to a subscription with mandate
2. See the **"⚡ Charge Mandate Now"** button
3. Click to charge immediately
4. Payment processes via existing SEPA mandate
5. Invoice marked as processing
**Safety Features**
* Only appears for invoices with active mandates
* Prevents duplicate charges (checks last 5 days)
* Shows processing status after charging
* Clear messaging about 1-3 day SEPA processing time
**Perfect For**
* Charging early renewals
* Processing failed billing immediately
* Getting cash flow faster
* Reducing wait time for scheduled billing
### 🔄 Improved Manual Renewals
Create invoices for subscriptions anytime, with automatic mandate detection.
**Automatic Payment Method Selection**
* **Has Mandate**: Charges SEPA mandate automatically
* **No Mandate**: Sends invoice email with payment link to customer
**Smart Redirect**
* Takes you to the invoice page (not payment checkout)
* You see the invoice, customer gets charged or emailed
* Clear success messages explain what happened
**Perfect For**
* Billing early renewals
* Processing extra charges mid-cycle
* Offering discounts with manual invoicing
### 🎨 Better User Experience
Small improvements that make your daily work smoother.
**Clearer Payment Status**
* Processing indicator replaces button after charging
* Shows "Payment Processing - SEPA Direct Debit pending (1-3 business days)"
* No confusion about whether charge went through
**Transaction Visibility**
* Fixed: All invoice transactions now appear correctly in Transactions tab
* See all payment attempts (pending, paid, canceled, expired)
* Payment IDs shown in success messages for easy tracking
**Price Summaries**
* Detailed breakdown: Base Price + Add-ons + Quantity = Total
* Only shows add-ons when applicable
* Clear indication when custom pricing is used
### 💡 What This Means For Your Business
**Save Time**
* AI writes product descriptions in seconds, not hours
* Automatic price calculations eliminate manual math
* One-click charging faster than manual bank transfers
**Increase Revenue**
* Easy to offer add-ons and upgrades
* Clear pricing encourages upsells
* Faster payments improve cash flow
**Reduce Errors**
* Smart custom pricing prevents double-charging
* Duplicate charge prevention protects your reputation
* Clear status indicators reduce support questions
**Professional Experience**
* Consistent product descriptions across catalog
* Clean, modern interface throughout
* Customer-friendly checkout with clear pricing
### 🐛 Fixes & Improvements
* **Transaction Display**: Fixed issue where some invoice transactions weren't appearing in the Transactions tab
* **Price Calculations**: Subscription summaries now correctly show totals including add-on markup
* **Status Updates**: Payment processing status now updates immediately after charging mandates
* **Error Messages**: Clearer explanations when operations can't be completed
## Invoice Payment Links & Retry System
Major improvements to how customers pay invoices, making failed or canceled payments easier to retry and giving you more control over payment links.
### 🔗 Invoice Payment Links
* **Easy Sharing**: Share invoice payment links directly from your dashboard
* **Invoice Status Badges**: Payment pages show invoice number with color-coded status (Paid, Pending, Overdue)
* **QR Code Support**: Generate QR codes for mobile payments - perfect for in-person or printed invoices
* **Permanent Links**: Payment links never expire and work until the invoice is paid
### 🔄 Payment Retry System
* **Smart Retry**: Failed or canceled payments can be easily retried using the same invoice
* **Auto-Fill Everything**: Retry links remember all customer details - no need to re-enter information
* **No Duplicate Invoices**: System reuses the same invoice instead of creating duplicates
* **Clear Status Display**: Customers see if an invoice is already paid before attempting payment
### 💳 Payment Page Enhancements
* **More Pre-Fill Options**: Share links with customer info, amounts, payment methods, and addresses pre-filled
* **Product Links**: Link directly to specific products with prices automatically filled in
* **Custom Fields Support**: Collect additional information like domain names or custom requirements
* **Mobile Friendly**: All payment pages work perfectly on phones and tablets
### 🎯 Customer Experience Improvements
* **Paid Invoice Display**: Customers see a clear success message with payment details for already-paid invoices
* **Item Breakdown**: Complete list of purchased items with quantities and prices
* **Payment Protection**: Can't accidentally pay the same invoice twice
* **Faster Checkout**: Pre-filled information speeds up the payment process
### 📚 New Documentation
* **Invoice Payment Links Guide**: Learn how to share payment links effectively
* **Payment Retry Instructions**: Help customers retry failed payments
* **Payment Page Parameters**: Complete guide to pre-filling payment information
* **QR Code Usage**: How to use QR codes for quick mobile payments
### 🐛 Reliability Improvements
* **Order Status Updates**: Orders now correctly show as "completed" after successful payment
* **Faster Processing**: Improved webhook handling for quicker payment confirmations
* **Subscription Activation**: Subscriptions activate immediately after payment instead of staying "pending"
* **Better Error Recovery**: Automatic retry of failed payment notifications
### 💡 What This Means For You
* **Less Support Work**: Customers can retry failed payments themselves
* **Professional Experience**: Consistent, branded payment flows everywhere
* **Better Tracking**: Clear payment status throughout your dashboard
* **More Flexibility**: Multiple ways to share payment links (email, SMS, QR codes)
* **Happier Customers**: Smooth payment experience reduces abandonment
### 🎨 Quality of Life Updates
* **Cleaner URLs**: Simplified payment link format for better sharing
* **Unified System**: All invoice payments now use the same reliable payment page
* **Automatic Updates**: Payment status syncs across invoices, orders, and subscriptions
* **Better Navigation**: Easy access to payment links from invoice details and lists
## Iframe Payment Integration Fix
Enhanced checkout process to work seamlessly when embedded in iframes, resolving iDEAL payment issues.
### 🎯 Iframe Payment Support
* **Embedded Checkout**: PayRequest checkout now works perfectly when embedded in third-party websites
* **iDEAL Integration**: Fixed payment flow for iDEAL and other payment methods within iframes
* **Parent Window Redirect**: Smart detection automatically redirects to payment pages in the parent window
* **Universal Compatibility**: Works with all payment providers that have frame restrictions
### 💡 User Benefits
* **Seamless Integration**: Businesses can embed PayRequest checkout forms anywhere
* **No Payment Interruptions**: Customers complete payments without technical errors
* **Better User Experience**: Smooth transition from embedded forms to secure payment pages
* **Wide Compatibility**: Works across different websites and integration methods
## Payment Reminder Race Condition Fix
Critical bugfix preventing payment reminders from being sent for already paid invoices.
### 🐛 Race Condition Fix
* **Database Synchronization**: Added fresh database checks to prevent stale component state
* **Real-Time Validation**: Verify invoice status at the moment of reminder sending
* **User Feedback**: Clear error messages when attempting to send reminders for paid invoices
* **Webhook Reliability**: Prevents race conditions between webhook processing and user actions
### 🔧 Technical Details
* **Problem**: Users could send reminders for invoices that were paid during their session
* **Root Cause**: Livewire component state not updated when webhooks processed payments
* **Solution**: Double-check invoice status with fresh database query before sending reminders
* **Impact**: Eliminates customer confusion from receiving reminders for already paid invoices
## Product Duplication & Category Display Types
New powerful features for managing your product catalog with enhanced organization and efficiency.
### 🔄 Product Duplication System
* **One-Click Duplication**: Copy any product with customizable name and price
* **Modal Interface**: Clean popup for quick edits during duplication
* **Complete Copy**: All settings, descriptions, and configurations preserved
* **Time-Saving**: Perfect for creating product variations and seasonal items
### 📋 Category Display Types
* **Cards Layout**: Visual grid display perfect for products with images
* **List Layout**: Horizontal layout ideal for services and detailed descriptions
* **Price Table Layout**: Professional comparison tables for plans and tiers
* **Flexible Organization**: Each category can use a different display type
### 🎯 Enhanced Shop Experience
* **Category-Specific Headers**: Categories show their name and description instead of generic text
* **Clean Navigation**: Removed generic welcome text for focused product browsing
* **Professional Appearance**: Better visual hierarchy and customer experience
### 🛠️ Technical Improvements
* **PostgreSQL Compatibility**: Fixed boolean field handling for reliable product operations
* **Better Performance**: Optimized database queries and field management
* **Translation Support**: Full Dutch language support for all new features
## Complete Documentation Redesign
Brand new comprehensive documentation to help you get the most out of PayRequest.
### 📚 New Help Resources
* **Getting Started Guide**: Interactive setup checklist for new users
* **Payment Methods**: Complete guide to connecting Mollie, Stripe, and other providers
* **Custom Domains**: Professional branded storefronts for your business
* **Customer Portal**: Self-service tools for your customers
### 🎨 Enhanced Experience
* **Interactive Components**: Expandable sections and tabbed content
* **Visual Examples**: Real-world screenshots and use cases
* **Mobile Optimized**: Perfect experience on all devices
* **Fast Search**: Instantly find what you need
## Improved Shopping Cart
Enhanced cart functionality with better quantity management and custom field support.
### 🛒 Cart Improvements
* **Quantity Management**: Easier product quantity adjustments
* **Custom Fields**: Support for product-specific customer information
* **Better Validation**: Improved error handling and user feedback
* **Session Persistence**: Cart contents saved across browser sessions
### 🔧 Technical Fixes
* **Mandate Sync**: Automatic synchronization for subscription orders
* **Webhook Reliability**: Fixed 404 errors on custom domains
* **API Access**: Resolved Mollie API mandate access issues
## Enhanced Activity Tracking
Improved history views with better organization and visual design.
### 📊 Better Organization
* **Segmented Tabs**: Replace dropdowns with visual tab navigation
* **Timeline Sorting**: Most recent activities shown first
* **Activity Logging**: Comprehensive tracking of invoice and subscription changes
* **Visual Callouts**: Important events highlighted with colored indicators
### 🎯 User Experience
* **Cleaner Interface**: Modern tab-based navigation
* **Better Context**: Clear visual hierarchy for different event types
* **Faster Navigation**: Quick access to relevant information
## Enhanced Platform Reliability
Improved platform stability and automatic issue resolution for better uptime.
### 🛠️ Platform Improvements
* **Automatic Monitoring**: Continuous health checks every 15 minutes
* **Self-Healing**: Automatic resolution of common issues
* **24/7 Reliability**: Proactive maintenance prevents downtime
* **Better Performance**: Faster loading and smoother experience
### 📊 What This Means for You
* **Less Downtime**: Issues fixed before you notice them
* **Consistent Service**: Reliable access to your billing dashboard
* **Peace of Mind**: Your billing operations run smoothly around the clock
## Automated Maintenance & Custom Setup Fees
Platform reliability improvements and enhanced setup fee customization.
### 🛠️ Automated Maintenance
* **Self-Healing System**: Automatic issue detection and resolution
* **24/7 Monitoring**: Continuous health checks prevent downtime
* **Proactive Fixes**: Problems solved before they affect your business
* **Better Uptime**: More reliable access to your billing dashboard
### 💰 Custom Setup Fee Names
* **Personalized Terms**: Use "Borg", "Installation Fee", or any custom name
* **Clear Descriptions**: Explain what setup fees cover to customers
* **Multi-Language**: Dutch, English, and other language support
* **Business Specific**: Terms that match your industry and customer expectations
## Enhanced Payment Processing & Product Sharing
Major improvements to payment handling and new product sharing capabilities.
### 💳 iDEAL Payment Improvements
* **Instant Activation**: Subscriptions start immediately after iDEAL payments
* **Better Reliability**: Enhanced payment processing for Dutch customers
* **Faster Setup**: Quicker mandate creation and subscription activation
* **Reduced Support**: Fewer customer questions about payment status
### 🔗 Product Sharing & QR Codes
* **Professional Links**: Share products with your custom domain
* **QR Code Generation**: Perfect for in-person sales and marketing materials
* **Easy Sharing**: One-click link copying for emails and social media
* **Mobile Optimized**: Works seamlessly on phones and tablets
### 🌍 Dutch Language Support
* **Complete Translation**: Full Dutch interface for Dutch customers
* **Localized Content**: Documentation and help content in Dutch
* **Cultural Adaptation**: Payment terms and business language that fits the Dutch market
## Order Management & Checkout Improvements
Enhanced order handling with better deletion options and checkout flexibility.
### 🛍️ Order Management
* **Order Deletion**: Delete orders with related items for cleaner records
* **Status Filtering**: Better organization with status-based filtering
* **Checkout Parameters**: Support for disabled checkout fields
* **Address Handling**: Improved URL parameter processing for customer addresses
### 💳 Payment Processing
* **Subscription Webhooks**: Instant subscription activation for one-time payments
* **Amount Display**: Fixed monetary formatting issues across the platform
* **Sync Improvements**: Better Mollie integration and balance visibility
## Subscription System Overhaul
Major improvements to subscription management and database performance.
### 🔄 Subscription Enhancements
* **Better Performance**: Faster subscription processing and management
* **PostgreSQL Fixes**: Resolved database compatibility issues
* **Customer Management**: Enhanced tools for managing customer subscriptions
* **Improved Reliability**: More stable subscription billing and processing
### 📊 Platform Improvements
* **Database Optimization**: Significant performance improvements
* **Error Handling**: Better error messages and user feedback
* **Data Integrity**: Enhanced data validation and consistency
## Enhanced Analytics & Banking Integration
New insights dashboard features and improved bank connectivity.
### 📊 Analytics Improvements
* **Bank Balance Cards**: Real-time account balance display from Ponto integration
* **Subscription Renewals**: Upcoming renewal tracking and management
* **Better Insights**: Enhanced dashboard with actionable business metrics
* **Performance Tracking**: Improved monitoring of key business indicators
### 🏦 Banking Features
* **Ponto Integration**: Enhanced bank account connectivity
* **Balance Monitoring**: Real-time account balance tracking
* **OAuth Improvements**: Better authentication flow for bank connections
* **Sync Reliability**: More stable bank transaction synchronization
## Modern Design & Checkout Enhancements
Complete design refresh with improved checkout functionality.
### 🎨 Design Improvements
* **Modern Cards**: Contemporary card styling throughout the platform
* **Dark Theme**: Elegant dark mode options for better user experience
* **Professional Layout**: Cleaner, more professional interface design
* **Mobile Responsive**: Optimized experience across all devices
### 🛒 Checkout Enhancements
* **Pre-filled URLs**: Support for pre-populated checkout forms
* **Custom Fields**: Enhanced custom field handling in checkout process
* **PayRequest.me Domain**: Cleaner, more professional payment URLs
* **Better Validation**: Improved form validation and error handling
## Customer Management & Email Automation
Advanced customer relationship tools with automated email workflows.
### 👥 Customer Management
* **Customer Tags**: Organize customers with customizable tags and filtering
* **Modern Card Design**: Beautiful customer cards with improved information display
* **Tag Filtering**: Quick customer searches using tag-based filters
* **Health Tracking**: Monitor customer email health and engagement
### 📧 Email Automation
* **Smart Workflows**: Automated email responses based on customer behavior
* **Health Monitoring**: Track email bounces, complaints, and delivery issues
* **Customer Segmentation**: Target specific customer groups with relevant messaging
* **Automation Rules**: Set up custom triggers for email campaigns
## Invoice Refunds & Improvements
Complete refund system with better invoice management tools.
### 💰 Refund System
* **Full Refund Support**: Process complete or partial refunds easily
* **Duplicate Prevention**: Automatic protection against accidental double refunds
* **Visual Indicators**: Clear refund status display for invoices
* **Business & Customer Views**: Comprehensive refund information for all users
### 📄 Invoice Enhancements
* **Improved Sidebar**: Better invoice detail navigation and information display
* **Enhanced UX**: Cleaner interface with better user experience
* **Translation Updates**: Improved Dutch language support throughout
* **Amount Display**: Fixed critical monetary formatting issues
## Team Management & Product Categories
Enhanced collaboration tools and better product organization.
### 👥 Team Management
* **Complete Team System**: Invite and manage team members with role-based access
* **Invitation Cleanup**: Automatic cleanup of expired team invitations
* **Better Permissions**: Granular control over team member access levels
* **Improved Workflow**: Streamlined team collaboration features
### 📦 Product Categories
* **Category System**: Organize products into logical categories
* **Better Navigation**: Easier product discovery and management
* **Pricing Fixes**: Resolved critical Mollie migration pricing issues
* **Enhanced Organization**: Cleaner product management interface
## PayRequest 2.0 Platform Launch
Major platform redesign with modern technology and enhanced reliability.
### 🚀 Modern Platform
* **New Technology Stack**: Updated to latest Laravel, Livewire, and FluxUI
* **Modern Interface**: Complete redesign with contemporary card-based layouts
* **Logo System**: Dynamic logo switching and improved branding
* **Better Performance**: Faster loading times and smoother interactions
### 🔧 Reliability Improvements
* **Webhook System**: Comprehensive webhook reliability and failure recovery
* **Billing Improvements**: Enhanced subscription billing and payment processing
* **CSV Export**: Complete export functionality with proper monetary formatting
* **Security Enhancements**: Improved security across all platform features
## Enhanced Data Management & Security
Major improvements to data export capabilities and customer management security.
### 📊 Comprehensive CSV Export
* **Monetary Value Fixes**: Accurate financial data in all exports
* **Custom Field Support**: Export custom field data for detailed analysis
* **Multi-format Options**: Choose the data format that works for your workflow
* **Bulk Operations**: Export large datasets efficiently
### 🔒 Enhanced Security
* **Customer-Specific Access**: Improved mandate sync with proper user isolation
* **Bulk Action Security**: Fixed security issues in bulk operations
* **Data Privacy**: Better protection of customer financial information
* **Audit Trail**: Complete tracking of all data access and modifications
## Advanced Organization & Subscription Analytics
Powerful new tools for organizing customers and tracking subscription performance.
### 🏷️ Enhanced Tag Management
* **Advanced Search**: Find tagged customers and subscriptions instantly
* **Smart Pagination**: Navigate large tag lists efficiently
* **CSV Export**: Export tagged data for external analysis
* **Improved Layout**: Cleaner interface for better productivity
### 📊 Subscription Insights
* **Duration Tracking**: Visual progress indicators for subscription lifecycles
* **Internal Notes**: Add private notes to subscription records
* **Performance Analytics**: Better understanding of subscription health
* **Timeline Views**: Clear history of subscription changes
## Trial System & Performance Optimization
Complete trial functionality and major performance improvements for better user experience.
### 🎁 Free Trial System
* **Product Trials**: Offer free trials on any subscription product
* **Automatic Conversion**: Seamless transition from trial to paid subscription
* **Customer Communication**: Clear trial status and billing information
* **Business Control**: Configure trial length and terms per product
### ⚡ Performance Improvements
* **99.9% Faster Sync**: Eliminated performance bottlenecks in payment processing
* **Real-time Notifications**: Instant business notifications for important events
* **Reduced Database Load**: Optimized queries prevent system slowdowns
* **Better Monitoring**: Sentry integration for proactive issue resolution
## Custom Domain Excellence & Payment Enhancements
Professional branded storefronts with advanced payment capabilities.
### 🌐 Custom Domain Perfection
* **Seamless Integration**: Your domain works flawlessly with all PayRequest features
* **Cart Functionality**: Shopping cart works perfectly on custom domains
* **Asset Loading**: Optimized performance on your branded storefront
* **Route Management**: Smart routing prevents conflicts and errors
### 💳 Advanced Payment Options
* **Saved Payment Methods**: Customers can reuse trusted payment methods
* **SEPA Direct Debit**: Streamlined European bank payments
* **Payment Button States**: Clear feedback during payment processing
* **Mandate Management**: Automatic handling of payment authorizations
## Payment Processing Excellence & Multi-Language Support
Major improvements to payment reliability and complete Dutch language support.
### 💳 Enhanced Payment Processing
* **Custom Domain CSRF**: Bulletproof security for custom domain payments
* **Livewire Integration**: Seamless real-time payment processing
* **Subscription Management**: Fixed mandate issues for reliable recurring billing
* **Payment History**: Complete transaction tracking and customer payment portals
### 🌍 Complete Localization
* **89.6% Dutch Coverage**: Nearly complete Dutch language interface
* **Payment Translations**: Clear payment terms in customer's language
* **Cultural Adaptation**: Payment flows optimized for Dutch market
* **Multi-Language Ready**: Foundation for additional language support
## Email System Overhaul & Enhanced Integrations
Professional email communications and improved third-party integrations.
### 📧 Advanced Email System
* **Email Template Management**: Custom templates for all communications
* **Template Variables**: Dynamic content personalization
* **Delivery Tracking**: Monitor email delivery success and failures
* **Professional Design**: Branded email templates that match your business
### 🔗 Banking Integration
* **Ponto Enhancement**: Improved bank account synchronization
* **Transaction Matching**: Automatic reconciliation of bank transactions
* **Real-time Updates**: Faster sync with your business bank accounts
* **Error Recovery**: Robust handling of API connection issues
### 🖼️ Visual Improvements
* **Product Images**: Upload and manage product photos
* **Logo Management**: Easy logo upload and customization
* **Dark Mode**: Enhanced dark mode support throughout the platform
* **UI Polish**: Improved dropdowns, cards, and visual elements
## Advanced Customization & Activity Monitoring
Powerful tools for customizing products and tracking customer interactions.
### 🎛️ Advanced Custom Fields
* **Select Fields**: Dropdown options with pricing markup
* **Toggle Fields**: Boolean options for add-on services
* **Required Validation**: Ensure important information is collected
* **Cart Integration**: Custom field data flows seamlessly through checkout
* **Quantity Selection**: Flexible quantity management per product
### 📊 Complete Activity Tracking
* **Customer Logs**: Track all customer interactions and changes
* **Email History**: Monitor invoice and payment email delivery
* **Audit Trail**: Complete history of all system activities
* **Performance Insights**: Understand customer behavior patterns
### 📧 Professional Email Templates
* **Custom Templates**: Design emails that match your brand
* **Template Variables**: Personalize emails with customer and business data
* **Resend Functionality**: Easy re-sending of important communications
* **Queue Management**: Reliable email delivery with retry capabilities
## Enhanced Mollie Integration & Developer Tools
Major improvements to payment provider connections and debugging capabilities.
### 🔗 Mollie OAuth Enhancement
* **Bi-directional Sync**: Automatic customer synchronization between PayRequest and Mollie
* **Token Management**: Automatic token refresh prevents connection interruptions
* **Proxy Support**: Enhanced API reliability for all Mollie operations
* **Debug Tools**: Comprehensive scripts for troubleshooting integration issues
### 🔧 Developer Experience
* **PostgreSQL Optimization**: Fixed boolean field handling for better database performance
* **Sequence Management**: Automatic fix for database sequence issues
* **Error Logging**: Enhanced logging for faster issue resolution
* **Configuration Scripts**: Automated setup tools for production deployment
## Streamlined Onboarding & Invoice Automation
Simplified user experience with powerful automation features.
### 🚀 Magic Link Authentication
* **Passwordless Login**: Secure email-based authentication
* **Onboarding Flow**: Guided setup for new users
* **Reduced Friction**: Faster access to your billing dashboard
* **Security First**: Enhanced security without password complexity
### 📄 Invoice Automation
* **Smart Numbering**: Configurable invoice numbering systems
* **Transaction Integration**: Seamless connection between payments and invoices
* **Status Tracking**: Real-time invoice status updates
* **FluxUI Modernization**: Updated interface with modern table components
## Performance & Reliability Enhancements
Major infrastructure improvements for better platform stability.
### ⚡ Performance Optimization
* **Queue Management**: Laravel Horizon integration for reliable job processing
* **Token Automation**: Automatic refresh of payment provider connections
* **Timezone Handling**: UTC-based token management for global reliability
* **Database Efficiency**: Optimized queries and proper boolean handling
### 🔄 Enhanced Automation
* **Chargeback Monitoring**: Automatic detection and processing of chargebacks
* **Sync Reliability**: Improved synchronization with payment providers
* **Error Recovery**: Better handling of API failures and timeouts
* **Deployment Scripts**: Streamlined production deployment process
## Complete Multi-Language Foundation
Comprehensive internationalization system for global businesses.
### 🌍 Translation System
* **Laravel i18n Integration**: Professional translation management system
* **Dutch Language Support**: Complete Dutch interface for local businesses
* **Translation Tracking**: Automated scanning and coverage reporting
* **Dynamic Content**: Multi-language support for all user-facing content
### 🎯 Localized Experience
* **Shop Localization**: Customer-facing content in local languages
* **Invoice Translation**: Localized invoice templates and terminology
* **UI Components**: Translated interface elements throughout the platform
* **Cultural Adaptation**: Payment terms adapted for different markets
## Professional Payment Pages & Custom URLs
Enhanced payment collection with branded, professional appearance.
### 💰 Payment Page System
* **Custom Handles**: Professional URLs like payrequest.me/yourhandle
* **Flexible Amounts**: Support for custom and fixed payment amounts
* **Business Branding**: Professional appearance with your business identity
* **Mobile Optimized**: Perfect experience across all devices
### 🎨 Enhanced Interface
* **Modern Design**: Contemporary card styling and visual improvements
* **Dashboard Optimization**: Faster loading with optimized queries
* **Icon Standardization**: Consistent visual language throughout
* **Empty State Improvements**: Better guidance when starting with the platform
## Banking Integration & Wise Support
Expanded banking capabilities with new financial institution support.
### 🏦 Wise Integration
* **Profile Management**: Connect and manage Wise business accounts
* **Transaction Sync**: Automatic synchronization of Wise transactions
* **Multi-Currency**: Enhanced support for international transactions
* **Balance Monitoring**: Real-time account balance tracking
### 🌐 Enhanced Localization
* **Language Expansion**: Additional translation coverage for English and Dutch
* **Settings Localization**: Multi-language support for all settings pages
* **Helper Functions**: Enhanced internationalization tools for developers
## Advanced Mandate & Transaction Management
Comprehensive tools for managing payment mandates and transaction details.
### 📋 Mollie Mandate System
* **Complete Management**: Full lifecycle management of SEPA Direct Debit mandates
* **Enhanced Logging**: Detailed logging and pagination for mandate operations
* **Customer Linking**: Automatic linking of mandates to customer records
* **Status Tracking**: Real-time mandate status monitoring
### 📊 Transaction Insights
* **Detail Views**: Comprehensive transaction information with formatted metadata
* **Responsive Design**: Mobile-optimized transaction displays
* **Enhanced Formatting**: Improved layout and visual presentation
* **JSON Formatting**: Professional display of complex transaction data
## Customer Management & Navigation Improvements
Streamlined customer management with improved navigation and search.
### 👥 Customer Experience
* **Detailed Views**: Comprehensive customer detail pages with subscription information
* **Smart Navigation**: Direct links between related records (customers, subscriptions, payments)
* **Search Integration**: Enhanced Algolia search with customer and subscription indexing
* **Simplified Interface**: Cleaner navigation with better user experience
### 🔗 Relationship Management
* **Connected Data**: Seamless navigation between customers, subscriptions, and payments
* **Context Awareness**: Smart buttons and links based on available data
* **Improved Organization**: Better grouping and presentation of related information
***
## 🔮 Coming Soon
We're constantly working on new features and improvements. Here's what's on our roadmap:
### Q2 2026
* **Multi-Currency**: Full support for international currencies
* **Advanced Reporting**: Custom dashboard builder and data visualization
* **AI-Powered Insights**: Machine learning for churn prediction and revenue optimization
* **Stripe Payment Provider**: Full Stripe integration alongside Mollie
***
**Stay Updated**: Follow our [GitHub repository](https://github.com/payrequestio/payrequest.me) for the latest updates and contribute to the PayRequest community.
# Contact Persons
Source: https://docs.payreque.st/customer-management/contact-persons
Add additional contacts to customer accounts to receive billing or account email notifications
# Contact Persons
Contact Persons let your customers (or you) add extra people from their organization who should receive email notifications. A bookkeeper who needs invoice copies, a manager who wants payment updates, or a technical contact for subscription changes — each contact person gets the right emails without needing portal access.
Contact persons receive copies (CC) of selected email types. They do not have login access to the customer portal — only the primary customer account can log in.
## Overview
Customers add and manage their own contact persons from the portal
You can also add contact persons from the customer detail page in your dashboard
Each contact person chooses which email categories they receive
Assign roles like Billing, Bookkeeping, or Technical for easy identification
## How It Works
### For Customers (Portal)
Customers manage their contact persons from the **Contact Persons** page in the portal sidebar.
In the customer portal, click **Contact Persons** in the sidebar (between Support and Settings).
Click **Add Contact Person** and fill in:
* **Name** (required) — The person's full name
* **Email** (required) — Where notifications will be sent
* **Phone** (optional) — Contact phone number
* **Role** — Their function: General, Billing, Bookkeeping, Technical, Management, or Support
Toggle which email categories this person should receive:
* **Billing emails** — Invoices, payment confirmations, payment reminders, overdue notices
* **Account emails** — Subscription changes, order confirmations, mandate updates
The contact person is added immediately and will be CC'd on future emails matching their notification preferences.
### For Business Owners (Dashboard)
You can manage contact persons from any customer's detail page in the admin dashboard.
Go to **Customers** and click on a customer to open their detail page.
Scroll down below the customer details (in the Details or Business tab). The **Contact Persons** section shows all existing contacts.
Click **Add Contact Person** to add a new one, or use the edit/delete buttons on existing contacts.
## Notification Categories
Contact persons can subscribe to two categories of email notifications:
### Billing Emails
| Email Type | When It's Sent |
| - | - |
| New invoice | When an invoice is created |
| Payment confirmation | When a payment is received |
| Payment reminders | Automatic reminders for unpaid invoices |
| Overdue notices | When invoices pass their due date |
| Mandate requests | When a SEPA mandate needs to be set up |
| Mandate activations | When a SEPA mandate is confirmed |
### Account Emails
| Email Type | When It's Sent |
| - | - |
| Order confirmation | When an order is placed |
| Order completed | When an order is fulfilled |
| Subscription suspended | When a subscription is suspended |
| Subscription changes | Status updates for subscriptions |
**Common setup**: Add a bookkeeper with only **Billing emails** enabled so they automatically receive copies of all invoices and payment confirmations. Add a technical contact with only **Account emails** for subscription and service updates.
## Roles
Each contact person has a role label for easy identification. Roles are descriptive — they don't affect permissions or notification options.
| Role | Typical Use |
| - | - |
| **General** | Default role, general contact |
| **Billing** | Handles payments and invoicing |
| **Bookkeeping** | Accountant or bookkeeper who needs invoice copies |
| **Technical** | IT or technical contact for service-related updates |
| **Management** | Manager or director who oversees the account |
| **Support** | Support contact for operational matters |
## Limits
* Maximum **10 contact persons** per customer
* Each email address can only be added once per customer
* The customer's own primary email cannot be added as a contact person
* Contact persons receive emails as **CC** — the primary customer always remains the main recipient
**Privacy**: Contact persons only receive email copies. They cannot log into the portal, view the customer's account, or take any actions. For portal access, see the customer login feature.
## Frequently Asked Questions
No. Contact persons only receive email copies (CC). They do not have portal login access. Only the primary customer email can log into the portal.
No. Contact persons are linked to an existing customer account. They are not separate customer records and don't appear in your customer list.
Contact persons are managed per customer. There is no bulk-add feature. Customers can self-manage their contacts through the portal.
They immediately stop receiving email notifications. No emails are sent to notify them of the removal.
Yes. Customers can add, edit, and remove contact persons from the **Contact Persons** page in their portal. You can also manage them from the admin dashboard.
## Next Steps
Overview of all customer portal features
Appearance, language, and notification preferences
Configure your email templates and delivery settings
Managing customer data in the admin dashboard
# Email Health & Bounce Suppression
Source: https://docs.payreque.st/customer-management/customer-health
Monitor email deliverability per customer and automatically prevent sending to bounced or invalid addresses
# Email Health & Bounce Suppression
PayRequest automatically tracks email delivery issues — bounces, spam complaints, and failures — and suppresses future emails to problematic addresses. This protects your sender reputation and prevents wasted delivery attempts.
Email health tracking works automatically via Resend webhooks. No setup is required beyond having your Resend integration connected.
Emails to bounced or complained addresses are blocked until you clear the suppression
Bounce warnings appear on customer profiles with full issue history
Invoice reminders show delivery status when Resend confirms receipt
Transient failures auto-resolve when a subsequent email delivers successfully
***
## How It Works
PayRequest sends an invoice reminder, order confirmation, or other customer email via Resend.
Resend sends a webhook when the email bounces, gets a spam complaint, fails, or is successfully delivered.
The bounce or complaint is recorded as an **email issue** linked to the customer's email address. Delivery confirmations update the reminder history.
Any attempt to send email to that address is blocked. The sender (command, UI, or MCP tool) is notified that the email was suppressed.
A red warning on the customer profile shows the bounce details. You can update the email address or clear the suppression to resume sending.
***
## Email Health Statuses
Each customer has an email health status based on their unresolved email issues:
| Status | Badge Color | Meaning |
| - | - | - |
| **Healthy** | Green | No active issues — emails deliver normally |
| **Bounced** | Red | Email address rejected by the recipient server (e.g., address doesn't exist) |
| **Complained** | Orange | Recipient marked your email as spam |
| **Failed** | Yellow | Transient delivery failure (auto-resolves on next successful delivery) |
***
## Customer Profile: Bounce Warning
When a customer has an active bounce or complaint, a prominent red callout appears at the top of their **Details** tab:
* **Bounce type** — Permanent or Transient
* **Date** — When the bounce occurred
* **Reason** — The SMTP error message from the recipient's mail server
* **Clear Suppression** button — Resolves all active issues and re-enables email delivery
### Email Issue History
The **Logs** tab on the customer profile shows a chronological table of all email issues, including:
* Date and time of each event
* Issue type (Bounced, Complained, Failed)
* Reason and SMTP message
* Status — **Active** (red) or **Resolved** (green)
***
## Customer List: Email Issues Filter
The customer list shows email delivery problems at a glance:
* **Email Issues count** in the stats bar (only visible when issues exist)
* **Email Issues filter** in the status dropdown to show only affected customers
* **Red "Bounced" badge** on customer cards with active suppression
***
## What Gets Suppressed
When an email is suppressed, every customer-facing email channel is blocked:
| Email Type | Behavior When Suppressed |
| - | - |
| Invoice reminders (automatic) | Skipped with "suppressed" status in command output |
| Invoice reminders (manual/bulk) | Toast warning in the dashboard |
| Invoice paid confirmations | Silently skipped with log entry |
| Smart link emails | Smart link still created, email skipped |
| Debt collection notices | Email skipped, escalation continues normally |
| Checkout recovery emails | Silently skipped |
| Deposit authorized emails | Silently skipped |
| MCP send-invoice-reminder | Returns error message explaining the suppression |
Business owner emails (like daily summaries) are **never** suppressed — only customer-facing emails are affected.
***
## Clearing Suppression
There are two ways to clear a suppression and resume email delivery:
### Manual Clear
Click the **Clear Suppression** button on the customer profile's bounce warning callout. This resolves all active email issues for that customer.
### Automatic Clear on Email Change
When you edit a customer and change their email address to a different one, PayRequest automatically:
1. Resolves all active email issues on the old address
2. Removes any tags that were added by email bounce automations (e.g., the "Invalid Email" tag)
Only clear a suppression if you're confident the email address is now valid — for example, after the customer confirms a typo fix. Clearing suppression for a permanently invalid address will just result in another bounce.
***
## Delivery Confirmation
When Resend confirms that an invoice reminder was delivered, PayRequest records a `delivered_at` timestamp on the reminder history. This appears as a green **Email Delivered** event in the invoice timeline, giving you confirmation that the customer received the reminder.
Delivery confirmations also automatically resolve any previous transient **Failed** issues for that email address.
***
## FAQ
**Bounced** means the recipient server permanently rejected the email (e.g., the address doesn't exist). This creates a suppression that blocks future emails. **Failed** is a transient issue (e.g., temporary server problem) that auto-resolves when a later email delivers successfully.
If the underlying problem hasn't been fixed (e.g., the email address is still invalid), yes — the next email will bounce and the suppression will be re-applied. Only clear suppression when you're confident the issue is resolved.
No. Suppression only checks the primary recipient (the customer's email). CC recipients on contact persons are not checked against the suppression list.
Every suppressed email attempt is logged in the application log with the email address, context (which job or command tried to send), and the reason for suppression.
***
## Next Steps
Configure automatic invoice reminder schedules
Set up automatic tagging for bounced emails
Add CC recipients who receive email copies
Diagnose and fix common email delivery problems
# Customer Portal
Source: https://docs.payreque.st/customer-management/customer-portal
Give your customers a self-service portal to manage subscriptions, view invoices, pay bills, and update their preferences
# Customer Portal
The PayRequest Customer Portal is a full self-service experience for your customers. When customers log into your shop, they get a personal dashboard with everything they need: subscriptions, invoices, orders, payment methods, support tickets, and account settings.
The Customer Portal is automatically available for every shop. Customers register or log in via your shop URL (or custom domain) and get immediate access to their personal dashboard.
There's also a lighter-weight account area built directly into your **payment page** (magic-link login, settings/contacts/payment methods/subscriptions/support tabs) that doesn't require a full shop. See [Customer Login & Account Area](/payment-processing/payment-forms#customer-login-account-area) for that flow.
## Portal Navigation
When logged in, customers see a persistent sidebar with quick access to all portal sections:
| Section | Description |
| - | - |
| **Shop** | Return to the shop homepage / product catalog |
| **Payment Methods** | Manage SEPA mandates and saved payment methods |
| **Edit Details** | Update name, email, address, and company information |
| **Invoices** | View all invoices, pay outstanding ones, download PDFs |
| **Orders** | Browse order history with details |
| **My services** | View services, domain management and linked subscriptions; available actions depend on the service and merchant settings |
| **Support** | Create and track support tickets |
| **Contact Persons** | Add people from the organization to receive email notifications |
| **Notifications** | View announcements, alerts, and updates from the business |
| **Settings** | Appearance, language, and notification preferences |
The sidebar also shows **open invoices** with amounts and **open support tickets** with status badges, giving customers a quick overview of items that need attention.
## My services
**My services** brings the existing subscription overview and supported service management together. Customers can see status, renewal or next-payment dates and linked billing. Opening a domain uses the existing domain-management page; supported actions depend on the provider configuration and customer permissions.
For businesses, **Services & integrations** in the dashboard explains how the provider, automatic delivery and customer portal connect. Openprovider supports the existing domain flow. DirectAdmin, Enhance and VirtFusion are labelled **Planned** and cannot be connected yet; no release date has been announced.
The existing subscription URLs and billing rules remain in place. The payment-page account area's subscription tab is separate from the shop portal described here.
## Customer Homepage
The homepage is the customer's personal dashboard. It shows at-a-glance statistics and recent activity.
### Statistics Cards
Three clickable stat cards at the top show:
* **Orders** — Total order count, links to order history
* **Invoices** — Total invoice count, links to invoice list
* **Subscriptions** — Active subscription count, links to subscription management
### Active Subscriptions
A prominent section showing all active subscriptions with:
* Product name and status badge (Active, Paused, Trial)
* Billing interval and amount (e.g., "monthly" at "15.00/month")
* Next billing date
* Trial end date (if on trial, with countdown)
* Direct link to subscription details
### Recent Orders
The most recent orders displayed with:
* Order number and date
* Total amount
* Link to order details
### Open Invoices & Tickets (Mobile)
On mobile devices, open invoices and support tickets are displayed as alert cards. On desktop, these appear in the sidebar instead.
## Portal Pages
### Invoices
Customers can browse all their invoices with status indicators:
* **Pay outstanding invoices** directly via iDEAL, credit card, or saved payment methods
* **Download PDF** invoices for their records
* **Request a refund** for paid invoices — submits a support ticket linked to the invoice (see [Refund Requests](/invoices/refund-requests))
* View payment history and transaction details per invoice
* Filter by status (paid, unpaid, pending)
### Subscriptions
Full subscription self-management:
* View subscription details (product, amount, interval, next billing)
* **Pause** a subscription temporarily
* **Resume** a paused subscription
* **Cancel** a subscription
* View custom fields associated with the subscription
* See trial status and end dates
Subscription self-management can be enabled or disabled per product via the **Allow Self-Management** toggle in product settings.
### VPN services
For [VPNresellers subscriptions](/integrations/vpnresellers), customers open **My services**, select their subscription and use the **VPN** tab. It shows delivery status, the VPN username and **Access paid until**.
While access is active, the primary customer and contacts with **Admin** or **Operations** access can reveal or change the VPN password and download WireGuard, OpenVPN or VLESS configurations. **Billing** and **Viewer** contacts cannot access credentials. Configuration files contain private access keys and should be kept private.
VPN subscriptions do not support customer pausing or free trials. Cancellation retains access until the end of the paid period; an unpaid renewal does not extend access. If delivery is delayed, customers can check again shortly or contact the business through the portal.
### Orders
Complete order history with:
* Order number, date, and status
* Line items with quantities and amounts
* Order total with tax breakdown
* **Digital downloads** — For orders containing digital products, customers see download buttons with remaining download count and expiry date (see [Digital Products](/products-and-pricing/digital-products))
* **AI Prompts** — For orders containing an AI Prompt, customers see the full prompt text with a **Copy Prompt** button, so they can re-copy it any time without digging through email (see [AI Prompts](/products-and-pricing/ai-prompts))
Customers who log in from a PayRequest Page can also open **My downloads**. PayRequest uses their customer email to show eligible digital purchases across creators in one download library. Buying a digital product does not by itself grant access to a creator's private Community; that requires an active membership for the connected membership product.
### Payment Methods (Mandates)
Customers can manage their saved payment methods:
* View active SEPA Direct Debit mandates
* See mandate status (valid, pending, invalid)
* Add new payment methods
* Use saved methods to pay invoices
### Profile
Customers can update their personal and business details:
* Name, email, phone number
* Address (street, city, postal code, country)
* Company details (for business customers)
### Debt Collection Cases
When a business opens a collection case for an overdue invoice, the customer sees it in their portal:
* View case details (case number, linked invoice, days overdue)
* See amount breakdown (original amount + any collection fees)
* Visual progress indicator showing the current collection stage
* **Pay Now** button to settle the full amount immediately
* **Request a payment plan** to pay in monthly installments (when enabled by the business)
Customers can only see collection cases linked to their own invoices. The portal shows clear, professional communication without unnecessary legal jargon.
### Support
Integrated support ticket system:
* Create new support tickets
* Track ticket status (Open, In Review, Resolved)
* Add replies to existing tickets
* View ticket history
* Receive email notifications when the business replies
See [Support Requests](/customer-management/support-requests) for full documentation on managing support tickets from the admin side.
### Contact Persons
Customers can add additional people from their organization to receive email notifications:
* Add up to 10 contact persons with name, email, phone, and role
* Choose notification preferences per contact: **Billing emails** (invoices, payments) or **Account emails** (subscriptions, orders)
* Edit or remove contact persons at any time
See [Contact Persons](/customer-management/contact-persons) for full documentation.
### Settings
A dedicated settings page where customers control their portal experience. See [Customer Portal Settings](/customer-management/customer-portal-settings) for full details.
* **Appearance** — Choose between System, Light, or Dark mode
* **Language** — Select Auto (browser default), English, or Dutch
* **Notifications** — Toggle email notifications per category
## Custom Domain Support
The Customer Portal works seamlessly on custom domains. If you've configured a custom domain for your shop (e.g., `shop.yourbusiness.com`), the entire portal including all customer pages, settings, and payment flows operates under your domain.
Everything works automatically under your domain — a fully white-label experience for your customers.
## Customer Authentication
Customers create an account on your shop and log in with their email and password. They stay logged in during their session and can log out from the portal header.
Customer login is completely separate from your PayRequest dashboard. Customers cannot access your business dashboard.
## Mobile Experience
The portal is fully responsive:
* **Desktop** — Sidebar navigation with all sections visible
* **Mobile** — Optimized layout with collapsible sections, open invoices and tickets shown inline instead of sidebar
## Next Steps
Learn about appearance, language, and notification preferences
Managing customer profiles and data
Set up a custom domain for your shop and portal
Configure what customers can manage themselves
How collection cases appear in the customer portal
How customers can request refunds for paid invoices
Send announcements and alerts to customers in the portal
# Customer Portal Settings
Source: https://docs.payreque.st/customer-management/customer-portal-settings
Customers can personalize their portal experience with appearance, language, and notification preferences
# Customer Portal Settings
The Settings page gives your customers control over their portal experience. Customers can choose their preferred theme, language, and which email notifications they receive. All changes are saved automatically.
The Settings page is available at `/customer/settings` on your shop (or custom domain). It's accessible from the sidebar navigation in the customer portal.
## Appearance
Customers can choose how the portal looks with three theme options:
| Option | Behavior |
| - | - |
| **System** (default) | Follows the customer's browser/OS dark mode preference |
| **Light** | Always uses light mode |
| **Dark** | Always uses dark mode |
The theme applies instantly when selected — no page reload needed. The preference is saved to the customer's account and persists across sessions and devices.
**Default behavior**: When no preference is set, the portal follows the customer's system preference. This means customers who have dark mode enabled in their OS will automatically see the portal in dark mode.
## Language
Customers can choose their preferred language for the portal:
| Option | Behavior |
| - | - |
| **Auto** (default) | Uses the browser's language setting |
| **English** | Portal displays in English |
| **Nederlands** | Portal displays in Dutch |
When a language is selected, the page refreshes to apply the new language immediately. The preference is stored in the customer's account.
## Notification Preferences
Customers can toggle individual email notification categories on or off. This gives them control over which emails they receive from your business.
### Invoice Notifications
| Notification | Description | Default |
| - | - | - |
| **New invoice** | When a new invoice is created for the customer | On |
| **Payment confirmation** | When a payment has been received | On |
| **Payment reminders** | Reminders for unpaid invoices | On |
### Subscription Notifications
| Notification | Description | Default |
| - | - | - |
| **Renewal notices** | Before a subscription renews | On |
| **Status changes** | When a subscription is paused, resumed, or canceled | On |
### Order Notifications
| Notification | Description | Default |
| - | - | - |
| **Order confirmation** | When an order has been placed successfully | On |
All notification toggles are saved automatically when changed. A note at the bottom of the section confirms: "Changes are saved automatically."
**Good to know**: When your customer opts out of a notification category (e.g. payment reminders), PayRequest automatically respects that preference when sending emails. You don't need to configure anything extra.
## Next Steps
Overview of all customer portal features
Configure your email templates and delivery settings
# Customer Profile
Source: https://docs.payreque.st/customer-management/customer-profiles
Complete guide to viewing and managing individual customer profiles in PayRequest
# Customer Profile
The customer profile page provides a comprehensive view of all information and activity related to a single customer. Access it by clicking on any customer from your customer list.
## Page Layout
The customer profile is divided into two main sections:
* **Left Sidebar**: Quick overview, actions, and contact information
* **Main Content Area**: Tabbed interface with detailed information
***
## Header Section
At the top of the page, you'll see:
* **Customer Avatar**: Displays the company logo (for business customers with a website) or generated initials
* **Customer Name**: Company name for business customers, full name for individuals
* **Status Badge**: Shows Active, Archived, or Suspended status
* **Email Address**: Primary contact email
* **Tags**: Up to 3 tags displayed with a "+X more" indicator if there are additional tags
* **Archive Information**: If archived, shows the reason and date
***
## Left Sidebar
### Customer Overview Card
The top card displays:
* **Avatar & Name**: Large avatar with customer name and email
* **Tags Section**: All assigned tags with quick add (+) button
* Hover over a tag to reveal the remove (×) button
* **Quick Stats**: Three-column grid showing:
* Total Invoices count
* Total Orders count
* Total Subscriptions count
### Customer Details Accordion
Expandable section showing:
| Field | Description |
| - | - |
| Member Since | Month and year the customer was created |
| Customer Type | VIP (>€1000 revenue), Regular (≥3 orders), or New |
| Unpaid Invoices | Count of outstanding invoices (if any) |
| Total Revenue | Lifetime revenue from paid invoices |
| Last Login | Date, time, and location of last portal login |
### Quick Actions Card
Action buttons for common tasks:
* **Request payment again**: Opens an editable payment request using the customer's most recent paid transaction
* **View unpaid payment requests**: Opens the Payment Links overview filtered to this customer and links without a recorded linked payment
* **Create Invoice**: Opens invoice creation with customer pre-selected
* **Create Subscription**: Opens subscription creation modal
* **Create Order**: Opens order creation with customer pre-selected
* **Add Note**: Opens the note creation modal
* **Manage Tags**: Opens tag management modal
* **Create Support Ticket**: Initiates a support conversation
* **Login as Customer**: Access the customer portal as this customer
* **Archive Customer**: Move to archived status (for active customers)
* **Reactivate Customer**: Restore from archived status
### Request Payment Again
Use this action when an existing customer needs to pay for another service, a new billing period, or a similar purchase. You do not need to create a product first.
Open the customer profile and select **Request payment again** in **Quick Actions** to use the most recent payment. To choose a different payment, use **Request again** on one of the five entries under **Request a previous payment again**. These entries show the description, amount, currency, and payment date.
Only positive paid transactions are offered; security deposit transactions are excluded. If the customer has no eligible previous payment, the action opens a new Amount Link with the customer selected and the amount left empty.
The form has the customer selected and copies the previous payment's amount, currency, and description. For example, a previous £65 GBP payment opens a new £65 GBP request. Edit these details for the new service or period.
The new request is an **Amount Link** with a **One-Time Payment** limit. It does not carry over access settings, reminders, or delivery choices from an earlier link.
Click **Create Payment Link** after reviewing the draft. Leave delivery methods unselected to create a link you can copy and share yourself, or choose email or SMS before saving to send it through the selected method. SMS requires available credits.
Opening or reviewing the draft does not create a payment link or send a message. The previous payment remains unchanged. This action requests a new payment; it does not automatically charge the customer or renew their service access.
See [Managing payment requests](/payment-processing/smart-links#payment-links-overview) for status filters, copying links, and reminder settings.
### Contact Info Card with Map
When a country is set, displays:
* **Interactive Map**: Mapbox map centered on the customer's country with flag overlay
* **Phone Number**: Clickable to initiate a call
* **Full Address**: Street, postal code, city, and country
* **Website**: Clickable link to company website (if set)
The map shows the country location. For privacy reasons, it does not pinpoint the exact address.
### SEPA Mandate Card
If the customer has an active SEPA Direct Debit mandate via Mollie, a credit card-style display shows:
* Payment method type (SEPA Direct Debit)
* Mandate status (Valid/Invalid)
* Account holder name
* IBAN (formatted with spaces)
* BIC code
* Signature date
* Mandate reference ID
***
## Main Content Tabs
### Customer/Business Tab
For **Individual Customers**, shows the "Klant" (Customer) tab with:
* Full name
* Email address with [health status badge](/customer-management/customer-health) (Healthy/Bounced/Complained/Failed)
* Phone number
* Street address
* City and postal code
* Country
* Preferred language (EN/NL/ES)
* Default payment method
* Private notes visible only to your team
* Add, edit, and delete notes
* Shows author and timestamps
For **Business Customers**, shows the "Business" tab with additional fields:
For Dutch businesses with a KVK number:
* KVK registration number
* Last sync timestamp
* Re-sync button to update from KVK.nl
* Company name
* VAT number
* Legal form (B.V., N.V., etc.)
* Industry code and description
* Established date
* Trade names
* Country with flag
* VAT number with validation status
* Validate VAT button (checks via VIES)
* Tax exempt status
### Orders Tab
View and filter all orders placed by this customer:
**Status Filters** (pill tabs):
* All, Pending, Processing, Completed, Cancelled, Refunded, Failed
**Order Table Columns**:
| Column | Description |
| - | - |
| Order # | Order number or ID |
| Date | Creation date |
| Status | Order status with colored badge |
| Payment | Payment status (Paid/Pending/Failed/Refunded) |
| Total | Order total amount |
| Actions | View button to open order details |
All columns are sortable by clicking the header.
### Invoices Tab
Complete invoice management for the customer:
**Invoice Summary Callout**:
* Total invoice count with paid/unpaid breakdown
* Total amount and unpaid amount
* Send Payment Reminder button (when unpaid invoices exist)
**Status Filters** (pill tabs):
* All, Draft, Concept, Open, Pending, Unpaid, Paid, Cancelled, Chargeback
**Invoice Table Columns**:
| Column | Description |
| - | - |
| Invoice # | Invoice number |
| Date | Creation date |
| Due Date | Payment due date |
| Amount | Invoice amount |
| Status | Status with colored badge |
| Actions | View and Edit buttons |
**Quick Actions**:
* Create Invoice button in the header
* Create First Invoice prompt for new customers
### Subscriptions Tab
Manage recurring billing for the customer:
**Subscription Summary Callout**:
* Total subscription count with active/paused/canceled breakdown
* Monthly Recurring Revenue (MRR) from active subscriptions
**Status Filters** (pill tabs):
* All, Active, Paused, Pending, Canceled, Failed, Completed
**Subscription Table Columns**:
| Column | Description |
| - | - |
| Product | Product name with subscription name |
| Status | Status with colored badge |
| Amount | Recurring amount and interval |
| Next Billing | Next billing date |
| Actions | View button |
**Quick Actions**:
* Create Subscription button in the header
### Smart Links Tab
View all Smart Links created for this customer:
* Link name and type (Product/Amount)
* Status (Active/Inactive)
* Views and payments statistics
* Revenue generated
* Quick actions to view/edit
### Transactions Tab
Complete payment history:
* All transactions related to invoices, orders, and subscriptions
* Mollie payment IDs and status
* Amount and currency
* Payment method used
* Created timestamp
### Activity Log Tab
Chronological activity feed showing:
* Invoice creation, sending, and payment events
* Order placements and status changes
* Subscription lifecycle events (created, paused, resumed, canceled)
* Customer data changes
* Note additions
Each entry shows:
* Activity type and description
* Timestamp (relative, e.g., "2 hours ago")
* User who performed the action (when applicable)
***
## Editing Customer Information
Click the **Edit Customer** button (pencil icon) to open the edit modal.
### Individual Customer Fields
* Customer type (Individual/Business)
* Full name
* Email address
* Phone number
* Street address (with Google Maps autocomplete)
* City
* Postal code
* Language preference (English, Dutch, Spanish)
* Payment method preference
* Country
* Tax exempt toggle
### Business Customer Fields
All individual fields plus:
* Company name
* VAT number
* Company registration number (with country selector)
* Legal form
* Industry code
* Industry description
* Established date
* Website URL
### Avatar Selection (Business Customers)
When a website URL is entered for a business customer:
1. An "Customer Avatar" section appears
2. Shows a preview of the company logo from the website
3. Click to select the logo as the customer avatar
4. The avatar appears on the customer profile page
5. Click "Remove" to clear the avatar
The avatar uses unavatar.io to fetch the website's favicon/logo automatically. No manual upload required!
***
## Tag Management
### Adding Tags
1. Click the **+** button next to "Tags" or the **Manage Tags** quick action
2. Search existing tags or create new ones
3. Select multiple tags to assign
4. Click Save to apply
### Removing Tags
* Hover over any tag to reveal the **×** button
* Click to instantly remove the tag
* Or use the Manage Tags modal to remove multiple at once
### Creating New Tags
1. In the tag management modal, type a new tag name
2. If no match is found, click "Create new tag"
3. Choose a color for the tag
4. The tag is created and automatically assigned
***
## Customer Notes
Private notes visible only to your team members.
### Adding a Note
1. Click **Add Note** from Quick Actions or the Notes section
2. Enter a title (required)
3. Enter the note content (supports multi-line text)
4. Click Save
### Editing a Note
1. Click the pencil icon on any note
2. Modify the title or content
3. Click Save
### Deleting a Note
1. Click the trash icon on any note
2. Confirm deletion in the modal
Notes display:
* Title and content
* Creation timestamp ("2 days ago")
* Update timestamp (if edited)
* Author name
***
## KVK Integration (Dutch Businesses)
For customers with a Dutch company (country = NL) and KVK number:
### Automatic Data Sync
When a KVK number is entered:
* Company name, address, and details are fetched from KVK.nl
* Legal form, industry information, and trade names are populated
### Manual Re-sync
1. Navigate to the Business tab
2. Check the "Last Synced" timestamp
3. If outdated (>1 year), click **Re-sync with KVK**
4. Customer data is updated from the KVK registry
KVK sync is only available for Netherlands-based businesses with valid KVK numbers.
***
## VAT Validation
Validate European VAT numbers via the VIES system:
1. Ensure the customer has a VAT number entered
2. Click **Validate VAT** button
3. Results show:
* Valid/Invalid status badge
* Company name from VIES
* Registered address from VIES
* Validation timestamp
If the VAT number is valid, the customer is automatically marked as tax exempt.
***
## Archiving Customers
### Archive a Customer
1. Click **Archive Customer** from Quick Actions
2. Select an archive reason:
* No longer needed
* Duplicate entry
* Customer request
* Payment issues
* Other
3. Add an optional note
4. Confirm archival
### Effects of Archiving
* Customer is hidden from default customer list
* Status badge shows "Archived"
* Archive reason and date displayed in header
* Existing invoices, orders, and subscriptions remain accessible
* Customer cannot log into the portal
### Reactivate a Customer
1. Navigate to the archived customer's profile
2. Click **Reactivate Customer**
3. Confirm reactivation
4. Customer returns to Active status
***
## Login as Customer
Test the customer portal experience:
1. Click **Login as Customer** from Quick Actions
2. A new tab opens with the customer portal
3. You're logged in as the customer
4. View their invoices, subscriptions, and orders
5. Test payment flows and portal features
This creates an actual session as the customer. Be careful not to modify their data unintentionally.
***
## Related Documentation
Learn more about customer notes and best practices
Managing tax-exempt customers
What your customers see in their portal
Organizing customers with tags
# Customer Sync
Source: https://docs.payreque.st/customer-management/customer-sync
Pull your existing Mollie customers into PayRequest automatically, matched and merged by email.
# Customer Sync
If you've been using Mollie before connecting it to PayRequest, Customer Sync pulls your existing Mollie customer records into PayRequest and links them to your PayRequest customers — matched by email address.
Customer Sync lives on the **Mollie Customers** page in your dashboard, and requires a connected Mollie account.
## How Matching Works
PayRequest pulls your Mollie customer list in pages of 50, storing each one (name, email, locale, metadata) as a Mollie Customer record.
For each Mollie customer with an email address, PayRequest looks for a PayRequest customer with the same email under your account.
A new customer is created using the Mollie customer's name, email, and locale. Its internal notes field is set to record the Mollie customer ID it was synced from, for traceability.
If a PayRequest customer with that email already exists, Customer Sync only fills in fields that are currently empty (name, language) — it never overwrites data you've already entered.
Sync is one-way: Mollie → PayRequest. Changes you make to a customer in PayRequest are not pushed back to Mollie.
## Running a Sync
* **First visit**: if you land on the Mollie Customers page with zero customers and Mollie already connected, a sync starts automatically.
* **Manual sync**: click **Sync** on the Mollie Customers page at any time to pull the latest data. This also enables ongoing sync on your Mollie connection if it wasn't already on.
* Sync runs as a background job — the page shows a toast confirming it started, and the last sync time is displayed once it completes.
Syncing large customer lists is paginated automatically — if there are more pages of customers, PayRequest queues the next page a couple of seconds later to avoid hitting Mollie's rate limits.
## Fixing Mismatched Customers
If Mollie customer records end up with no owner or the wrong owner (for example after reconnecting Mollie under a different account), the Mollie Customers page detects this and shows a fix option to correct the ownership.
## Exporting Synced Customers
The Mollie Customers page has its own **CSV export** of the customers Mollie has returned (name, email, metadata) — separate from the account-wide export covered in [Data Import & Export](/business-settings/data-import-export).
## FAQ
No. If a PayRequest customer already exists with a matching email, sync only fills in blank fields (name, language) — it never overwrites data that's already there.
No, sync is one-directional: from Mollie into PayRequest.
Synced customers have their internal notes field populated with the source Mollie customer ID, stored on the record for traceability.
No — it runs once automatically the first time you visit the Mollie Customers page with no customers yet, and otherwise only when you click Sync manually.
## Next Steps
Export your customer data to CSV
Keep your own staff-only notes on any customer
Understand customer activity after they're synced
# Last Login Tracking
Source: https://docs.payreque.st/customer-management/last-login-tracking
Monitor customer activity with automatic last login tracking including location data
## Overview
PayRequest automatically tracks when customers log into your shop, recording the date, time, and geographic location based on their IP address. This information helps you understand customer engagement and identify active users.
## How It Works
### Automatic Tracking
When customers log in to your shop using the magic link system, PayRequest automatically:
* Records the exact login timestamp
* Captures the customer's IP address
* Determines their geographic location (country and city)
* Updates their customer profile with this information
### Location Detection
The system uses IP geolocation services to determine:
* **Country**: The customer's country (e.g., "The Netherlands", "Germany")
* **City**: The customer's city when available (e.g., "Amsterdam", "Berlin")
* **Fallback Handling**: Shows "Local Network" for private/local IP addresses
## Viewing Last Login Information
### Customer Detail Page
In your dashboard, navigate to any customer's profile to see their last login information:
1. Go to **Customers** in your dashboard
2. Click on any customer to view their profile
3. In the sidebar, look for the **Customer Details** section
4. The last login appears as: `"27 Sep 2025, 11:29 (Amsterdam, The Netherlands)"`
### Information Display Format
The last login information shows:
* **Date and Time**: In a readable format (27 Sep 2025, 11:29)
* **Location**: City and country when available
* **Only When Available**: Only displays if the customer has logged in at least once
## Privacy and Security
### Data Handling
* **IP Addresses**: Stored for location detection purposes
* **No Personal Data**: Only geographic location is derived and stored
* **GDPR Compliant**: Data handling follows privacy regulations
* **Automatic Cleanup**: Old login data can be managed according to your data retention policies
### Location Accuracy
* **Country Level**: Usually very accurate (99%+ correct)
* **City Level**: Generally accurate but may vary by provider
* **ISP Dependent**: Location depends on the customer's internet service provider
* **VPN Consideration**: May show VPN server location if customer uses VPN
## Use Cases
### Customer Support
When customers contact support:
* Verify recent account activity
* Confirm login attempts
* Identify account access patterns
### Business Intelligence
Track customer engagement:
* Monitor active vs. inactive customers
* Understand geographic customer distribution
* Identify login patterns and trends
### Security Monitoring
Basic security insights:
* Unusual login locations
* Recent account activity
* Customer engagement levels
## Technical Details
### Automatic Implementation
Last login tracking is automatically enabled for all shops and requires no setup. The system:
* Tracks all magic link logins
* Updates customer records in real-time
* Handles failures gracefully (login won't fail if tracking fails)
* Provides fallback for local/development environments
### Data Storage
* **Database Field**: `last_login_at`, `last_login_ip`, `last_login_country`, `last_login_city`
* **Privacy Focused**: Only stores necessary location data
* **Efficient Queries**: Optimized for fast customer profile loading
## Frequently Asked Questions
### Will this slow down customer logins?
No, the location detection happens asynchronously and won't impact login speed. If the location service fails, the login still completes successfully.
### How accurate is the location data?
Country-level data is typically 99%+ accurate. City-level data is generally accurate but can vary depending on the customer's ISP and network configuration.
### Can customers opt out of tracking?
This is basic login tracking for business purposes. The data helps you provide better customer service and is handled according to standard privacy practices.
### What about customers using VPNs?
If customers use VPN services, the location will show the VPN server's location rather than their actual location.
### Is this GDPR compliant?
Yes, this tracking is for legitimate business purposes (customer service and account security) and follows GDPR guidelines for data minimization and purpose limitation.
***
*Last updated: September 2025*
# Portal Notifications
Source: https://docs.payreque.st/customer-management/portal-notifications
Send announcements, alerts, and updates directly to your customers through the Customer Portal
## Overview
Portal Notifications let you communicate directly with your customers through the Customer Portal. Whether you're announcing a price change, going on vacation, or flagging a service issue, notifications appear as prominent banners and in a notification bell — so your customers never miss important updates.
Think of Portal Notifications as your private communication channel with customers. Unlike emails that can end up in spam, portal notifications are always visible the moment a customer logs in.
## Key Features
* **Four notification types**: Announcements, Price Changes, Vacation notices, and Problem alerts
* **Targeted delivery**: Send to all customers, specific customers, or customers with certain tags
* **Two display locations**: Callout banners at the top of the portal and a notification bell in the header
* **Optional email delivery**: Also send the notification via email when you create it
* **Scheduling**: Set a start date for future notifications
* **Expiry dates**: Automatically hide notifications after a certain date
* **Permanent or dismissible**: Choose whether customers can dismiss the notification or not
* **Active/inactive toggle**: Quickly enable or disable notifications without deleting them
## How Customers See Notifications
### Callout Banners
When a customer logs into the portal, active notifications appear as colored banners at the top of every page. Each notification type has its own color and icon:
| Type | Color | Icon | Best For |
| - | - | - | - |
| **Announcement** | Blue | Megaphone | General updates, new features, company news |
| **Price Change** | Yellow | Currency symbol | Upcoming price adjustments, plan changes |
| **Vacation** | Yellow | Calendar | Holiday closures, reduced availability |
| **Problem** | Red | Warning triangle | Service issues, outages, known bugs |
Customers can dismiss banners (unless you've marked them as permanent), and dismissed notifications won't reappear.
### Notification Bell
A bell icon appears in the portal header with a badge showing the number of unread notifications. Clicking the bell opens a panel listing all active notifications with:
* Notification title and message
* Color-coded icon matching the notification type
* How long ago the notification was posted
* A dismiss button (for non-permanent notifications)
The notification count on the bell icon updates automatically. When a customer dismisses a notification, it disappears from both the banner area and the bell panel.
## Creating a Notification
### Step 1: Open the Notification Manager
Navigate to **Portal Notifications** in your dashboard sidebar (under Portal & Products).
Click the **Create Notification** button.
### Step 2: Write Your Message
* **Title**: A short, clear heading (e.g., "Holiday Closure December 24-31")
* **Message**: The full notification text. Keep it concise — customers see the first few lines in the bell panel.
### Step 3: Choose Notification Type
Select the type that best matches your message:
* **Announcement** — General updates and news (blue banner)
* **Price Change** — Pricing-related notices (yellow banner)
* **Vacation** — Availability or closure notices (yellow banner)
* **Problem** — Issues or alerts that need attention (red banner)
The notification type automatically sets the banner color and icon. You can also choose a custom color variant (Info, Success, Warning, Danger) if you want a different look.
### Step 4: Select Your Audience
Choose who should see this notification:
**All Customers**
* Every customer who logs into your portal will see the notification.
* Best for: General announcements, holiday closures, system updates.
**Specific Customers**
* Pick individual customers from a searchable list.
* Best for: Targeted price change notices, account-specific updates.
**Customers with Tags**
* Select one or more tags. Any customer with at least one of the selected tags will see the notification.
* Best for: Segment-based communication (e.g., all "Enterprise" customers, all "Trial" customers).
Tags are a powerful way to organize your customers into groups. If you haven't set up tags yet, check out the [Tags System](/organization-and-automation/tags-system) documentation.
### Step 5: Configure Options
**Permanent notification**
Turn this on if the notification should always stay visible. Customers won't be able to dismiss it. Use this sparingly — only for critical, ongoing information.
**Send email notification**
Turn this on to also send the notification content via email to the targeted customers. The email includes your business name and the notification message. Emails are sent immediately when you create the notification.
Emails are only sent when creating a new notification — not when editing an existing one. Make sure your message is ready before enabling this option.
### Step 6: Set Timing (Optional)
**Start date**
Leave empty to show the notification immediately, or pick a future date to schedule it.
**Expiry date**
Leave empty for no expiration, or set a date after which the notification automatically hides. Great for time-limited announcements like holiday closures or promotional periods.
### Step 7: Preview and Save
A live preview at the bottom of the form shows exactly how your notification will look as a banner in the portal. Review it, then click **Save**.
## Managing Notifications
### The Notification List
The Portal Notifications page shows all your notifications in a table with:
* **Title** and **type badge**
* **Target audience** (All, Specific, or Tagged)
* **Status** (Active, Inactive, Scheduled, or Expired)
* **Active toggle** — Quickly enable or disable a notification
* **Actions menu** — Edit or delete
### Filtering Notifications
Use the filter dropdowns at the top to narrow down your list:
* **Search** — Find notifications by title or message text
* **Type** — Filter by Announcement, Price Change, Vacation, or Problem
* **Status** — Filter by Active, Inactive, Scheduled, or Expired
### Editing a Notification
Click **Edit** from the actions menu to update any notification. All fields can be changed except the email setting — emails that were already sent cannot be unsent.
### Activating and Deactivating
Use the toggle switch in the notification list to quickly turn notifications on or off. Deactivated notifications are hidden from customers but not deleted, so you can reactivate them later.
### Deleting a Notification
Click **Delete** from the actions menu to permanently remove a notification. This also removes any dismissal records associated with it.
## Use Cases
### Holiday Closure
> **Type**: Vacation
>
> **Title**: "Holiday Closure: December 24 - January 2"
>
> **Message**: "Our office will be closed for the holidays. We'll respond to support tickets when we return on January 2nd. Happy holidays!"
>
> **Target**: All Customers
>
> **Expiry**: January 2nd
>
> **Email**: Yes
### Upcoming Price Increase
> **Type**: Price Change
>
> **Title**: "Price Update Effective March 1st"
>
> **Message**: "Starting March 1st, our Business plan will increase from €15 to €18 per month. Your current billing continues unchanged until your next renewal. Contact us with questions."
>
> **Target**: Customers tagged "Business Plan"
>
> **Permanent**: Yes (until the change takes effect)
>
> **Email**: Yes
### Service Issue
> **Type**: Problem
>
> **Title**: "Payment Processing Delay"
>
> **Message**: "We're experiencing a brief delay in processing payments. Your payments are safe — they will complete within 1-2 hours. We apologize for the inconvenience."
>
> **Target**: All Customers
>
> **Permanent**: Yes (remove manually when resolved)
### New Feature Announcement
> **Type**: Announcement
>
> **Title**: "New: Pay with Saved Payment Methods"
>
> **Message**: "You can now pay invoices using your saved SEPA Direct Debit mandate. Look for the 'Use Saved Method' option on your next invoice payment."
>
> **Target**: All Customers
>
> **Expiry**: 2 weeks from now
## Best Practices
* **Keep messages short** — Customers scan rather than read. Use clear, direct language.
* **Use the right type** — It sets the right color and tone automatically.
* **Set expiry dates** — Old notifications clutter the portal. Always add an expiry unless the notice is truly permanent.
* **Use permanent sparingly** — If customers can't dismiss a notification, it stays visible forever. Reserve this for critical, ongoing information.
* **Combine with email** — For important notices (price changes, outages), enable email delivery so customers are notified even if they don't log in.
* **Target wisely** — Use tags to segment your audience. A price change for one plan doesn't need to go to all customers.
## Frequently Asked Questions
No, portal notifications are one-way communication. For two-way communication, customers can use the Support section to create a ticket.
The notification is permanently removed and all customer dismissal records are deleted too. Customers will no longer see it anywhere.
Yes, you can edit the title, message, and all other settings. However, the email that was already sent will still show the original content.
There's no limit. However, we recommend keeping it to 2-3 active banners at most — too many banners can overwhelm customers.
Yes. Both callout banners and the notification bell are fully responsive and work on all screen sizes.
You can set a start date. The notification will become visible on that date. Time is based on your account timezone.
The notification will be waiting for them the next time they log in, as long as it hasn't expired. If you also enabled email, they'll receive the email regardless of login status.
## Next Steps
Learn about the full Customer Portal experience
Organize customers into groups for targeted notifications
Set up your email settings for notification delivery
Configure portal appearance and preferences
# Private Notes
Source: https://docs.payreque.st/customer-management/private-notes
Keep internal, staff-only notes on a customer's profile that are never visible to the customer.
# Private Notes
Add internal notes to any customer's profile to track important context — special arrangements, past issues, reminders, or anything your team needs to know. Notes are only ever visible to you and your team; customers never see them, including in the customer portal.
Notes are managed from the **Customer Notes** section on a customer's detail page.
## Adding a Note
Go to **Customers** and open the customer you want to add a note to.
Scroll to **Customer Notes**. A compact preview of your most recent notes appears near the top of the profile; the full list with add/edit/delete controls is further down.
Give the note a **title** and write the **content**. Both are required.
The note appears immediately, newest first, along with a timestamp and your name.
## Editing and Deleting Notes
Each note shows its title, content, creation date, and — if it's been edited — a separate "Updated" timestamp. Use the edit icon to update a note's title or content, or the delete option to remove it. Only notes belonging to customers in your own account are accessible — you can't view or edit notes on another business's customers.
Deleted notes are soft-deleted rather than permanently erased immediately, but they no longer appear anywhere in the interface once removed.
## Who Can See Notes
Any team member with access to the customer can view, add, edit, and delete notes.
Notes are excluded entirely from the customer portal — there is no code path that exposes them to customers.
## FAQ
No. Private notes are staff-only and never rendered anywhere a customer can access.
Yes — there's no limit. Notes are listed newest first, with the three most recent shown as a compact preview at the top of the profile.
Yes, each note displays the name of the team member who created it.
Not on customer notes. If you need to share files internally on a specific case, use an internal note on a [Support Request](/customer-management/support-requests) instead, which supports attachments.
## Next Steps
Use internal notes on tickets for case-specific, attachment-friendly documentation
See other ways PayRequest surfaces context about a customer
Manage customer-specific billing settings
# Support Requests
Source: https://docs.payreque.st/customer-management/support-requests
Manage customer support tickets with email-to-ticket, rich text replies, file attachments, email notifications, and two-way email conversations
# Support Requests 🎫
A built-in ticketing system that lets you manage customer inquiries, complaints, billing questions, and more — all from your PayRequest dashboard. Customers can submit requests from the customer portal, and you can respond with rich text replies that optionally notify them via email.
**All Plans**: Support Requests are available on all plans. Customers submit requests through the customer portal, and you manage them from the **Support Requests** page in your dashboard sidebar.
## 🎯 Overview
Customers submit tickets from the portal or by replying to any email
Customer replies to invoices, orders, or reminders automatically create support tickets
Reply with a rich text editor, insert customer variables, and optionally email the customer
See when customers view their tickets, track conversation history, and monitor resolution
## 📋 Request Types
Support requests are categorized by type to help you triage and filter:
| Type | Use Case |
| - | - |
| **General Support** | General questions and help requests |
| **Billing Question** | Questions about charges, invoices, or payments |
| **Technical Issue** | Problems with portal access, payments, or functionality |
| **Refund Request** | Customer requesting a refund |
| **Complaint** | Formal complaints requiring attention |
| **Pause Subscription** | Request to pause an active subscription |
| **Cancel Subscription** | Request to cancel a subscription with notice period (see [Cancellation Requests](/subscriptions/cancellation-requests)) |
| **Invoice/Order Correction** | Corrections needed on invoices or orders |
| **Feature Request** | Suggestions for improvements |
| **Quote Request** | Custom quote inquiries (legacy category — for new custom-scoped work, sell a [Commission product](/products-and-pricing/commissions) or send a [Quote](/invoices/creating-invoices) instead) |
| **Provider Request** | Requests related to service providers |
## 🚀 Managing Requests
### Request List
Navigate to **Support Requests** in your sidebar to see all tickets. The list page shows:
* **Total count** with status breakdown (Open, In Review, Resolved)
* **Customer avatars** with business/individual badges
* **Status and priority badges** on each card
* **Message preview** (HTML stripped for readability)
* **Conversation count** and last response indicator
### Filtering & Search
Use the filter bar to narrow down requests:
* **Search** — Find by subject, message content, or customer name/email
* **Status** — Open, In Review, Resolved, Rejected, Closed
* **Type** — Filter by any request type
* **Priority** — Low, Medium, High, Urgent
## 💬 Responding to Requests
### Rich Text Editor
The response form includes a full rich text editor with:
* **Formatting** — Bold, italic, underline, strikethrough
* **Lists** — Bullet and numbered lists
* **Blockquote** — For quoting customer messages
* **Links** — Insert clickable links
* **Undo/Redo** — Full history support
**Keyboard Shortcuts**: Use standard shortcuts like `Ctrl+B` for bold, `Ctrl+I` for italic, and `Ctrl+Z` for undo. The editor also supports Markdown notation — type `**text**` for bold, `- ` for bullet lists, etc.
### Insert Variables
Click the **code bracket icon** (`{ }`) in the editor toolbar to quickly insert contextual data at your cursor position:
* **Name** — Customer's display name
* **Email** — Customer's email address
* **Company** — Company name (if business customer)
* **Request ID** — e.g. `#32`
* **Subject** — The request subject line
Inserts the customer's subscription names (up to 3 shown), with amounts displayed for reference
Inserts invoice numbers (up to 3 shown), with amounts displayed for reference
The dropdown also includes a **Business Name** option that inserts your company name.
**Real Values**: Variables insert the actual values (e.g. "Francesco Trovato"), not template placeholders. This makes your replies read naturally.
### Internal Notes
Check **"Internal Note (only visible to admin)"** to add notes that customers cannot see. Internal notes appear with an amber highlight in the conversation and are excluded from the customer portal view.
## 📎 File Attachments
You and your customers can add files to any reply — screenshots, PDFs, invoices, signed documents, anything that helps resolve the ticket. Attachments appear inline in the conversation and are automatically included as real attachments on the reply email.
**Both sides can attach**: Admins upload from the dashboard reply form; customers can attach files when replying from the customer portal.
### Uploading Files
Below the reply editor is a drag-and-drop **Attachments** area. Drop files onto it, or click to browse.
* **Up to 10 files** per reply
* **Maximum 20 MB** per file
* Any file type is accepted — images, PDFs, spreadsheets, ZIPs, etc.
* Remove a queued file by clicking the remove icon on its preview card before sending
### How Attachments Are Shown
In the conversation history:
* **Images** (JPG, PNG, GIF, etc.) are rendered as inline previews — click to open full-size
* **Other files** appear as download cards with filename and size
* Each attachment belongs to a specific reply and shows alongside that message
### Attachments in Emails
When you send a reply with **"Send reply notification to customer via email"** enabled, any files you attached are included as **real email attachments** — the customer receives them directly in their inbox, no portal login needed.
**Email size limits**: Most email providers reject messages over 25–40 MB total. The 20 MB per-file limit gives room for one large attachment plus the email body, but combining many large files in a single reply may cause delivery issues.
### Privacy & Storage
* Files are stored on PayRequest's private object storage with unguessable unique identifiers
* Downloads from the portal or dashboard are routed through an authorized download endpoint that verifies ticket ownership on every request
* Internal notes and their attachments are never visible to customers
* Attachments inherit the ticket's lifecycle — deleting a reply removes its files automatically
## 📧 Email Notifications
### Sending Reply Notifications
When replying to a request (non-internal), you can check **"Send reply notification to customer via email"** to email the customer about your response.
The email includes:
* **Your business logo** at the top
* **Customer greeting** by name
* **Request subject** for context
* **Reply preview** (first 200 characters)
* **"View Full Reply" button** linking to the customer portal
* **Any attachments** you added to the reply, sent as real email attachments
* **Business branding** in the footer
**Enabled by Default**: The email notification checkbox is checked by default for convenience. Uncheck it if you only want to add a reply without notifying the customer.
### Button States
The submit button changes based on your selection:
* **"Add Reply"** — When email notification is unchecked or reply is internal
* **"Send Reply & Email"** — When email notification will be sent
After sending, a confirmation message shows the recipient's email address.
## 📨 Email-to-Ticket (Inbound Email)
Customers can create support tickets simply by **replying to any email** they receive from your business — invoices, payment reminders, order confirmations, subscription notices, and more. No portal login needed.
**How it works**: Every outgoing email includes a Reply-To address at your business's `payreque.st` address (e.g., `yourshop@payreque.st`). When a customer replies, the email is automatically converted into a support ticket.
### Supported Emails
All customer-facing emails include the Reply-To header:
| Email Type | Example |
| - | - |
| New Invoice | Invoice created notification |
| Invoice Paid | Payment confirmation |
| Invoice Reminder | Overdue payment reminders |
| Order Confirmation | New order acknowledgment |
| Order Completed | Order fulfillment notice |
| Payment Link | Smart link sent to customer |
| Payment Reminder | Smart link follow-up |
| Subscription Suspended | Pause/suspension notice |
| Price Increase | Subscription price change |
| Mandate Request | iDEAL mandate setup |
| Mandate Activation | Mandate confirmed |
| Security Deposit | Deposit authorization |
| Debt Collection | Payment collection notices |
| Checkout Recovery | Abandoned cart reminders |
| Portal Notification | Custom portal alerts |
| Support Reply | Your reply to an existing ticket |
### How Tickets Are Created
The customer hits "Reply" on any email from your business and writes their message.
The reply is received at your `payreque.st` address and processed automatically.
The sender's email is matched to an existing customer in your account. If no exact match is found, the system checks for customers with the same email domain (e.g., `jan@company.com` matches `support@company.com`).
A new support ticket is created with the email subject and full message body, set to type **Support** and priority **Medium**.
You receive an email notification about the new ticket with a direct link to your dashboard.
**Domain Matching**: If a customer emails from a different address at the same company domain, the system still matches them. For example, if `support@acme.com` is your customer, an email from `jan@acme.com` will also be matched. Common email providers like Gmail, Outlook, etc. are excluded from domain matching to prevent false matches.
### Reply via Email (Two-Way Conversations)
When you receive a notification about a new ticket, you can **reply directly to the notification email** instead of opening the dashboard. Your reply is automatically added to the ticket conversation and forwarded to the customer.
Similarly, when a customer receives your reply notification, they can reply back by email — their response is appended to the same ticket thread.
**Unknown Senders**: Emails from addresses that don't match any customer in your account are automatically ignored. This prevents spam from creating unwanted tickets.
### Reply-To Address
Your business's Reply-To address is determined automatically:
| Business Type | Reply-To Address |
| - | - |
| **Shop owners** | `{shopname}@payreque.st` |
| **Freelancers** (PayRequest Page) | `{handle}@payreque.st` |
| **Fallback** | `u{userid}@payreque.st` |
**No Setup Required**: The Reply-To address is generated automatically based on your shop name or PayRequest Page handle. No DNS or email configuration needed on your end.
## 👁️ Customer Activity Tracking
### Ticket Views
The timeline automatically tracks when a customer views their support ticket in the portal. This helps you understand engagement:
* **Teal eye icon** in the timeline when the customer opens the ticket
* **Throttled to once per hour** — repeated page refreshes don't create duplicate entries
* Shows the exact timestamp of each view
### Timeline
The sidebar timeline shows a chronological feed of all activity on a request:
| Event | Icon | Color |
| - | - | - |
| Request created | Dot | Green |
| Customer reply | Dot | Gray |
| Admin response | Dot | Blue |
| Internal note | Dot | Amber |
| Email sent to customer | Envelope | Indigo |
| Customer viewed request | Eye | Teal |
Up to 15 events are shown, with a summary if there are more.
## 🔄 Request Lifecycle
Customer creates a ticket from the portal, or by replying to any business email. Status: **Open**. You receive an email notification.
View the request details, customer info, and any related records. Change status to **In Review**
Write a reply using the rich text editor, insert relevant variables, and optionally send an email notification
Customer sees your reply in the portal (tracked in timeline). They can add follow-up replies which reopen closed tickets
Mark the request as **Resolved** when the issue is addressed, or **Closed** when no further action is needed
### Status Flow
```
Open → In Review → Resolved
→ Rejected
→ Closed
```
**Auto-Reopen**: If a customer replies to a resolved or closed ticket, it automatically reopens with status **Open** so you don't miss follow-ups.
## 📊 Request Detail Page
### Main Content Area
The detail page has a two-column layout:
**Left Column (2/3 width):**
* Original request message (rendered with full HTML formatting)
* Related record link (if linked to an invoice, order, or subscription)
* Full conversation history with color-coded messages
* Reply form with rich text editor
**Right Column (1/3 width):**
* Customer card with avatar, name, email, phone, company
* Status and priority management dropdowns
* Activity timeline
### Related Record Popover
When a request is linked to a subscription, hovering over the related record badge shows a detailed popover with:
* **Subscription name** and ID
* **Status badge** (active, cancelled, etc.)
* **Amount and billing interval** (e.g. €9.25 / month)
* **Next billing date** and creation date
* **Cancellation details** if a cancellation is pending (requested date, effective date, reason)
* **Quick link** to the full subscription detail page
For invoices and orders, the link shows the invoice number or order number alongside the ID.
### Cancellation Decision Actions
When viewing a **Cancel Subscription** request, the detail page shows a dedicated **Cancellation Decision** panel with the customer's requested effective date and two action buttons:
* **Approve & Cancel** — Cancels the subscription immediately and marks the request as resolved
* **Reject & Keep Active** — Clears the cancellation from the subscription and marks the request as rejected
These actions are only visible while the request is still open or in review. Once resolved or closed, the buttons are hidden.
### Quick Actions
Action buttons at the top of the page let you quickly:
* **Mark In Review** — Acknowledge you're looking into it
* **Mark as Resolved** — Issue has been addressed
* **Close Request** — No further action needed
## 🎨 Customer Portal Experience
Customers interact with support through the portal at `/shop/{storename}/support`:
* **View all their tickets** with status badges and filtering
* **Create new tickets** with subject, message, type, and priority
* **Reply to existing tickets** (automatically reopens closed tickets)
* **Attach files** to replies — same 10 files / 20 MB limits as the admin side
* **See admin responses** (internal notes are hidden)
* **Download attachments** sent by your team through a secure, ticket-scoped link
When creating a request with type **Cancel Subscription** or **Pause Subscription**, the form automatically selects "Subscription" as the related record type and requires the customer to choose which subscription the request is about. The dropdown shows subscription names with amounts and status for easy identification.
**Custom Domains**: Support works on custom domains too. If your shop uses `shop.yourbusiness.com`, support is available at `shop.yourbusiness.com/support`.
## 💡 Best Practices
* Acknowledge requests within 4 hours
* Use "In Review" status to signal you're on it
* Use internal notes to document your investigation
* Send email notifications for important updates
* Use the variable inserter for consistent, personalized replies
* Reference specific subscription or invoice details
* Include next steps or expected timelines
* Use formatting to highlight key information
## 🎓 Next Steps
Sell custom-scoped creative and freelance work with a starting price
See the full customer portal experience including support integration
Set up in-portal notifications for your customers
Configure your email settings for support notifications
# Tax Exemptions
Source: https://docs.payreque.st/customer-management/tax-exemptions
Manage tax-exempt status for B2B customers, non-profits, and international clients
# Tax Exemptions
Tax exemptions allow you to process orders and invoices without charging VAT/BTW for qualifying customers. This is essential for B2B transactions within the EU, exports, and dealings with non-profit organizations.
## Who Qualifies for Tax Exemption?
Businesses in other EU countries with valid VAT numbers qualify for reverse charge (BTW Verlegd).
Customers outside the EU are exempt from Dutch/EU VAT on exports.
Certain registered non-profits and charities may qualify for tax exemption.
Government organizations and public institutions may be exempt from VAT.
## Enabling Tax Exemption
### For Individual Customers
Navigate to **Customers** in your dashboard and click on the customer you want to update.
In the customer details panel, look for the **Tax Exempt** toggle in the business information section.
Toggle the switch to enable tax exemption. The customer will now receive 0% tax on all future invoices and orders.
Add a **Private Note** explaining why this customer is exempt (e.g., "EU VAT number verified: DE123456789").
Tax exemption applies immediately. Any new invoices or orders for this customer will automatically have 0% tax.
### Using Bulk Actions
To update multiple customers at once:
1. Go to **Customers**
2. Check the boxes next to customers you want to update
3. Click **Bulk Actions** button
4. Select **Toggle Tax Exempt**
5. Confirm the action
All selected customers will have their tax exemption status toggled.
## Visual Indicators
PayRequest makes it easy to identify tax-exempt customers:
### In Customer Lists
Tax-exempt customers display a badge:
* **Tax Exempt**: Green badge indicating exemption is active
* **Standard Tax**: Gray badge (or no badge) for regular customers
### On Customer Detail Pages
The customer profile shows:
* Tax exemption toggle status
* Country information (relevant for EU VAT rules)
* VAT number if stored
### On Invoices
When creating invoices for tax-exempt customers:
* All line items show **0%** tax rate
* Invoice displays **"BTW VERLEGD"** (Tax Reversed)
* Total excludes tax automatically
## How Tax Exemption Affects Different Areas
### Shopping Cart & Checkout
When a tax-exempt customer shops in your store:
| Without Exemption | With Exemption |
| - | - |
| Product: €100.00 | Product: €100.00 |
| BTW (21%): €21.00 | BTW (0%): €0.00 |
| **Total: €121.00** | **Total: €100.00** |
The cart automatically detects the customer's exemption status and adjusts calculations.
### Invoice Creation
When creating an invoice for a tax-exempt customer:
1. System automatically sets tax rate to 0% for all items
2. Invoice header/footer can show "BTW Verlegd" note
3. No manual intervention needed
### Subscriptions
Existing subscriptions for a customer who becomes tax-exempt:
* Future billing cycles will use 0% tax
* Past invoices remain unchanged (for audit purposes)
* Recurring amount stays the same (customer saves the tax portion)
### Orders
New orders placed by tax-exempt customers:
* Order total calculated without tax
* Order confirmation shows 0% tax breakdown
* OrderItems stored with 0% tax rate
## VAT Number Storage
For EU B2B customers, store their VAT number for compliance:
### Adding VAT Information
1. Open the customer profile
2. Navigate to **Business Information** section
3. Enter:
* **VAT Number**: The customer's EU VAT number (e.g., DE123456789)
* **Country**: The customer's country
* **Company Name**: Legal business name
Always verify VAT numbers before applying tax exemption. Use the EU's [VIES VAT validation service](https://ec.europa.eu/taxation_customs/vies/) to check validity.
### VAT Number Validation
PayRequest stores validation information:
* `vat_number_valid`: Whether the number passed validation
* `vat_number_validated_at`: When validation was performed
* `vat_company_name`: Company name returned by validation
* `vat_company_address`: Address returned by validation
Keep records of your VAT validations. Tax authorities may request proof that you verified customer VAT numbers before applying reverse charge.
## Reverse Charge (BTW Verlegd)
When selling to EU businesses with valid VAT numbers, the reverse charge mechanism applies:
### How It Works
1. **You sell** to an EU business (not in your country)
2. **You verify** their VAT number is valid
3. **You mark them** as tax exempt in PayRequest
4. **You invoice** them at 0% VAT
5. **Invoice shows** "BTW Verlegd" or "Reverse Charge VAT"
6. **Customer accounts** for VAT in their own country
### Requirements for Reverse Charge
To legally apply reverse charge, you must:
Validate the customer's EU VAT number through VIES or similar service.
The customer must be in a different EU country than your business.
The transaction must be business-to-business, not B2C.
Invoice must mention "Reverse Charge" or "BTW Verlegd" and show 0% VAT.
### Invoice Requirements
For reverse charge invoices, ensure your invoice shows:
* Your VAT number
* Customer's VAT number
* Text: "BTW verlegd" or "VAT reverse charge applies"
* 0% VAT rate on all items
## Export Sales (Outside EU)
For customers outside the European Union:
### Automatic Detection
PayRequest recognizes non-EU countries and can apply 0% tax for exports.
### Manual Setup
1. Set customer's **Country** to their non-EU location
2. Mark customer as **Tax Exempt**
3. Add note: "Export - customer outside EU"
### Export Invoice Requirements
Your export invoices should include:
* Clear indication this is an export sale
* Customer's full address (outside EU)
* 0% VAT rate with explanation
## Best Practices
For each tax-exempt customer, record:
* Why they qualify for exemption
* Date exemption was verified
* VAT number validation results (for EU businesses)
* Any supporting documentation received
Use Private Notes on customer profiles to store this information.
VAT numbers can become invalid. Schedule periodic reviews:
* Revalidate EU VAT numbers annually
* Check if business customers are still operating
* Verify non-profits maintain their exempt status
Ensure anyone creating invoices understands:
* How to verify VAT numbers
* When to apply tax exemption
* What documentation to collect
* How to handle edge cases
PayRequest maintains an activity log of changes. Keep your records up to date:
* Note when exemption was enabled/disabled
* Record reasons for changes
* Store validation screenshots or exports from VIES
## Frequently Asked Questions
Tax exemption only applies to new invoices and orders. Past invoices are not automatically updated (this is correct for accounting purposes). If you need to correct a past invoice, you may need to issue a credit note and new invoice.
If you're notified that a customer's VAT number is no longer valid:
1. Disable their tax exemption
2. Contact the customer to verify their VAT status
3. Re-enable only after confirming a valid number
4. Document the change in their profile
Tax exemption is applied at the customer level, not product level. When a customer is tax exempt, all products they purchase are at 0% tax. If you need per-product rules, consider creating separate customer records or using different product variants.
If you toggle tax exemption for a customer with active subscriptions:
* **Enabling**: Future billing cycles will be at 0% tax
* **Disabling**: Future billing cycles will include tax at the product's rate
The change takes effect on the next billing cycle.
While PayRequest handles the tax calculation, you should maintain proof of export (shipping documentation, delivery confirmations) for your records. Tax authorities may request this during audits.
## Compliance Checklist
Before applying tax exemption, verify:
Does the customer legally qualify for tax exemption?
Do you have the required documentation (VAT number, export proof, etc.)?
Have you validated any VAT numbers through official channels?
Have you recorded the exemption reason in the customer profile?
## Related Documentation
Complete guide to tax configuration in PayRequest
Managing customer information and settings
How to create invoices with proper tax handling
Update multiple customers at once
***
Tax exemption rules are complex and vary by jurisdiction. This documentation covers PayRequest's features. Consult with a tax professional for advice specific to your business situation.
# Creating Collection Cases
Source: https://docs.payreque.st/debt-collection/creating-cases
How to create debt collection cases from overdue invoices or external debts
# Creating Collection Cases
You can create collection cases in two ways: from an existing overdue invoice, or as an external debt for amounts not tied to an invoice in PayRequest.
## Creating a Case from an Invoice
This is the most common way to start a collection. When an invoice is overdue and regular payment reminders haven't worked, you can escalate it to a formal collection case.
### Navigate to Debt Collection
Go to **Debt Collection** in your dashboard sidebar, then click **Create Case**.
### Select "From Invoice"
The default tab lets you create a case from an existing invoice.
### Choose the Invoice
Use the dropdown to select the overdue invoice. Only unpaid invoices are shown. You'll see the invoice number, customer name, and amount.
### Add Internal Notes (Optional)
Add any context about the case — previous communication attempts, customer responses, or special circumstances. These notes are only visible to you, never to the customer.
### Enable Pre-Incasso (Optional)
Toggle **Pre-Incasso** on if you want to start with a soft, informal reminder (Stage 0) before beginning formal collection. This gives the customer one more chance to pay without the pressure of formal notices.
### Create the Case
Click **Create Case**. The system will:
* Create a new collection case with a unique case number (e.g., `DC-2026-001`)
* Link it to the invoice and customer
* Set the stage to **Stage 0: Pre-Collection** (if pre-incasso is enabled) or **Stage 1: Friendly Reminder**
* Record the original invoice amount as the case amount
Each invoice can only have one active collection case. If you try to create a case for an invoice that already has one, you'll see a warning.
## Creating a Case for an External Debt
Sometimes you need to collect on debts that aren't tracked as invoices in PayRequest — for example, an outstanding balance from another system, a verbal agreement, or a service provided outside your normal invoicing flow.
### Navigate to Debt Collection
Go to **Debt Collection** in your dashboard sidebar, then click **Create Case**.
### Select "External Debt"
Switch to the **External Debt** tab.
### Fill in the Details
| Field | Description |
| - | - |
| **Customer** | Select an existing customer from the dropdown |
| **Description** | What the debt is for (becomes the invoice line item) |
| **Amount** | The total amount owed |
| **Due Date** | The original due date (must be in the past) |
| **Currency** | EUR by default |
| **Notes** | Optional internal notes about the case |
### Enable Pre-Incasso (Optional)
Toggle **Pre-Incasso** on to start with a gentle reminder before formal collection.
### Create the Case
Click **Create Case**. The system will:
* Automatically create an invoice with the amount and description
* Create a collection case linked to this new invoice
* Set the stage to **Stage 0: Pre-Collection** (if pre-incasso) or **Stage 1: Friendly Reminder**
The automatically created invoice works just like any other invoice in PayRequest. Customers can pay it through the payment page, customer portal, or via a payment link you share.
## After Creating a Case
Once a case is created, you can:
* **Send a reminder email** — Notify the customer about the outstanding amount
* **Send a postal letter** — Mail a physical collection letter via Pingen
* **Pause the case** — Temporarily suspend escalation while negotiating
* **Register payments** — Record bank transfers, cash, or other payments received
* **View the case** — See all details, payment history, and activity timeline
* **Configure settings** — Set the language, enable payment plan requests, and manage case-specific options
### Case Settings
On the case detail page, you'll find a **Case Settings** card where you can configure:
* **Language** — Set the language for all communication with this customer (Dutch or English)
* **Allow installment requests** — Let the customer request a payment plan from the portal
## What Happens Next
After creating the case, your next step depends on your recovery strategy:
1. **Immediate action**: Send a reminder email right away to notify the customer
2. **Wait for automation**: Let the automated escalation handle it based on your schedule
3. **Personal approach**: Contact the customer directly, then use the case to track the outcome
Learn about the 4 stages and automated progression
Set up installment plans for customers
# Escalation Pipeline
Source: https://docs.payreque.st/debt-collection/escalation-pipeline
How the 5-stage collection pipeline works and how cases are escalated automatically
# Escalation Pipeline
Every collection case follows up to 5 stages. Each stage increases the urgency of communication and can add collection fees to the outstanding balance. You can escalate cases manually or let PayRequest handle it automatically.
## The Stages
### Stage 0: Pre-Collection (Optional)
A soft, informal reminder before formal collection begins. Enable this by toggling **Pre-Incasso** when creating the case.
**Tone:** Gentle and friendly
**Message:** "We would like to kindly remind you that the following invoice is still open."
* No collection fees
* Ideal for first-time late payers
* Automatically escalates to Stage 1 the next time daily automatic escalation runs after the invoice is overdue — there is no fixed grace period, so keep a case in Pre-Collection only as long as you're actively working it manually
* Gray/neutral presentation in the customer portal
Pre-incasso is free and non-threatening. Use it to give customers one final chance before starting formal collection.
### Stage 1: Friendly Reminder
The first contact assumes the customer simply forgot or overlooked the invoice.
**Tone:** Polite and helpful
**Message:** "You have an outstanding invoice that requires your attention. Please arrange payment to avoid further action."
* No collection fees added
* Email reminder sent
* Customer sees a gentle warning in the portal
### Stage 2: Formal Notice
A more formal communication setting a clear deadline for payment.
**Tone:** Professional and firm
**Message:** "This is a formal notice regarding your outstanding payment. Please settle this amount within 7 days."
* No collection fees added (optional at your discretion)
* Postal letter recommended at this stage
* Customer portal shows formal notice banner
### Stage 3: Collection Fees
At this stage, collection fees can be added to cover your recovery costs.
**Tone:** Firm and direct
**Message:** "Collection fees have been added to your outstanding balance. Please pay the total amount immediately."
* **Collection fees added** to the balance
* The customer sees the original amount + collection fee in the portal
* Payment pages show the total including fees
* Postal letter sent automatically (if Pingen is configured)
### Stage 4: Final Warning
The last stage before further consequences (legal action, external collection agency, etc.).
**Tone:** Urgent
**Message:** "This is your final warning. Immediate payment is required to avoid further consequences."
* Maximum urgency in all communication
* Customer portal shows a red warning banner
* All payment links reflect the full amount including fees
## Visual Progress
Customers see a progress bar in the Customer Portal showing how far along the collection process they are:
| Stage | Color | Label |
| - | - | - |
| 0 | Gray | Pre-Collection |
| 1 | Blue | Reminder |
| 2 | Amber | Formal Notice |
| 3 | Orange | Collection Fees |
| 4 | Red | Final Warning |
This helps customers understand the seriousness of the situation and motivates earlier payment.
## Adding Collection Fees
You can add a collection fee at any stage, though it's most common at Stage 3.
1. Open the case detail page
2. Find the **Amount Breakdown** section
3. Enter the collection fee amount
4. Click **Update Fee**
The fee is immediately reflected:
* In the case total
* On the customer portal
* On the payment page
* In postal letters and email reminders
In the Netherlands, collection fee guidelines (WIK/BIK) suggest fees proportional to the original amount. For example, up to 15% on the first EUR 2,500. Check your local regulations.
## Manual Escalation
To manually move a case to the next stage:
1. Open the case detail page
2. Click the **Escalate** button in the case header
3. The case moves to the next stage immediately
4. You can then send a reminder with the new stage's messaging
Escalation cannot be reversed. Once a case moves to the next stage, it stays there. Make sure you're ready before escalating.
## Automatic Escalation
PayRequest can automatically escalate cases based on how many days they've been overdue. This runs daily and processes all active cases.
**Stage thresholds (by total days overdue):**
| Days Overdue | Target Stage |
| - | - |
| 0–7 days | Stage 1 (Friendly Reminder) |
| 8–21 days | Stage 2 (Formal Notice) |
| 22–30 days | Stage 3 (Collection Fees) |
| 31+ days | Stage 4 (Final Warning) |
Each daily run recalculates the correct stage directly from the case's total days overdue — it does not step through stages one at a time. If a case is missed for a while (for example, it was paused) and comes back with 35 days overdue, it can jump straight from Stage 1 all the way to Stage 4 in a single run, skipping Stages 2 and 3.
When a case is automatically escalated:
* The stage is updated
* A reminder email is sent to the customer
* A postal letter is sent (if Pingen is configured, at Stage 2+)
* The escalation is logged in the activity timeline
Automatic escalation only runs for **active** cases. Paused cases, cases with payment plans, paid cases, and closed cases are all skipped. When you resume a paused case, it catches up automatically if enough time has passed.
## Sending Reminders
At any stage, you can send a reminder to the customer:
### Email Reminders
Click **Send Reminder** on the case detail page to send an email. The email content automatically matches the current stage — no need to write the message yourself.
### Postal Letters
Click **Send Postal Letter** to mail a physical letter via Pingen. The letter includes your business details, the customer's address, the amount breakdown, and a QR code for quick payment. See [Postal Letters](/debt-collection/postal-letters) for details.
## Resolving Cases
A case can be resolved in several ways:
| Resolution | How It Happens |
| - | - |
| **Paid** | Customer pays the full amount (auto-detected via payment webhook) |
| **Manual Payments** | You register partial payments until the balance is covered |
| **Remission** | You register partial payment(s) then waive the remaining balance |
| **Payment Plan Completed** | All installments paid (auto-closed) |
| **Manually Closed** | You close the case from the dashboard |
| **Cancelled** | You cancel the case with a reason |
## Best Practices
Don't escalate too quickly. Allow at least 14 days between stages so customers have a realistic chance to arrange payment.
Customers need to know their case has been escalated. Always send a reminder (email or postal) when moving to a new stage.
Physical letters carry more weight than emails. Starting postal communication at Stage 2 (Formal Notice) shows you're serious about recovery.
Before reaching the Final Warning, consider offering a payment plan. Collecting in installments is usually better than not collecting at all.
Document any phone calls, customer responses, or agreements in the case's internal notes. This creates a clear record if you need to involve a legal advisor later.
## Related Documentation
How to open a new collection case
Set up installment plans for customers
Send physical letters via Pingen
Back to the overview
# Managing Cases
Source: https://docs.payreque.st/debt-collection/managing-cases
Pause and resume collection cases, register manual payments, and waive remaining balances
# Managing Cases
Once a collection case is open, you have full control over how it progresses. Pause cases when a customer is negotiating, register payments received outside PayRequest, or waive remaining balances when you've agreed on a settlement.
These features work for both invoice-based cases and external debt cases. You can manage any active or paused case from the case detail page.
## Key Capabilities
Temporarily suspend automated escalation while you negotiate with the customer
Register payments received via bank transfer, cash, or other channels
Write off the remaining balance when you've agreed on a settlement (kwijtschelding)
Every action is logged in a unified timeline — emails, letters, payments, stage changes
## Pause & Resume
Sometimes you need to put a case on hold — for example, while negotiating a payment arrangement, waiting for a customer response, or during a dispute review.
### Pausing a Case
### Open the Case
Navigate to **Debt Collection** and click on the case you want to pause.
### Click Pause
In the **Actions** card on the right sidebar, click **Pause**. Confirm the action.
### Case is Paused
The case status changes to **Paused** (purple badge). A purple banner appears at the top of the case.
**What happens when a case is paused:**
* Automated escalation is suspended — the case won't progress to the next stage
* Daily processing skips the case entirely
* The customer portal shows a "Case On Hold" message
* You can still send reminders, register payments, and add notes
* The payment link remains active — the customer can still pay at any time
### Resuming a Case
Click **Resume** on the purple banner (or from the paused case list). The case returns to **Active** status and:
* Days overdue are recalculated based on the current date
* If enough time has passed, the case may automatically escalate to the next stage
* Automated processing resumes from the next daily run
Use pause strategically. If a customer promises to pay within a week, pause the case to show good faith. If they don't follow through, resume and escalate.
### Filtering Paused Cases
On the Debt Collection overview, use the **Status** filter and select **Paused** to see all cases currently on hold.
## Registering Payments
When a customer pays outside of PayRequest — via direct bank transfer, cash, or another channel — you can register the payment manually to keep the case up to date.
### Register a Payment
### Open the Case
Navigate to the collection case detail page.
### Find the Register Payment Section
Below the amount breakdown, you'll see the **Register Payment** form (only visible for active or paused cases with a remaining balance).
### Fill in the Details
| Field | Description |
| - | - |
| **Amount** | How much was paid (cannot exceed remaining balance) |
| **Date** | When the payment was received |
| **Method** | Bank Transfer, Cash, or Other |
| **Note** | Optional note about the payment (e.g., reference number) |
### Click Register Payment
The payment is recorded and the amount breakdown updates immediately.
### Amount Breakdown
When partial payments are registered, the case detail page shows a clear breakdown:
| Line | Example |
| - | - |
| Original Amount | EUR 1,000.00 |
| Collection Fee | EUR 40.00 |
| **Total Due** | **EUR 1,040.00** |
| Amount Paid | - EUR 500.00 |
| **Remaining** | **EUR 540.00** |
This breakdown is also visible to the customer in the portal and on payment pages.
### Automatic Case Closure
When the total amount paid reaches or exceeds the total due, the case is **automatically marked as paid**. No manual action needed.
### Payment History
All registered payments appear in the **Payment History** table on the case detail page, showing the date, amount, method, and any notes for each payment.
## Waiving the Remaining Balance
Sometimes you agree to accept less than the full amount — a settlement, goodwill gesture, or recognition that the full debt won't be recovered. In Dutch collection practice, this is called **kwijtschelding** (remission).
### Register Partial Payment(s) First
Register any actual payments you've received. The remaining balance will be calculated automatically.
### Click Waive Remaining
Below the Register Payment button, click **Waive Remaining**. You'll see a confirmation dialog showing the exact amount that will be waived.
### Confirm the Waiver
The remaining balance is recorded as a "remission" entry in the payment history, and the case is marked as **Paid**.
Waiving a balance is permanent. The case will be closed as paid and cannot be reopened. Make sure you've received all expected payments before waiving.
The waived amount appears in the payment history with a purple **waived** label, so you always have a clear record of what was actually paid versus what was written off.
## Pre-Collection Stage (Pre-Incasso)
Before starting formal debt collection, you can send a free, informal reminder — the **Pre-Collection** stage. This is a soft first step that often resolves the payment without any formal collection process.
### How It Works
When creating a new collection case, toggle **Pre-Incasso** on. The case starts at **Stage 0: Pre-Collection** instead of Stage 1.
**Stage 0 characteristics:**
* Softer, more friendly communication tone
* No collection fees added
* Gray/neutral color in the portal (less alarming for customers)
* Emails and letters use gentle reminder language
* After 14 days without payment, the case automatically escalates to Stage 1
Pre-incasso is ideal when you want to give customers one final chance before starting formal collection. It's free, non-threatening, and often resolves the issue without needing the full pipeline.
### Stage Overview (Including Pre-Collection)
| Stage | Name | Tone | Fees |
| - | - | - | - |
| 0 | Pre-Collection | Gentle, assumes oversight | None |
| 1 | Friendly Reminder | Polite, clear request | None |
| 2 | Formal Notice | Professional, sets deadline | None |
| 3 | Collection Fees | Firm, fees applied | Yes |
| 4 | Final Warning | Urgent, final chance | Yes |
## Activity Timeline
Every action on a case is recorded in a unified timeline on the right sidebar of the case detail page. The timeline combines:
* **Stage changes** — When the case moves to a new stage (with colored badges)
* **Emails sent** — Each reminder email, with timestamp
* **Letters sent** — Postal letters uploaded to Pingen
* **Payments registered** — Manual payment registrations
* **Balance waived** — Remission entries
* **Case created, paused, resumed, cancelled, closed** — All status changes
* **Notes added** — Internal notes you add to the case
Events are sorted newest-first, with color-coded dots for quick scanning.
## Best Practices
If a customer has a good payment history and is late for the first time, start with pre-incasso. A gentle nudge is usually enough.
Before adding collection fees, pause the case and reach out to the customer directly. Many disputes and arrangements happen at this stage.
Tracking every payment builds a clear record. If you ever need to involve a legal advisor, a complete payment history is invaluable.
When you agree to a payment arrangement or partial settlement, document it in the case notes. This protects both you and the customer.
If recovery costs would exceed the remaining balance, it's often more practical to waive the amount and close the case. Focus your energy on cases with better recovery potential.
## FAQs
Yes. You can register payments on both active and paused cases. If the registered amount covers the full balance, the case is automatically marked as paid regardless of its current status.
The payment plan continues independently — pausing the case only stops automated escalation. If you need to pause the plan too, cancel it separately.
Yes. The payment link remains active and the **Pay Now** button is visible in the customer portal. Pausing only affects automated processing, not the customer's ability to pay.
The customer sees the case as paid. The internal payment history (visible only to you) shows the breakdown of actual payments versus waived amounts.
Yes. Pre-incasso is optional. When creating a case, simply leave the **Pre-Incasso** toggle off. The case will start at Stage 1 (Friendly Reminder) as before.
## Related Documentation
How to open a new collection case with or without pre-incasso
Understand the full 5-stage escalation process
Set up installment plans for structured repayment
Back to the overview
# Debt Collection
Source: https://docs.payreque.st/debt-collection/overview
Recover unpaid invoices with automated collection workflows, escalation stages, and payment plans
# Debt Collection
Stop chasing unpaid invoices manually. PayRequest's Debt Collection feature gives you a professional, structured approach to recovering overdue payments — from friendly reminders all the way to formal notices and postal letters.
Debt Collection works alongside your existing invoicing system. When an invoice goes unpaid past its due date, you can open a collection case to start the recovery process.
## Key Features
* **5-Stage Escalation Pipeline** — Start with a soft pre-collection reminder, then progress through four formal stages
* **Pre-Incasso (Stage 0)** — Free, informal reminder before starting formal collection
* **Automated Escalation** — Cases automatically progress through stages based on your schedule
* **Pause & Resume** — Temporarily suspend a case while negotiating, then pick up where you left off
* **Partial Payments** — Register payments received via bank transfer, cash, or other channels
* **Waive Balance (Kwijtschelding)** — Write off the remaining balance when you've agreed on a settlement
* **Collection Fees** — Add collection fees at later stages to cover recovery costs
* **Payment Plans** — Let customers pay in installments when they can't pay the full amount at once
* **Postal Letters** — Send physical collection letters via Pingen for formal notices
* **Customer Portal** — Customers can view their case, pay directly, or request a payment plan
* **External Debts** — Create collection cases for debts not tied to existing invoices
* **Activity Timeline** — Unified audit trail of every action, email, letter, payment, and status change
## When to Use Debt Collection
Debt Collection is designed for invoices that remain unpaid after your regular payment reminders haven't worked.
**Typical workflow:**
1. Invoice is sent to customer
2. Payment reminders are sent automatically (3 days before, 7 days after due date)
3. Customer still hasn't paid after 14+ days
4. **Open a collection case** to start formal recovery
Don't start collection too early. Give customers at least 14 days past the due date before opening a case. Most late payments are resolved with regular reminders.
## How It Works
### 1. Create a Case
Open a collection case from an overdue invoice or create one for an external debt. The case tracks everything: the original amount, any collection fees, payment attempts, and communication history.
### 2. Escalate Through Stages
Each case can progress through up to five stages, each with increasingly urgent communication:
| Stage | Name | Tone |
| - | - | - |
| 0 | Pre-Collection (optional) | Gentle, informal reminder |
| 1 | Friendly Reminder | Polite, assumes oversight |
| 2 | Formal Notice | Professional, sets deadline |
| 3 | Collection Fees | Firm, fees added to balance |
| 4 | Final Warning | Urgent, last chance before further action |
### 3. Communicate with Customers
At each stage, you can send email reminders or physical postal letters. Customers also see their case in the Customer Portal where they can pay directly or request a payment plan.
### 4. Track Payments
Register partial payments received via bank transfer or cash. The amount breakdown updates in real-time, and when the full balance is covered, the case closes automatically. You can also waive the remaining balance for settlements.
### 5. Resolve the Case
Cases are resolved when the customer pays the full amount (including any collection fees), when you waive the remaining balance, or when all payment plan installments are completed.
## Dashboard Overview
Your Debt Collection dashboard shows all active cases at a glance:
* **Case number** and linked invoice
* **Customer name** and contact details
* **Current stage** with visual progress indicator
* **Total amount due** (original + collection fees) and remaining balance
* **Days overdue** count
* **Quick actions** — send reminder, escalate, pause, view details
## What Customers See
When you open a collection case, your customer can view it in the Customer Portal:
* A clear warning banner explaining the situation
* Case details (case number, invoice, due date, days overdue)
* Amount breakdown (original amount + any collection fees)
* Stage progress indicator
* **Pay Now** button to settle immediately
* Option to **request a payment plan** (if you've enabled this)
Collection cases are visible to customers in their portal. Make sure you're ready to proceed before creating a case.
## Getting Started
Learn how to create collection cases from invoices or external debts
Understand the 5-stage escalation process and automation
Set up installment plans for customers who can't pay at once
Pause, resume, register payments, and waive balances
Send physical collection letters via Pingen
## FAQs
Yes. Postal letters are optional. You can run the full collection pipeline using only email communication and the customer portal.
Creating a case does not automatically notify the customer. You choose when to send the first reminder — either by email or postal letter.
Yes. At Stage 3 (Collection Fees) and Stage 4 (Final Warning), you can add a fee to the outstanding balance. The fee is shown separately in the customer portal and on payment pages.
When the linked invoice is paid (including any collection fees), the case is automatically marked as paid and closed. You can also register manual payments for bank transfers or cash received outside PayRequest.
Yes. You can close a case manually, waive the remaining balance (kwijtschelding), or cancel the case from the detail page.
Yes. Pausing suspends automated escalation while keeping the payment link active. This is useful when negotiating with the customer. Resume the case at any time to continue the collection process.
## Related Documentation
* [Payment Reminders](/invoices/payment-reminders) — Automated invoice reminders (before collection)
* [Failed Payment Handling](/subscriptions/failed-payment-handling) — Automatic retry for failed subscription payments
* [Handling Chargebacks](/payment-processing/handling-chargebacks) — Managing SEPA chargebacks
* [Customer Portal](/customer-management/customer-portal) — What your customers see
# Payment Plans
Source: https://docs.payreque.st/debt-collection/payment-plans
Let customers pay outstanding debts in monthly installments with structured payment plans
# Payment Plans
Sometimes customers want to pay but can't afford the full amount at once. Payment plans let you split the outstanding debt into monthly installments, making it easier for customers to settle their balance while ensuring you get paid.
Payment plans use PayRequest's built-in subscription system. Each installment is billed automatically — no manual follow-up needed.
## How Payment Plans Work
1. A collection case exists with an outstanding amount
2. You create a payment plan (or the customer requests one)
3. The total amount is divided into equal monthly installments
4. PayRequest creates a subscription that bills the customer each month
5. When all installments are paid, the collection case is automatically closed
## Creating a Payment Plan
### From the Dashboard
### Open the Collection Case
Navigate to **Debt Collection** and click on the case you want to set up a plan for.
### Find the Payment Plan Section
In the case detail view, scroll to the **Payment Plan** section.
### Choose the Number of Installments
Select how many monthly installments the customer should pay. Available options:
| Installments | Example (EUR 600 debt) |
| - | - |
| **2 months** | EUR 300.00/month |
| **3 months** | EUR 200.00/month |
| **6 months** | EUR 100.00/month |
| **12 months** | EUR 50.00/month |
The monthly amount is calculated automatically based on the total amount due (including any collection fees).
### Create the Plan
Click **Create Plan**. PayRequest will:
* Create a monthly subscription for the installment amount
* Link it to the collection case
* Set the status to **Pending Mandate** (waiting for the customer to authorize payments)
The customer needs to set up a payment mandate (SEPA Direct Debit authorization) before installments can begin. They'll receive instructions to do this.
### Customer-Initiated Requests
You can also let customers request a payment plan themselves from the Customer Portal.
#### Enabling Customer Requests
1. Open the collection case detail page
2. Go to **Case Settings**
3. Toggle **Allow installment requests** on
When enabled, the customer sees a **Request Installments** button on their collection case page.
#### What Customers See
Customers can:
1. Click **Request Installments**
2. Choose their preferred number of installments (2, 3, 6, or 12)
3. See the monthly payment amount for each option
4. Review a summary (total amount, monthly payment, duration)
5. Submit the request
Customer requests don't create the plan automatically. You receive a notification and can review the request before setting up the actual plan. This gives you full control over the terms.
#### Reviewing Customer Requests
When a customer submits a payment plan request:
* A note is added to the case's internal notes with the requested terms
* An activity log entry is created
* You can then create the plan from the dashboard (or contact the customer to discuss)
## Tracking Payment Progress
Once a payment plan is active, you can track its progress:
### Dashboard View
On the case detail page, the Payment Plan section shows:
* **Progress bar** — Visual indicator of completion (e.g., 2 of 6 installments paid)
* **Amount per installment** — How much is charged each month
* **Interval** — Monthly billing cycle
* **Next payment date** — When the next installment will be charged
* **Subscription status** — Active, Pending Mandate, or Completed
### Customer Portal View
Customers see the same information in their portal:
* Progress bar with installment count
* Monthly payment amount
* Next payment date
* Overall plan status
## Payment Plan Lifecycle
```
Plan Created → Pending Mandate → Active → Completed → Case Closed
```
| Status | What It Means |
| - | - |
| **Pending Mandate** | Waiting for customer to authorize SEPA payments |
| **Active** | Installments are being charged automatically |
| **Completed** | All installments paid — case automatically closed |
| **Cancelled** | Plan was cancelled before completion |
## Automatic Case Closure
When the final installment is paid:
1. The subscription is marked as **Completed**
2. The collection case is automatically marked as **Paid**
3. No manual action needed — everything happens automatically
This only works when the payment plan covers the full outstanding amount. If there's a remaining balance (due to rounding), you may need to manually close the case.
## Cancelling a Payment Plan
If you need to cancel an active payment plan:
1. Open the collection case
2. Find the Payment Plan section
3. Click **Cancel Plan**
This cancels the subscription but keeps the collection case open. You can then:
* Create a new plan with different terms
* Continue with regular collection stages
* Negotiate a different arrangement with the customer
## Best Practices
Don't wait for the customer to ask. At Stage 2 or 3, consider proactively suggesting a payment plan. This shows flexibility and often leads to faster recovery.
Choose a number of installments that balances your cash flow needs with the customer's ability to pay. A plan the customer can't afford will just lead to more failed payments.
For larger amounts, enabling the "Allow installment requests" toggle lets customers take the initiative. This reduces back-and-forth communication.
Check the status of active payment plans regularly. If an installment fails, you'll want to follow up quickly before the customer falls further behind.
## FAQs
Not directly. Cancel the current plan and create a new one with different terms.
The standard subscription retry logic applies. PayRequest will automatically retry the payment after 3 days, then again after 10 days.
Yes. The payment plan covers the total amount due, which includes the original invoice amount plus any collection fees.
Yes. External debts work exactly the same as invoice-based cases. An invoice is automatically created for the external debt, and the payment plan is linked to that invoice.
The customer can always pay the full remaining amount through the payment page or customer portal. The case will close automatically when the invoice is fully paid.
## Related Documentation
Understand the 4 stages of collection
What customers see in their self-service portal
How SEPA mandates work for recurring payments
How failed installment payments are retried
# Postal Letters
Source: https://docs.payreque.st/debt-collection/postal-letters
Send physical collection letters to customers via Pingen postal service
# Postal Letters
For formal collection notices, a physical letter carries more weight than an email. PayRequest integrates with [Pingen](https://www.pingen.com) to send professional postal letters directly from your dashboard — printed, enveloped, and mailed automatically.
Postal letters are optional. You can use the full debt collection pipeline with email-only communication. Pingen integration adds the ability to send physical letters when needed.
## Why Send Postal Letters?
* **Higher impact** — Physical letters are taken more seriously than emails
* **Proof of delivery** — Track when letters are delivered
* **Legal standing** — Physical notices may carry more legal weight in some jurisdictions
* **Unreachable customers** — Reach customers who don't respond to emails
* **Professional appearance** — Formal business letterhead with your company details
## Setting Up Pingen
Before you can send postal letters, you need to connect your Pingen account.
### Create a Pingen Account
Sign up at [pingen.com](https://www.pingen.com) and create an organisation.
### Get Your API Credentials
In your Pingen dashboard:
1. Go to **Settings** → **API**
2. Note your **Client ID** and **Client Secret**
3. Note your **Organisation ID** from the account settings
### Configure PayRequest
Contact PayRequest support or add the Pingen credentials in your environment configuration. You'll need:
| Setting | Description |
| - | - |
| **Client ID** | Your Pingen API client ID |
| **Client Secret** | Your Pingen API client secret |
| **Organisation ID** | Your Pingen organisation ID |
### Top Up Your Pingen Balance
Pingen charges per letter sent (typically EUR 1-2 per letter within the Netherlands). Make sure your Pingen account has sufficient balance.
## Sending a Postal Letter
Once Pingen is configured, you can send letters from any collection case.
### Open the Collection Case
Navigate to **Debt Collection** and click on the case.
### Click "Send Postal Letter"
Find the **Send Postal Letter** button in the case header (next to "Send Reminder").
### Review and Confirm
The system generates a professional A4 letter including:
* Your business details (company name, address, VAT number, IBAN)
* Customer's name and address
* Stage-appropriate content matching the current collection stage
* Amount breakdown (original amount + collection fees = total)
* Payment link and case reference number
* QR code for quick mobile payment
### Letter Is Sent
PayRequest uploads the letter to Pingen, which handles printing, enveloping, and mailing. The letter is typically delivered within 1-3 business days (within the Netherlands).
## Letter Content
Each letter is automatically tailored to the current collection stage:
### Stage 1: Friendly Reminder
* Polite tone, assumes the customer may have overlooked the invoice
* Mentions the invoice number and original due date
* Requests payment at the customer's earliest convenience
### Stage 2: Formal Notice
* More formal tone with a clear payment deadline
* States that this is a formal notice
* Requests payment within 7 days
### Stage 3: Collection Fees Added
* Direct tone informing the customer that collection fees have been applied
* Shows the breakdown: original amount + collection fee
* Requests immediate payment of the total amount
### Stage 4: Final Warning
* Urgent tone making clear this is the last notice
* Warns of potential further consequences
* Demands immediate payment
## Letter Format
Every letter follows a professional Dutch business letter format:
* **A4 paper** with proper margins
* **Sender block** — Your company name, address, VAT number, and IBAN
* **Recipient address** — Positioned for standard window envelopes
* **Date and reference** — Case number and current date
* **Body** — Stage-appropriate content in the case's configured language
* **Amount table** — Clear breakdown of what's owed
* **QR code** — Scannable payment link for quick mobile payment
* **Signature** — "With kind regards" followed by your company name
The letter language follows the language you've set for each individual case. Set this in the Case Settings on the case detail page.
## Tracking Letters
After sending a letter, you can track its status:
* **Pending** — Letter is being processed by Pingen
* **Sent** — Letter has been printed and mailed
* **Delivered** — Letter has been delivered (when tracking is available)
Letter history is shown in the case's overview section, including:
* Date sent
* Current status
* Delivery confirmation (when available)
## Automatic Postal Letters
When Pingen is configured, the automatic escalation process can send postal letters automatically:
| Stage | Email | Postal Letter |
| - | - | - |
| Stage 1 (Friendly Reminder) | Sent automatically | Not sent (email only) |
| Stage 2 (Formal Notice) | Sent automatically | **Sent automatically** |
| Stage 3 (Collection Fees) | Sent automatically | **Sent automatically** |
| Stage 4 (Final Warning) | Sent automatically | **Sent automatically** |
Automatic postal letters only happen during automated escalation. If you manually escalate a case, you choose whether to send a letter.
## Costs
Pingen charges per letter. Typical costs (Netherlands):
* **Standard letter** — approximately EUR 1.00 - 2.00
* **Registered letter** — higher cost, includes delivery confirmation
* **International** — varies by destination country
Costs are charged to your Pingen account, not through PayRequest. Check [pingen.com](https://www.pingen.com/pricing) for current pricing.
## FAQs
No. Pingen is optional. You can use the full collection pipeline with email-only communication.
The letter is generated as a PDF using your business details and the case information. You can download a preview from the case detail page before confirming the send.
Make sure your customer records have accurate addresses before sending postal letters. Letters sent to incorrect addresses will still be charged by Pingen.
Yes. Pingen supports international mail. The cost varies by destination country.
Within the Netherlands, letters are typically delivered within 1-3 business days. International delivery may take longer depending on the destination.
## Related Documentation
How automatic escalation triggers postal letters
How to create collection cases
Back to the overview
Make sure your company details are up to date for letters
# Freelancer Page
Source: https://docs.payreque.st/freelancers/freelancer-page
Create a public freelancer profile, get discovered, accept quote requests, and sell prepaid hours without creating a product yourself
# Freelancer Page
Turn your PayRequest Page into a simple freelancer profile where clients can understand what you do, request a quote, or hire you for a prepaid block of time.
Your public URL stays short and easy to share:
```text theme={null}
https://payrequest.me/your-handle
```
Add your profession, location, skills, languages, hourly rate, and availability.
Let a potential client describe custom work without leaving your profile.
Let clients select a number of hours and pay immediately.
## Set Up Your Freelancer Profile
In the PayRequest dashboard, go to **PayRequest Page** and open the **Settings** tab.
Find the **Showcase** section and turn on **List me on the Showcase**.
Select the category that best represents your work. This helps visitors find relevant profiles and services.
Add your profession, location, skills, languages, hourly rate, and current availability.
Enable **Accept quote requests**, **Hire me**, or both, then click **Save Settings**.
## Profile Details
The freelancer fields make your page easier to understand and easier to find on the public directory at [payrequest.me/discover](https://payrequest.me/discover).
| Field | What to enter | Example |
| - | - | - |
| **Profession** | A clear role or specialty | Portrait artist |
| **Location** | City, region, or remote | Amsterdam, Netherlands |
| **Skills** | Comma-separated services and techniques | Illustration, pencil drawing, portraits |
| **Languages** | Languages you can work in | English, Dutch |
| **Hourly rate** | Your public price for one hour | €45.00 |
| **Availability** | Available, limited, or unavailable | Available for work |
Your availability is also shown as a colored status badge on your avatar. Visitors can hover over the avatar to quickly see your professional details.
Use specific skills that clients would search for. “A4 pencil portrait from a photo” is more useful than “art.”
## Get Discovered
When **List me on the Showcase** is enabled, your page can appear in the public PayRequest directory. Visitors can search and filter freelancers by details such as category, skills, hourly rate, and availability.
Keep these details current:
* Set your availability to **Available for work** when you can accept new projects
* Use a recognizable profile photo or logo
* Add a banner that shows your style, portfolio, or best work
* Write a short tagline that says what you deliver and for whom
* Add focused skills instead of a long list of unrelated terms
See [PayRequest Page Styling](/shop-and-checkout/sales-page-styling) to customize your avatar, profile banner, tagline, description, colors, and social links.
## Accept Quote Requests
Enable **Accept quote requests** when the price depends on the client's requirements.
The **Request a quote** button opens a form directly on your public profile. The visitor enters their name, email address, request, and project details without being sent to a separate directory page. After submission, they return to your profile and see a confirmation.
PayRequest creates a customer and an open quote request for your business, then sends you a notification. You can review the request, discuss the scope, and prepare the final quote.
Use quote requests for work such as:
* A custom website or software integration
* An illustration with several people or complex usage rights
* Consulting where the required research is not yet clear
* A photo-based portrait with custom size, materials, framing, or delivery
A quote request does not charge the client. It starts a conversation so you can agree on scope and price first.
## Enable Hire Me
Use **Hire me** when you are comfortable selling your time at a clear hourly rate.
1. Enter your **Hourly rate**
2. Turn on **Enable Hire me**
3. Set the minimum and maximum number of hours a client can buy
4. Save your settings
On your public profile, the client clicks **Hire me**, chooses the number of hours, describes the work, and continues directly to payment. The total is calculated from your hourly rate and the selected number of hours.
You do not need to create or choose a product. PayRequest automatically manages the internal checkout product behind the Hire me button and keeps it out of your normal product list.
The purchase is a prepaid block of time. Contact the client after payment to confirm the scope, schedule, and expected outcome. If the work requires more time, the client can purchase another block or request a quote.
## Quote, Hire Me, or Commission?
Choose the simplest option that fits the work:
| Option | Best when | When the client pays |
| - | - | - |
| **Request a quote** | Scope and final price are unknown | After you agree and send a quote |
| **Hire me** | You sell time at a known hourly rate | Immediately for selected prepaid hours |
| **Commission product** | You sell a repeatable creative offer with a starting price | At checkout for the starting price |
For example, an **A4 pencil drawing based on one supplied photo** can be a [Commission](/products-and-pricing/commissions) if the offer is repeatable and has a predictable starting price. Use a quote request when the number of people, background, dimensions, rights, materials, or delivery requirements can change the price substantially.
## Recommended Simple Setup
For most freelancers, start with:
1. A complete profile with a clear profession, skills, and availability
2. **Accept quote requests** enabled for custom work
3. **Hire me** enabled only if you have a confident hourly rate
4. One or two commission products only for services you can describe and price consistently
This gives clients a fast next step without requiring you to build a large product catalog first.
## Related Topics
Customize your profile photo, banner, bio, colors, and social links.
Sell repeatable custom creative work with a starting price.
Connect a provider before accepting prepaid work.
Invoice additional work or an agreed custom amount.
# Initial Setup Checklist
Source: https://docs.payreque.st/getting-started/initial-setup-checklist
Complete your PayRequest account setup with this comprehensive checklist to ensure optimal configuration
# Initial Setup Checklist ✅
Use this comprehensive checklist to ensure your PayRequest account is properly configured for optimal performance. Complete each section to unlock the full potential of your billing automation platform.
**Estimated Time**: 30-45 minutes for complete setup
**Prerequisites**: Access to your business documents and payment provider account
## 📋 Pre-Setup Preparation
Before diving into PayRequest configuration, gather these essential items:
* Business registration details
* VAT/Tax identification number
* Official business address
* Banking information (IBAN/BIC)
* Company logo (PNG/JPG, recommended 300x300px)
* Brand colors (hex codes)
* Business email addresses
* Website URL (if applicable)
## 🏢 Business Information Setup
Navigate to **Settings** → **Business Details**
**Required Fields:**
* [ ] Company name (legal business name)
* [ ] Business address (complete with postal code)
* [ ] Country and region
* [ ] Primary contact email
* [ ] Business phone number
**Optional but Recommended:**
* [ ] VAT/Tax identification number
* [ ] Chamber of Commerce number
* [ ] Website URL
* [ ] Business description
Complete business information improves customer trust and ensures compliance with local regulations.
**Logo Upload:**
* [ ] Upload company logo (300x300px recommended)
* [ ] Test logo appearance on invoices
* [ ] Verify logo displays correctly in shop
**Brand Colors:**
* [ ] Set primary brand color
* [ ] Configure secondary accent color
* [ ] Test color scheme across platform
**Invoice Customization:**
* [ ] Configure invoice footer text
* [ ] Set invoice numbering format
* [ ] Add terms and conditions
## 💳 Payment Provider Configuration
* [ ] Navigate to **Settings** → **Payment Providers**
* [ ] Click **Connect with Mollie**
* [ ] Complete OAuth authorization
* [ ] Verify connection status shows "Connected"
Enable your preferred payment options:
* [ ] iDEAL (Netherlands)
* [ ] Bancontact (Belgium)
* [ ] SEPA Direct Debit (EU-wide)
* [ ] Credit/Debit Cards
* [ ] PayPal (if needed)
* [ ] Bank Transfer
For subscription billing:
* [ ] Enable SEPA Direct Debit
* [ ] Configure mandate settings
* [ ] Set up automatic retry logic
* [ ] Test mandate creation flow
* [ ] Verify webhook URL is automatically configured
* [ ] Test webhook delivery (automatic)
* [ ] Check webhook logs for any issues
* [ ] Obtain Stripe API keys from dashboard
* [ ] Enter Publishable Key in PayRequest
* [ ] Enter Secret Key in PayRequest
* [ ] Verify connection status
* [ ] Configure accepted card types
* [ ] Enable ACH Direct Debit (US)
* [ ] Set up SEPA Direct Debit (EU)
* [ ] Configure local payment methods
* [ ] Configure billing thresholds
* [ ] Set up automatic retry logic
* [ ] Configure proration settings
* [ ] Test subscription creation
**Test Mode**: Always start with test mode enabled to verify your configuration before processing real payments.
## 📧 Email Configuration
Navigate to **Settings** → **Email Templates**
**Configure Templates:**
* [ ] Invoice Created notification
* [ ] Payment Received confirmation
* [ ] Subscription Activated email
* [ ] Payment Failed alert
* [ ] Subscription Cancelled notice
**Template Customization:**
* [ ] Add your business branding
* [ ] Customize email signatures
* [ ] Set appropriate tone and language
* [ ] Test email delivery
**Automated Sequences:**
* [ ] Welcome email for new customers
* [ ] Payment reminder sequence
* [ ] Failed payment recovery emails
* [ ] Subscription renewal reminders
**Automation Rules:**
* [ ] Set up customer tagging based on email events
* [ ] Configure automatic follow-ups
* [ ] Set up bounce and complaint handling
## 🛍️ Shop Configuration
Navigate to **Shop** → **Settings**
* [ ] Set shop name and description
* [ ] Configure contact information
* [ ] Set business hours (if applicable)
* [ ] Add social media links
* [ ] Upload shop banner/hero image
* [ ] Configure color scheme
* [ ] Set up navigation menu
* [ ] Customize footer content
* [ ] Purchase/configure domain (e.g., shop.yourbusiness.com)
* [ ] Add domain in PayRequest settings
* [ ] Configure DNS records
* [ ] Verify domain connection
* [ ] Test custom domain functionality
* [ ] Add terms of service
* [ ] Configure privacy policy
* [ ] Set up refund policy
* [ ] Add shipping information (if applicable)
## 🏷️ Organization Setup
**Create Tag Categories:**
* [ ] Customer segments (VIP, Regular, New)
* [ ] Geographic regions
* [ ] Product interests
* [ ] Payment preferences
**Automation Rules:**
* [ ] Auto-tag based on purchase behavior
* [ ] Tag based on email engagement
* [ ] Geographic auto-tagging
**Organize Products:**
* [ ] Create logical categories
* [ ] Set up product collections
* [ ] Configure category descriptions
* [ ] Optimize for shop navigation
**Category Settings:**
* [ ] Set category images
* [ ] Configure SEO settings
* [ ] Set up category-specific policies
## 🔒 Security & Compliance
**Two-Factor Authentication:**
* [ ] Enable 2FA for your account
* [ ] Set up backup codes
* [ ] Configure 2FA for team members
* [ ] Test 2FA login process
**API Security:**
* [ ] Generate API keys (if needed)
* [ ] Set appropriate permissions
* [ ] Document API usage
* [ ] Regularly rotate API keys
**Data Protection:**
* [ ] Configure data retention policies
* [ ] Set up customer data export
* [ ] Configure data deletion procedures
* [ ] Add GDPR notices to forms
**Privacy Settings:**
* [ ] Configure cookie consent
* [ ] Set up privacy policy links
* [ ] Configure data processing notices
* [ ] Test customer data requests
## 📊 Analytics & Reporting
* [ ] Set up key performance indicators (KPIs)
* [ ] Configure dashboard widgets
* [ ] Set up automated reports
* [ ] Configure notification thresholds
* [ ] Connect Google Analytics (optional)
* [ ] Set up webhook integrations
* [ ] Configure third-party reporting tools
* [ ] Test data synchronization
## 🧪 Testing & Verification
Before going live, thoroughly test your setup:
* [ ] Test product purchase flow
* [ ] Verify payment processing
* [ ] Confirm invoice generation
* [ ] Test customer notifications
* [ ] Create test subscription
* [ ] Verify mandate creation
* [ ] Test billing cycle
* [ ] Confirm automated emails
## ✅ Pre-Launch Checklist
**Final Review**: Complete this checklist before switching to live mode or launching to customers.
**Technical Verification:**
* [ ] All payment methods tested successfully
* [ ] Email delivery confirmed working
* [ ] Shop loads correctly on all devices
* [ ] Custom domain functioning (if configured)
* [ ] Webhook delivery verified
* [ ] API integrations tested (if applicable)
**Business Verification:**
* [ ] All business information accurate
* [ ] Pricing correctly configured
* [ ] Tax settings appropriate for your region
* [ ] Terms and policies up to date
* [ ] Customer support processes in place
**Team Preparation:**
* [ ] Team members trained on platform
* [ ] Support procedures documented
* [ ] Emergency contacts configured
* [ ] Backup access methods established
## 🎉 You're Ready to Launch!
Congratulations! Your PayRequest account is fully configured. You're now ready to:
* Switch to live mode in your payment provider
* Share your shop with customers
* Process real payments
* Start growing your business with automated billing
Continue to our [Quick Start Guide](/getting-started/quick-start-guide) to process your first real payment!
## 📞 Need Help?
If you encounter any issues during setup:
[support@payrequest.io](mailto:support@payrequest.io)
Browse detailed feature guides
Common setup issues and solutions
***
**Pro Tip**: Bookmark this checklist and return to it when adding new features or team members to ensure consistent configuration across your account.
# Onboarding
Source: https://docs.payreque.st/getting-started/onboarding
Complete your account setup with our guided onboarding flow
# Onboarding
When you first subscribe to PayRequest, you'll be guided through a simple 5-step onboarding process to set up your account. This ensures you have everything configured to start accepting payments quickly.
## Overview
The onboarding flow helps you:
* Select your country and language
* Add your business details (auto-filled based on country)
* Create your PayRequest Page
* Connect your payment provider (Mollie or Ponto)
* Create your first product (optional)
You can skip optional steps and come back to them later from your dashboard settings.
## Step 1: Country & Language Selection
Select where your business is based using our interactive world map.
### World Map Selection
1. Click on the world map to select your country
2. Hover over countries to see their names
3. Your selected country will be highlighted in blue
4. A green checkmark confirms your selection
### Auto-Fill Features
When you select a country, we automatically configure:
| Setting | Auto-Filled Based On Country |
| - | - |
| **Language** | Netherlands/Belgium → Dutch, Germany/Austria → German, France → French, Spain → Spanish, Others → English |
| **Currency** | US → USD, UK → GBP, Switzerland → CHF, Canada → CAD, Australia → AUD, Europe → EUR |
| **Tax Region** | NL, EU, GB, US, CA, AU based on location |
| **Tax Rate** | Country-specific VAT/GST rates (e.g., NL: 21%, DE: 19%, UK: 20%) |
### Language Options
You can adjust the auto-selected language if needed:
* 🇬🇧 English
* 🇳🇱 Nederlands (Dutch)
* 🇩🇪 Deutsch (German)
* 🇫🇷 Français (French)
* 🇪🇸 Español (Spanish)
Your language preference affects the dashboard interface, system emails, and default invoice language. You can change it anytime from Settings.
## Step 2: Business Details
Enter your company information for invoices and legal compliance. Many fields are pre-filled based on your country selection.
**Required Information:**
* **Company Name**: Your business or trading name
* **Company Address**: Full business address for invoices
**Pre-Filled Information** (editable):
* **Currency**: Based on your country (EUR for Europe)
* **Tax Rate**: Default VAT rate for your country
* **Tax Region**: Your tax jurisdiction
**Optional Information:**
* **VAT Number**: If VAT registered (e.g., NL123456789B01)
* **VAT Registered**: Toggle if you charge VAT
Make sure your business details are accurate - they appear on all invoices sent to customers.
## Step 3: PayRequest Page Setup
Create your personal PayRequest Page where customers can pay you.
### PayRequest Page URL
Your PayRequest Page URL will be: `payrequest.me/yourhandle`
**Handle Requirements:**
* Lowercase letters, numbers, and hyphens only
* Must be unique (system checks availability)
* Green checkmark = available
* Red X = already taken
### Customization Options
**Tagline**: A short description (e.g., "Web Developer & Designer")
**Profile Picture**: Choose a source for your avatar:
* X (Twitter)
* GitHub
* YouTube
* Twitch
Enter your username and we'll automatically fetch your profile picture.
**Payment Settings:**
* **Allow Custom Amount**: Let customers enter any amount
* **Minimum Amount**: Set a minimum payment (default €1.00)
### Shop Language (Business Plan)
If you're on the Business plan, the shop language is automatically set based on your country selection from Step 1.
## Step 4: Payment Provider
Connect a payment provider to start accepting payments. Available providers depend on your country.
### Mollie (European Businesses Only)
Mollie is available for businesses in:
* All EU countries (Netherlands, Germany, France, Belgium, etc.)
* United Kingdom
* Switzerland, Norway, Iceland, Liechtenstein
**Connecting Mollie:**
1. Click **"Connect"** on the Mollie card
2. You'll be redirected to Mollie
3. Authorize PayRequest to access your account
4. You'll be returned to onboarding automatically
**What Mollie Enables:**
* Accept iDEAL, credit cards, Bancontact, SEPA
* Create subscriptions with automatic recurring billing
* Sync customers and transactions
* Process refunds from your dashboard
Don't have a Mollie account? Create one for free at [mollie.com](https://www.mollie.com).
### Ponto (Bank Transfers & Open Banking)
Ponto is available in 46 countries including:
Australia, Austria, Belgium, Bulgaria, Cameroon, Canada, China, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Israel, Italy, Japan, Latvia, Lithuania, Luxembourg, Malaysia, Netherlands, New Zealand, Norway, Papua New Guinea, Poland, Portugal, Romania, Singapore, Slovakia, Slovenia, South Africa, Spain, Sweden, Switzerland, Tunisia, Turkey, United Arab Emirates, United Kingdom, United States
**Connecting Ponto:**
1. Click **"Connect"** on the Ponto card
2. Follow the Ponto authorization flow
3. Link your bank account
4. You'll be returned to onboarding automatically
**What Ponto Enables:**
* Accept bank transfers
* Open Banking payments
* Automatic payment matching
* Bank account synchronization
### Country Not Supported?
If no payment providers are available for your country, you'll see a message with a link to contact support at [support@payrequest.io](mailto:support@payrequest.io). We're continuously expanding our supported countries.
You can add additional payment providers later from Settings → Payment Providers.
## Step 5: First Product (Optional)
Create your first product to start selling immediately.
### Product Type Selection
Choose the type of product you want to create:
**Digital Product** (All Plans)
* E-books, software, downloads
* One-time payment
**Service** (Business Plan)
* Consulting, design work
* One-time payment
**Subscription** (Business Plan)
* Recurring memberships
* Monthly billing
### Product Details
**Product Name**: Clear, descriptive name for your product
**Description**: Explain what customers get (can be added later)
**Price**: Amount in your currency
* For subscriptions, this is the monthly price
**Tax Rate**: Based on your country's default (can customize)
### AI Image Generation
Don't have a product image? Generate one with AI!
1. Enter your product name
2. Optionally add a description for better context
3. Click **"Generate with AI"** (sparkles icon)
4. Wait 15-30 seconds for generation
5. Image is automatically saved with your product
AI-generated images work great for digital products and services. Use descriptive product names for best results.
### Price Preview
As you enter the price and tax rate, you'll see a live preview:
* Subtotal
* Tax amount
* Total (what customer pays)
For subscriptions, it shows "Total per month".
### Skipping This Step
If you don't want to create a product now:
* Click **"Skip & Finish"** to complete onboarding
* You can create products anytime from Products in your dashboard
## Progress Sidebar
During onboarding, the right sidebar shows your progress with dynamic updates:
| Step | Before Completion | After Completion |
| - | - | - |
| 1 | Select country & language | 🇧🇪 Belgium (flag + country) |
| 2 | Add business details | Your Company Name |
| 3 | Set up your PayRequest Page | payrequest.me/yourhandle |
| 4 | Connect payment provider | Payment provider connected! |
| 5 | Create first product (optional) | You created your first product! |
## Completion
After completing all steps, you'll see a success screen confirming your account is ready.
Click **"Go to Dashboard"** to access your PayRequest dashboard and start:
* Creating invoices
* Adding more products
* Managing customers
* Viewing transactions
## After Onboarding
### What's Next?
Add more products to your catalog
Customize your online shop
Send your first invoice
Import or add customers
### Changing Settings Later
All settings from onboarding can be modified later:
| Setting | Location |
| - | - |
| Language | Settings → General |
| Business Details | Settings → Business |
| PayRequest Page | Payment Pages |
| Payment Provider | Settings → Payment Providers |
| Products | Products |
## Troubleshooting
### Mollie Connection Issues
If Mollie connection fails:
1. Make sure you have a verified Mollie account
2. Ensure your business is in a supported European country
3. Try the connection again from Settings → Payment Providers
4. Check your Mollie dashboard for any pending verifications
### Ponto Connection Issues
If Ponto connection fails:
1. Verify your country is in the supported list
2. Ensure your bank supports Open Banking
3. Try connecting again from Settings → Ponto
### Handle Already Taken
If your preferred URL handle is taken:
* Try adding numbers (e.g., yourname1)
* Use your full business name
* Add your city or specialty
### No Payment Providers Available
If you see "no payment providers available for your country":
* Contact [support@payrequest.io](mailto:support@payrequest.io) for assistance
* We may be able to suggest alternative solutions
* Check back later as we expand to new countries
### Can't Complete Onboarding
If you're stuck:
* Refresh the page and try again
* Use the live chat (Crisp) for immediate support
* Email [support@payrequest.io](mailto:support@payrequest.io)
The live chat is available during onboarding - look for the chat widget in the bottom right corner.
# Quick Start Guide
Source: https://docs.payreque.st/getting-started/quick-start-guide
Get your PayRequest account set up and receive your first payment in under 10 minutes
# Quick Start Guide ⚡
Get your PayRequest account up and running in under 10 minutes! This guide will walk you through the essential steps to start accepting payments and managing your billing automation.
**Before you start**: Make sure you have your business details ready and access to your preferred payment provider (Mollie or Stripe) account.
## Step 1: Complete Your Business Setup
First, let's configure your business information to ensure professional invoices and legal compliance.
Go to **Settings** → **Business Details** in your PayRequest dashboard.
Fill in the required fields:
* **Company Name**: Your legal business name
* **Address**: Complete business address
* **VAT Number**: Your tax identification number
* **Contact Details**: Phone and email for customer communication
Add your company logo for professional branding on invoices and your shop.
Complete business information helps build trust with customers and ensures compliance with local tax regulations.
## Step 2: Connect Your Payment Provider
PayRequest integrates seamlessly with leading European payment providers.
Navigate to **Settings** → **Payment Providers** → **Add Mollie**
Click **Connect with Mollie** and authorize PayRequest to access your Mollie account.
* Enable desired payment methods (iDEAL, SEPA, Cards)
* Set up SEPA Direct Debit for subscriptions
* Configure webhook settings (handled automatically)
Log into your Stripe dashboard and copy your API keys from the Developers section.
In PayRequest, go to **Settings** → **Payment Providers** → **Add Stripe**
Paste your Stripe API keys and configure your preferred settings.
**Test Mode**: Start with test mode enabled to verify everything works before processing real payments.
## Step 3: Create Your First Product
Now let's create a product or service that your customers can purchase.
Go to **Products** in your dashboard and click **Create Product**.
* **Name**: Clear, descriptive product name
* **Description**: What your customers are buying
* **Price**: Set your pricing (supports decimals)
* **Currency**: EUR, USD, or your preferred currency
Perfect for digital downloads, courses, or one-off services
Ideal for SaaS, memberships, or recurring services
* **Custom Fields**: Collect additional information (domain names, specifications)
* **Setup Fees**: One-time charges for subscription products
* **Trial Periods**: Free trials to reduce customer acquisition friction
* **Tax Settings**: Configure VAT or tax rates as needed
Click **Create Product** to save and make it available in your shop.
## Step 4: Set Up Your Shop
Create a professional storefront where customers can browse and purchase your products.
Navigate to **Shop** → **Settings** and configure:
* **Shop Name**: Your store's display name
* **Description**: Brief overview of your business
* **Contact Information**: Customer support details
* Upload a shop logo and banner
* Choose your color scheme
* Set up navigation and categories
Instead of `payrequest.app/shop/yourname`, use your own domain:
* Go to **Shop** → **Custom Domain**
* Enter your domain (e.g., `shop.yourbusiness.com`)
* Follow the DNS configuration instructions
Your shop is automatically available at `payrequest.app/shop/[your-shop-name]` even without a custom domain.
## Step 5: Process Your First Order
Let's test the complete flow from customer visit to payment completion.
Get your product link:
* Go to **Products** → Select your product
* Click **Share Product Link**
* Copy the link or scan the QR code
Open your product link in an incognito browser window to simulate a customer:
* Browse your product page
* Add the product to cart
* Proceed through checkout
* Complete a test payment
Return to your PayRequest dashboard to see:
* New order in **Orders** section
* Customer record in **Customers**
* Transaction details in payment provider
* Automatic invoice generation
## Step 6: Set Up Automation (Optional but Recommended)
Maximize efficiency with PayRequest's automation features.
Configure automatic emails for:
* Order confirmations
* Payment receipts
* Subscription renewals
* Payment failures
Go to **Settings** → **Email Templates** to customize messages.
Organize customers automatically:
* Create tags for different customer segments
* Set up automatic tagging rules
* Use tags for targeted communications
Visit **Tags** to create your first tag categories.
For subscription products, set up automatic retry logic:
* Configure retry attempts
* Set up dunning emails
* Define cancellation policies
Configure in **Settings** → **Subscription Settings**.
## 🎉 Congratulations!
You've successfully set up PayRequest and processed your first payment! Here's what you've accomplished:
✅ Business information configured
✅ Payment provider connected
✅ First product created
✅ Shop customized
✅ Test payment completed
✅ Automation configured
## Next Steps
Now that you're up and running, explore these advanced features:
Track your revenue, customer growth, and business performance with detailed analytics.
Give customers self-service access to manage their subscriptions and invoices.
Integrate PayRequest with your existing tools and workflows using our API.
Customize your shop appearance and add advanced functionality.
## Need Help?
[support@payrequest.io](mailto:support@payrequest.io)
Browse our comprehensive guides
Common issues and solutions
***
**Quick Tip**: Bookmark your PayRequest dashboard and consider enabling browser notifications to stay updated on new orders and customer activity!
# Understanding Your Dashboard
Source: https://docs.payreque.st/getting-started/understanding-your-dashboard
Master the PayRequest dashboard interface and discover all the powerful features at your fingertips
# Understanding Your Dashboard 📊
Your PayRequest dashboard is mission control for your entire billing operation. This comprehensive guide will help you navigate every section and understand how to leverage each feature for maximum efficiency.
**Dashboard Access**: Your dashboard is available 24/7 at [dashboard.payrequest.io](https://dashboard.payrequest.io)
**Mobile Friendly**: Access all features from any device with responsive design
## 🎛️ Dashboard Overview
When you log into PayRequest, you'll see a clean, organized interface designed for efficiency and clarity.
### Top Navigation Bar
Click to return to the main dashboard from anywhere in the platform
Quickly find customers, orders, invoices, or products across your entire account
Stay updated on new orders, payment failures, and important account activities
Access account settings, team management, and logout options
### Main Navigation Sidebar
The left sidebar provides access to all major sections of your PayRequest account:
**Your Command Center**
* Real-time revenue metrics
* Recent activity feed
* Key performance indicators
* Quick action buttons
* Upcoming payment alerts
**What You'll See:**
* Today's revenue and transaction count
* Monthly recurring revenue (MRR) trends
* Failed payment alerts requiring attention
* Recent customer signups and cancellations
**Product Management Hub**
* Create and edit products/services
* Manage pricing and subscriptions
* Configure custom fields
* Set up trial periods and setup fees
* Share product links and QR codes
**Key Features:**
* Visual product cards with status indicators
* Quick edit and duplicate options
* Revenue tracking per product
* Customer purchase analytics
**Customer Relationship Center**
* Complete customer profiles
* Communication history
* Subscription management
* Payment method details
* Customer health scoring
**What You Can Do:**
* View customer lifetime value
* Track payment history and preferences
* Manage customer tags and segments
* Access customer portal login
* Handle support requests and notes
**Subscription Control Panel**
* Active subscription monitoring
* Billing cycle management
* Failed payment recovery
* Trial-to-paid conversions
* Subscription analytics
**Management Tools:**
* Pause/resume subscriptions
* Change billing frequencies
* Update pricing and quantities
* Handle cancellation requests
* View upcoming renewals
**Invoice Management System**
* Generated invoice overview
* Payment status tracking
* Manual invoice creation
* Payment reminders
* Invoice customization
**Key Capabilities:**
* Send payment links to customers
* Track invoice views and downloads
* Manage partial payments
* Handle refunds and credits
* Export invoice data
**Order Processing Center**
* One-time purchase tracking
* Order fulfillment status
* Customer order history
* Revenue attribution
* Order analytics
**Order Management:**
* View order details and line items
* Track payment processing status
* Manage order fulfillment
* Handle order modifications
* Generate order reports
**Storefront Management**
* Shop customization tools
* Product catalog organization
* Custom domain configuration
* Shop analytics and performance
* Customer experience optimization
**Shop Features:**
* Visual shop builder
* Theme and branding options
* SEO optimization tools
* Mobile responsiveness preview
* Customer journey analytics
**Organization and Automation**
* Customer segmentation tags
* Automated tagging rules
* Tag-based reporting
* Marketing automation triggers
* Workflow optimization
**Tag Management:**
* Create custom tag categories
* Set up automatic tagging conditions
* View tag usage analytics
* Export tagged customer lists
* Bulk tag operations
**Business Intelligence Dashboard**
* Revenue analytics and trends
* Customer acquisition metrics
* Churn analysis and predictions
* Product performance data
* Financial reporting tools
**Analytics Features:**
* Interactive charts and graphs
* Custom date range filtering
* Cohort analysis tools
* Export capabilities
* Automated report scheduling
**Configuration and Administration**
* Business profile management
* Payment provider setup
* Email template customization
* Team member administration
* Security and compliance settings
**Settings Sections:**
* Business Details & Branding
* Payment Providers & Methods
* Email Templates & Automation
* Team Members & Permissions
* API Keys & Integrations
## 🎯 Dashboard Home Deep Dive
Your dashboard home provides a comprehensive overview of your business performance:
### Key Metrics Cards
**Today's Revenue**: Real-time daily earnings
**Monthly Recurring Revenue (MRR)**: Predictable income stream
**Growth Rate**: Month-over-month percentage change
**Average Revenue Per User (ARPU)**: Customer value metrics
**Active Subscriptions**: Currently billing customers
**New Signups**: Recent customer acquisitions
**Payment Success Rate**: Transaction reliability
**Churn Rate**: Customer retention metrics
### Recent Activity Feed
Monitor your business pulse with real-time activity updates:
* **New Orders**: Customer purchases and order values
* **Payment Events**: Successful payments and failures
* **Subscription Changes**: Activations, pauses, and cancellations
* **Customer Actions**: Profile updates and portal usage
* **System Notifications**: Important platform updates
### Quick Actions
Access frequently used features directly from your dashboard:
Launch the product creation wizard with one click
Quickly add new customers to your database
Create manual invoices for one-off charges
Address payment issues requiring immediate attention
## 🔍 Search and Navigation
### Global Search
The dashboard search bar is your gateway to finding anything quickly:
**Search Capabilities:**
* **Customers**: Find by name, email, or company
* **Orders**: Search by order number or customer
* **Invoices**: Locate by invoice number or amount
* **Products**: Find by name or SKU
* **Transactions**: Search by payment reference
**Search Tips:**
* Use partial matches for broader results
* Combine multiple terms for specific searches
* Use quotation marks for exact phrase matching
* Filter results by type using dropdown options
### Breadcrumb Navigation
Always know where you are with clear breadcrumb trails:
* **Dashboard** → **Customers** → **Customer Profile**
* **Dashboard** → **Products** → **Edit Product**
* **Dashboard** → **Settings** → **Payment Providers**
## 📱 Mobile Experience
Your PayRequest dashboard is fully optimized for mobile devices:
### Mobile Navigation
* **Collapsible sidebar**: Swipe to reveal navigation menu
* **Touch-friendly interface**: Large buttons and easy scrolling
* **Responsive tables**: Horizontal scroll for detailed data
* **Quick actions**: Floating action buttons for common tasks
### Mobile-First Features
* **Push notifications**: Stay informed on mobile devices
* **Offline viewing**: Access cached data without internet
* **Quick payments**: Process payments on the go
* **Customer lookup**: Instant access to customer information
## 🎨 Customization Options
### Dashboard Themes
* **Light Mode**: Clean, bright interface for daytime use
* **Dark Mode**: Easy-on-eyes design for extended sessions
* **Auto Mode**: Switches based on system preferences
### Widget Customization
* **Rearrange metrics**: Drag and drop dashboard cards
* **Hide/show sections**: Customize your dashboard layout
* **Set default views**: Configure your preferred starting page
* **Custom date ranges**: Set default reporting periods
## 🔔 Notifications and Alerts
Stay informed with intelligent notification system:
### Notification Types
* Failed payment notifications
* Subscription cancellation alerts
* Revenue milestone achievements
* Security and compliance updates
* New customer registrations
* Subscription upgrades/downgrades
* Customer support requests
* Payment method updates
### Notification Settings
* **Email notifications**: Configure which events trigger emails
* **In-app alerts**: Customize dashboard notification preferences
* **Mobile push**: Enable mobile app notifications
* **Slack integration**: Send alerts to team channels
## 🚀 Pro Tips for Dashboard Mastery
**Global Shortcuts:**
* `Ctrl/Cmd + K`: Open global search
* `Ctrl/Cmd + /`: View all keyboard shortcuts
* `G + D`: Go to Dashboard
* `G + C`: Go to Customers
* `G + P`: Go to Products
* `G + S`: Go to Settings
**Navigation Shortcuts:**
* `Tab`: Move between interactive elements
* `Enter`: Activate buttons and links
* `Esc`: Close modals and dropdowns
**Daily Routine:**
1. Check dashboard metrics and alerts
2. Review failed payments and take action
3. Monitor new customer signups
4. Process manual invoices if needed
5. Check upcoming subscription renewals
**Weekly Tasks:**
1. Analyze revenue trends and growth
2. Review customer churn and retention
3. Update product pricing if needed
4. Clean up customer data and tags
5. Review and optimize email templates
**Best Practices:**
* Use tags consistently for customer segmentation
* Keep customer profiles updated with latest information
* Regularly review and clean up duplicate customers
* Monitor payment method expirations
* Export data regularly for backup purposes
**Reporting Tips:**
* Set up automated reports for key metrics
* Use custom date ranges for specific analysis
* Export data in multiple formats (CSV, PDF, Excel)
* Create dashboard snapshots for presentations
## 🎓 Next Steps
Now that you understand your dashboard, explore these advanced features:
Learn about payment methods, providers, and processing options
Master product creation, pricing strategies, and custom fields
Discover customer relationship tools and automation features
Dive deep into business analytics and reporting capabilities
## 📞 Need Help Navigating?
Watch step-by-step dashboard walkthroughs
Get instant help with navigation questions
Suggest dashboard improvements and new features
***
**Power User Tip**: Bookmark frequently accessed pages and use keyboard shortcuts to navigate your dashboard like a pro. The more you use PayRequest, the more efficient your billing operations become!
# Welcome to PayRequest
Source: https://docs.payreque.st/getting-started/welcome-to-payrequest
Get started with PayRequest - the complete billing automation platform for modern businesses
# Welcome to PayRequest 🚀
PayRequest is a comprehensive billing automation platform designed to streamline your entire payment workflow. Whether you're running a SaaS business, selling digital products, or managing recurring subscriptions, PayRequest provides all the tools you need to automate your billing processes and grow your business.
## What is PayRequest?
PayRequest transforms complex billing operations into simple, automated workflows. Our platform handles everything from product creation and customer management to payment processing and financial reporting - all from one centralized dashboard.
### Key Features
Create beautiful online shops with custom domains, showcase your products, and provide seamless checkout experiences for your customers.
Set up and manage recurring subscriptions with flexible billing cycles, trial periods, and automated payment processing.
Generate professional invoices automatically, send payment reminders, and track payment status in real-time.
Give your customers a self-service portal to manage their subscriptions, view invoices, and update payment methods.
## Why Choose PayRequest?
### 🎯 Built for Modern Businesses
PayRequest is designed specifically for digital businesses that need flexible billing solutions. From seat-based SaaS pricing to one-time product sales, our platform adapts to your business model.
### 🔐 Secure & Compliant
We prioritize security with PCI compliance, GDPR compliance, and secure payment processing through trusted providers like Mollie and Stripe.
### 🌍 European-First Approach
With native support for SEPA Direct Debit, iDEAL, Bancontact, and other European payment methods, PayRequest is built for the European market.
### ⚡ Automation-Powered
Reduce manual work with powerful automation tools:
* Automatic subscription billing
* Smart email notifications
* Tag-based customer segmentation
* Failed payment recovery
* Revenue reporting and analytics
## Getting Started
Ready to transform your billing processes? Here's how to get started:
Configure your business details, payment providers, and basic settings in your dashboard.
Set up your products or services with pricing, custom fields, and subscription options.
Customize your online storefront and set up your custom domain for a professional presence.
Share your product links, process your first orders, and watch the automation take over.
## What You'll Learn
This documentation will guide you through every aspect of PayRequest:
* **Payment Processing**: Set up payment providers and understand different payment methods
* **Product Management**: Create products with custom fields, pricing tiers, and subscription options
* **Customer Management**: Organize customers, track their journey, and provide excellent service
* **Subscription Billing**: Master recurring payments, trial periods, and billing cycles
* **Shop Customization**: Build beautiful storefronts that convert visitors into customers
* **Automation & Analytics**: Set up workflows and track your business performance
## Need Help?
Our team is here to support you every step of the way:
* 📧 **Email Support**: [support@payrequest.io](mailto:support@payrequest.io)
* 📚 **Documentation**: Comprehensive guides and tutorials (you're reading them now!)
* 🎯 **Quick Start Guide**: Get up and running in minutes
* 🔧 **API Reference**: For developers building custom integrations
## Ready to Get Started?
Jump into our quick start guide to set up your PayRequest account and create your first product in under 10 minutes.
***
*Welcome to the future of billing automation. Let's build something amazing together!* 🎉
# Cloudflare Integration
Source: https://docs.payreque.st/integrations/cloudflare
Connect Cloudflare to manage DNS records and set up domain forwarding for your customers
# Cloudflare Integration ☁️
Connect your Cloudflare account to PayRequest and give your customers the power to manage DNS records and set up domain forwarding — all from within their customer portal. No need to share Cloudflare login credentials or handle DNS changes manually.
**Who is this for?** If you sell domain subscriptions through PayRequest (using OpenProvider for registration), the Cloudflare integration lets your customers manage their domain settings themselves — saving you time and support tickets.
## What You Can Do
Your customers can view, add, edit, and delete DNS records for their domain directly from their subscription page. No more back-and-forth emails about DNS changes.
Customers can redirect their domain to any URL — like a social media page, a new website, or a landing page. Everything is handled through Cloudflare's redirect system.
As a business owner, you get a full Cloudflare management panel in your dashboard. View all zones, manage DNS records, and configure forwarding for any domain.
When customers set up forwarding, the required DNS records are created automatically. No manual configuration needed.
## Getting Started
### Prerequisites
Before connecting Cloudflare, make sure you have:
* A Cloudflare account ([sign up free](https://dash.cloudflare.com/sign-up))
* Your domains added to Cloudflare (nameservers must point to Cloudflare)
* An API token with the right permissions
### Step 1: Create a Cloudflare API Token
Log in at [dash.cloudflare.com](https://dash.cloudflare.com) and click on your profile icon in the top right corner.
Go to **My Profile** → **API Tokens** → **Create Token**
Create a custom token with the following permissions:
| Permission | Access Level | What it does |
| - | - | - |
| **Zone** | Read | Allows PayRequest to list your domains |
| **DNS** | Edit | Allows managing DNS records |
| **Zone Rulesets** | Edit | Required for domain forwarding |
Under **Zone Resources**, select either "All Zones" or specific zones you want to manage through PayRequest.
Click **Continue to summary** → **Create Token**. Copy the token — you'll only see it once!
**Keep your token safe!** Store it somewhere secure before closing the page. Cloudflare only shows the token once. If you lose it, you'll need to create a new one.
### Step 2: Find Your Account ID
Your Account ID is visible on your Cloudflare dashboard:
1. Go to [dash.cloudflare.com](https://dash.cloudflare.com)
2. Click on any domain
3. Look in the right sidebar under **API** — you'll see your **Account ID**
4. Copy it
Your Account ID is also visible in the URL when you're on your Cloudflare dashboard: `dash.cloudflare.com/ACCOUNT_ID_HERE`
### Step 3: Connect in PayRequest
In your PayRequest dashboard, go to **Settings** → **App Store** → **Cloudflare**
Click **Add Cloudflare Integration** and enter:
* **Account ID**: The ID you copied from Cloudflare
* **API Token**: The token you just created
After connecting, PayRequest will automatically sync all your Cloudflare zones (domains). You'll see them listed on the Cloudflare management page.
Click **Test Connection** to make sure everything is working. You should see a green "Connected" badge.
## Managing DNS Records
Once connected, DNS management becomes available for any domain that exists as both a domain subscription in PayRequest and an active zone in Cloudflare.
### For Business Owners (Admin Dashboard)
From the Cloudflare app page in your dashboard:
1. Find the domain in **Your Zones**
2. Click **Manage DNS** to view all DNS records
3. Edit or delete existing records
4. Add new records as needed
### For Your Customers (Customer Portal)
Your customers will automatically see a **DNS** tab on their domain subscription page. From there, they can:
* **View** all DNS records for their domain
* **Add** new records (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA)
* **Edit** existing records — change the content, TTL, or proxy settings
* **Delete** records they no longer need
* **Refresh** to see the latest state from Cloudflare
DNS changes are applied through Cloudflare's network and typically take effect within minutes, though full global propagation can take up to 48 hours.
## Domain Forwarding
Domain forwarding lets your customers redirect their entire domain to another URL. This is one of the most requested features for domain customers.
### Common Use Cases
* **Social media redirect**: Forward `mybrand.com` to `instagram.com/mybrand`
* **Website migration**: Redirect an old domain to a new one
* **Short URL**: Use a short domain as a branded redirect to a longer URL
* **Coming soon**: Point a domain to a temporary page while a website is being built
### How It Works
From the customer portal, your customer navigates to their domain subscription and clicks the **Forwarding** tab.
They enter the URL they want their domain to forward to — for example, `https://www.instagram.com/mybrand`.
* **Redirect Type**: Permanent (301) or Temporary (302)
* **Preserve Path**: If enabled, `domain.com/about` forwards to `target.com/about`
* **Preserve Query String**: If enabled, `domain.com?ref=abc` forwards to `target.com?ref=abc`
Click **Set Up Forwarding**. PayRequest automatically:
1. Creates the required DNS record for Cloudflare to handle the redirect
2. Sets up the redirect rule in Cloudflare
3. Shows a confirmation with the active forwarding details
### Redirect Types Explained
| Type | Code | Best For |
| - | - | - |
| **Permanent** | 301 | Moving to a new domain permanently. Search engines will update their index to the new URL. |
| **Temporary** | 302 | Short-term redirects like promotions or maintenance. Search engines keep the original URL. |
**Not sure which to pick?** Use **Permanent (301)** if the redirect will stay forever (like forwarding to a social media page). Use **Temporary (302)** if you plan to use the domain for something else later.
### Managing Forwarding as a Business Owner
You can also manage forwarding from the admin Cloudflare dashboard:
1. Go to **Settings** → **App Store** → **Cloudflare**
2. Find the zone in **Your Zones** — domains with active forwarding show a purple **Forwarding** badge
3. Click **Edit Forwarding** to change settings, or **Set Up Forwarding** to configure a new one
## What Your Customers See
When a customer has a domain subscription and the domain is managed in Cloudflare, their subscription page gets extra tabs:
Shows domain information: domain name, expiry date, nameservers, authorization code, and auto-renewal status. This tab is always available for domain subscriptions.
A full DNS record table where customers can view, add, edit, and delete records. Uses a clean table layout with record type badges, proxy status indicators, and action buttons.
A simple form to set up or manage domain forwarding. Shows the current forwarding status (active or not configured), the target URL, and all forwarding options.
The DNS and Forwarding tabs only appear when the domain is active in Cloudflare. If a domain hasn't been added to Cloudflare yet, customers will only see the Domain tab.
## Troubleshooting
This means your Cloudflare API token is missing the **Zone Rulesets: Edit** permission. DNS features will still work, but forwarding requires this extra permission.
**Fix**: Go to your Cloudflare dashboard → **My Profile** → **API Tokens** → edit your token → add **Zone Rulesets: Edit** permission.
These tabs only show when:
1. The subscription is for a **domain** product
2. The domain has a **domain registration** linked to it
3. The domain exists as an **active zone** in your Cloudflare account
4. Your Cloudflare integration is **connected and active** in PayRequest
Check each of these conditions. The most common issue is that the domain hasn't been synced from Cloudflare — click **Refresh Zones** on the Cloudflare app page.
* **Double-check your API token** — make sure you copied the full token
* **Verify the Account ID** — it should match what's in your Cloudflare dashboard URL
* **Check token permissions** — it needs Zone: Read, DNS: Edit, and Zone Rulesets: Edit
* **Token expired?** — Cloudflare tokens can have expiry dates. Create a new one if needed.
Click **Refresh Zones** on the Cloudflare management page. If zones still don't appear:
* Make sure your domains are added to Cloudflare
* Check that the API token has access to the correct zones
* Verify the zones are in "Active" status in Cloudflare (nameservers must be pointing to Cloudflare)
## Best Practices
Name your Cloudflare API token something like "PayRequest Integration" so you can easily find it later in your Cloudflare dashboard.
Only give the token access to the zones you manage through PayRequest. This follows the principle of least privilege and keeps your other domains safe.
Check the Cloudflare dashboard for zones with active forwarding. The purple "Forwarding" badge in PayRequest makes it easy to see which domains have redirects configured.
Let your customers know they can manage DNS and forwarding themselves. This reduces support requests and gives them more control over their domains.
## Related Documentation
Manage all your integrations
Learn about the customer experience
Set up domain subscriptions
***
**Quick Access**: Manage your Cloudflare integration anytime from **Settings** → **App Store** → **Cloudflare** in your PayRequest dashboard.
# Lock $PAYR for Free Premium
Source: https://docs.payreque.st/integrations/lock-payr-for-premium
Lock $PAYR tokens on Solana via Streamflow to unlock PayRequest Premium for free, without a card or bank payment
# Lock \$PAYR for Free Premium
Instead of paying for PayRequest Premium with a card or bank transfer, you can lock \$PAYR tokens in a non-cancelable, time-locked vault on Solana. As long as the lock stays in place, your account keeps free Premium access — no recurring card charge, no subscription to manage.
This uses [Streamflow](https://streamflow.finance), an established on-chain token vesting/locking protocol on Solana. PayRequest never takes custody of your \$PAYR — the tokens stay in a Streamflow-controlled vault that only unlocks back to your own wallet after the lock period ends.
## Requirements
| Requirement | Value |
| - | - |
| **Minimum lock amount** | 100 \$PAYR |
| **Minimum lock duration** | 90 days |
| **Network** | Solana |
| **Wallet** | Any Solana wallet holding \$PAYR (e.g. Phantom, Solflare) |
Once locked, your \$PAYR **cannot be cancelled or withdrawn early** — the lock is created as non-cancelable by both sender and recipient. Only lock an amount and duration you're comfortable committing to.
## How It Works
Visit `/token` and connect a Solana wallet holding \$PAYR. You'll need to be logged in to your PayRequest account.
Enter how much \$PAYR to lock (minimum 100) and for how long (minimum 90 days). PayRequest builds an unsigned lock transaction for you to review.
Approve the transaction in your wallet. This creates a Streamflow lock stream — your tokens move into the on-chain vault at this point.
PayRequest checks the lock directly on Solana: correct token, correct amount, correct duration, and confirms it's genuinely non-cancelable. Premium is only activated once **all** of these checks pass.
Your account gets a free, active Premium subscription (shown as "Premium (locked \$PAYR)" in your subscription list) for as long as the lock remains active.
## What Happens When the Lock Ends
PayRequest continuously monitors active locks. When your lock's unlock date arrives:
* The lock status changes to **expired**
* Your Premium subscription is automatically cancelled (unless you have another active lock covering it)
* Your \$PAYR becomes claimable back to your wallet through Streamflow directly
If you want to keep Premium after your lock ends, create a new lock before the current one expires, or switch to a regular paid Premium subscription.
## Verification & Security
Every lock goes through strict on-chain verification before Premium is granted:
* **Correct token** — must be the \$PAYR mint, not a different token
* **Correct amount** — must meet the 100 \$PAYR minimum
* **Correct duration** — must be locked for at least 90 days from creation
* **Genuinely non-cancelable** — both sender and recipient cancellation must be disabled on-chain
If a lock transaction is submitted but never confirms on-chain within 30 minutes, it's automatically marked invalid and no Premium is granted.
Early withdrawal is treated as a security anomaly and should not be possible given the lock is created as non-cancelable — but if PayRequest ever detects tokens were withdrawn before the agreed unlock date, Premium access is revoked immediately.
## FAQ
Yes, standard Solana network fees apply when you sign the lock transaction — these are minimal (typically a fraction of a cent).
No. The lock is a Streamflow on-chain vault, not a PayRequest-controlled wallet. PayRequest only reads the lock's public on-chain state to decide whether to grant Premium — it never has the ability to move, cancel, or claim your tokens.
Yes. Multiple active locks can be linked to the same Premium subscription, and Premium stays active as long as at least one lock is still active.
The lock and its unlock date are recorded on-chain independently of PayRequest. You'd need your wallet to eventually claim the tokens back from Streamflow when the lock expires — this is the same as any other Solana wallet/token custody situation.
Yes — the same \$PAYR token used in PayRequest's Solana pump.fun integration.
## Next Steps
See what's included in Premium and how it compares to paying by card
Accept Solana payments from your own customers
# payments.txt
Source: https://docs.payreque.st/integrations/payments-txt
Every PayRequest page auto-publishes a machine-readable payments.txt manifest — so AI agents can discover your wallets, payment terms, and checkout URL without any integration work.
# payments.txt
`payments.txt` is an open standard that makes your payment profile readable by AI agents and autonomous billing systems. Think of it as `robots.txt` or `llms.txt` — but instead of telling crawlers what to skip or giving LLMs context, it tells agents exactly how to pay you.
Every PayRequest page generates one automatically. No setup required.
**Auto-generated.** Fill in your wallet address and business details in PayRequest settings — your `payments.txt` is live instantly at `payrequest.me/yourhandle/payments.txt`.
## What it looks like
```ini theme={null}
# PAYMENTS.TXT MANIFEST (X402 COMPLIANT)
# Generated by PayRequest.me for @yourhandle
[meta]
version = "1.0"
status = "active"
x402_discovery_url = "https://payrequest.app/api/v1/x402/yourhandle"
x402_payment_endpoint = "https://payrequest.app/api/v1/x402/yourhandle/pay"
[payment_terms]
due_days = 14
late_fee_percentage = 2.0
preferred_fiat = "EUR"
preferred_crypto = "USDC"
[crypto_rails]
supported_standards = ["EVM", "Solana"]
primary_stablecoin = "USDC"
evm_address = "0xYour…"
solana_address = "YourSolana…"
[fiat_rails]
sepa_iban = "NL…"
sepa_bic = "BUNQ…"
[hosted_checkout]
human_fallback_url = "https://payrequest.me/yourhandle"
```
Only sections with data are included — if you haven't connected a Solana wallet, the `solana_address` line won't appear.
## What gets included
Your EVM address (Base / Ethereum) and Solana address from Provider Settings. Only included if you've connected them.
IBAN and BIC from your Business Details. Agents can use these for SEPA bank transfers.
Default due days and late fee percentage. Agents use these when creating invoices on your behalf.
Machine-payment URLs so agents can pay invoices autonomously via the X402 protocol — no human checkout needed.
## Your manifest URL
Your `payments.txt` is always at:
```
https://payrequest.me/yourhandle/payments.txt
```
Replace `yourhandle` with your PayRequest handle (the one in `payrequest.me/yourhandle`).
You can check what your manifest looks like right now by visiting that URL in your browser. It's public and human-readable.
## HTML discovery tag
Your payment page automatically includes a `` tag in its `` so agents parsing your page HTML can find the manifest without guessing:
```html theme={null}
```
## How agents use it
When an AI agent needs to pay you — for an invoice, a product, or API access — it can:
1. Read your `payments.txt` to discover your wallets and preferred payment method
2. Check your `x402_payment_endpoint` for autonomous USDC payment (see [X402 Autonomous Payments](/integrations/x402-autonomous-payments))
3. Fall back to `human_fallback_url` if it needs a human to complete the payment
## Keeping it up to date
Your manifest is generated live from your PayRequest account data. To update it:
* **Change your EVM wallet** — go to Provider Settings → Crypto (USDC) → Connect Wallet
* **Add a Solana wallet** — Provider Settings → Solana (pump.fun)
* **Update your IBAN** — Business Settings → Business Details → IBAN / BIC
* **Change your currency** — Business Settings → Business Details → Default Currency
Changes appear in your manifest immediately — no cache to clear.
## Open standard
`payments.txt` is an open standard. The full specification and implementation guides for PHP, Node.js, and other platforms are on GitHub:
Full spec, format reference, and implementation guides. MIT licensed — free to implement on any platform.
# Telegram Payment Bot
Source: https://docs.payreque.st/integrations/telegram-bot
Accept payments and receive instant payment notifications directly in Telegram — no coding required. Free for all PayRequest users.
# Telegram Payment Bot
Turn Telegram into your payment terminal. With the PayRequest Telegram bot, you can create a payment link in seconds, share it instantly in any chat, and get notified the moment money hits your account — all without leaving Telegram.
**Free for all plans.** The Telegram bot is included with every PayRequest account. Connect once and it works forever.
## Why Use the Telegram Bot?
Type `/pay 50 for design work` and the bot instantly returns a payment link ready to share. No dashboard login needed.
The moment a customer pays, you get a Telegram notification with the amount, customer name, and invoice number.
Share payment links in private chats, group chats, channels, or anywhere else. The link opens your branded PayRequest checkout.
If your business runs on Telegram, your payments can too. Stay in the app you already use all day.
## Who Is This For?
The Telegram bot is especially useful for:
* **Freelancers** who discuss projects with clients on Telegram and want to send a payment request without switching apps
* **Community owners** selling access, courses, or memberships to their Telegram audience
* **Online sellers** who take orders via Telegram and need a fast, professional way to collect payment
* **Service businesses** that want instant payment alerts on the go
## How to Connect
Search for **@payrequestme\_bot** in Telegram, or [click here to open it](https://t.me/payrequestme_bot). Tap **Start**.
The bot sends you a personal connect link. Tap it — it opens PayRequest in your browser.
If you're not already logged in, enter your email to receive a magic link. Click it and you're in.
Your Telegram account is now linked to PayRequest. The bot confirms with a message and you're ready to go. The connection is permanent — you only need to do this once.
## Commands
Once connected, these commands are available inside the bot:
| Command | What it does |
| - | - |
| `/pay 50 for design work` | Creates a payment link for €50 with the description "for design work" |
| `/pay 125` | Creates a payment link for €125 (uses "Payment link" as description) |
| `/links` | Shows your 5 most recent payment links with their URLs |
| `/status` | Shows your 5 most recent transactions and their status |
| `/disconnect` | Unlinks your PayRequest account from this Telegram chat |
You can send a payment link to a customer in seconds: `/pay 200 website project` → copy the URL the bot returns → paste it in your chat with the client.
## Payment Notifications
Every time a payment is completed, you'll receive a message in the bot:
```
💰 Payment received!
Amount: €200.00
From: Jan Janssen
Invoice: #INV-2026-042
Time: 14:32
```
Notifications are instant — they arrive the moment the payment is processed, so you always know in real time.
## Managing Your Connection
You can disconnect the bot at any time by sending `/disconnect`. This removes the link between your Telegram account and PayRequest — notifications will stop and commands will no longer work until you reconnect via `/start`.
If you want to connect a different Telegram account to your PayRequest, first disconnect from the old account, then start fresh with the new one.
Currently, one Telegram account can be connected per PayRequest account. If you use team members, the connected Telegram user receives all payment notifications for the account.
Payment links are created in your default account currency (EUR by default). You can change your default currency in **Business Settings → Invoice Settings**.
Yes. The link goes directly to `payrequest.app` and is unique to you. It expires after 15 minutes and can only be used once.
Yes. Every link created via `/pay` appears as a Smart Link in your PayRequest dashboard under **Payment Links**, just like links created through the web interface.
The bot works best in private messages. To share payment links in a group, create the link privately with `/pay` and then paste the URL in your group chat manually.
## Next Steps
Learn more about the payment links the bot creates — you can also manage them from your dashboard.
Build custom automations triggered by payment events using webhooks.
See which payment methods your customers can use on your checkout page.
Create payment links programmatically via the PayRequest API.
# VPNresellers
Source: https://docs.payreque.st/integrations/vpnresellers
Connect your reseller account, sell VPN subscriptions, and let customers manage their VPN access in the customer portal
# VPNresellers
Connect your own VPNresellers account to deliver VPN access after confirmed payment. Each business uses its own API token and reseller balance. Customers receive one VPN account per subscription and manage their access from your customer portal.
## Before you start
* Have a VPNresellers account with an API 4.1 access token and sufficient reseller credit.
* Sign in as the PayRequest business owner. Team members cannot configure the connection or use the integration's recovery actions.
* Configure your payment provider and customer portal for the subscriptions you want to sell. VPNresellers delivers the VPN service; it does not collect customer payments.
## Connect your account
In the dashboard, go to **Sell → Services & integrations** and open **VPNresellers**, or visit `/apps/vpnresellers`.
Paste your own API 4.1 token into **API access token** and click **Connect**. PayRequest checks the connection before saving it and stores the token encrypted.
Confirm the connection succeeds and review **Reseller balance**. Use **Test connection** to refresh the connection check. Active VPN accounts consume reseller credit daily, so keep your balance funded.
To replace a token, enter the new token and click **Update connection**. Use a token for the same reseller account: existing VPN services remain linked to their original provider account.
## Create a VPN product
1. Click **Create VPN subscription** on the integration page or in **Products**. You can also select **VPN subscription** in the full product wizard when an active VPNresellers connection exists.
2. Enter the product name, description, positive price, currency and VAT settings.
3. Select your **VPN provider** under **VPN delivery**.
4. Choose billing every **one month** or **one year**.
5. Complete the wizard and save the product. Make it active and visible when you are ready to sell it.
VPN products use recurring subscription billing with automatic VPN delivery. The first payment is charged immediately. Free trials, free plans, quantity selection and customer pausing are not supported; each subscription delivers one VPN account.
When editing a VPN product, its delivery connection is preserved. Existing VPN services retain their original provider and billing period.
## Payment and access
| Event | VPN access |
| - | - |
| First fully paid order or linked invoice | PayRequest queues VPN account creation and activation. |
| Renewal paid before access expires | The new month or year extends the remaining paid access. |
| Renewal paid after access expires | A new month or year starts from the payment time. |
| Unpaid or failed renewal | No extra access is granted. Existing paid access lasts until its end date. |
| Subscription canceled | Access remains available until the end of the paid period. |
| Subscription paused, suspended or archived | VPN access is disabled during synchronization. |
| Latest access-granting payment reversed | VPN access is disabled during synchronization. |
PayRequest counts the initial order and its associated invoice as one paid period. Synchronization runs after relevant billing changes and reconciles services every five minutes. Delivery and status changes may therefore take a few minutes.
The portal shows **Access paid until**. VPNresellers uses a date-only expiry, while PayRequest reconciles the paid-until time. Provider expiry processing can differ, so the remote cutoff is not guaranteed to occur at the exact displayed second.
## Customer setup
Customers sign in to your customer portal, open **My services**, select their VPN subscription and open the **VPN** tab. Order details and order-completion emails can also include a **Manage VPN** link to the subscription when it is linked to the order.
The tab shows the service status, **Access paid until** and the VPN username. While access is active, authorized customers can:
* Click **Show VPN password** or **Hide password**.
* Set a new VPN password of **12–50 characters**. Password changes are limited to one attempt per minute.
* Choose a protocol and server location, then click **Download configuration**.
| Protocol | Setup |
| - | - |
| WireGuard | Download the `.conf` file and import it into a WireGuard client. |
| OpenVPN | Select a connection port, download the `.ovpn` file and import it into an OpenVPN client. Use the VPN username and password when prompted. |
| VLESS | Download the `.txt` file and import its link into a compatible client. |
The primary customer and contacts with **Admin** or **Operations** access can manage VPN credentials and download configurations. **Billing** and **Viewer** contacts cannot access credentials.
Configuration files contain private access keys. Keep them private, along with the VPN password and reseller API token.
## Delivery problems
Open `/apps/vpnresellers` and review **VPN services**. Each entry shows the username, status, paid-until date and any delivery error.
### Insufficient reseller credit
Top up your VPNresellers balance, then click **Synchronize** for the affected service. Paying a PayRequest invoice does not top up your reseller balance.
### Connection or provider errors
Use **Test connection** and check your API token. Update the connection if necessary. For a temporary provider failure, wait and retry **Synchronize**. Customers with delayed delivery should contact your business through the portal.
### Account creation needs verification
If an account-creation request has an uncertain result, PayRequest searches for the original username before trying to deliver it again. It stops automatic recreation when it cannot confirm whether the account exists.
1. Click **Synchronize** to recover an existing account.
2. If the service still needs creation verification, wait at least **ten minutes** after the uncertain attempt.
3. As the business owner, click **Verify and retry creation** and confirm the action. PayRequest checks the provider account list and retries creation only if the original username is not found.
## Related guides
* [Creating products](/products-and-pricing/creating-products)
* [Customer portal](/customer-management/customer-portal)
* [Subscription self-service](/subscriptions/customer-self-service)
# X402 Autonomous Payments
Source: https://docs.payreque.st/integrations/x402-autonomous-payments
Let AI agents pay your invoices and access your payment page without any human interaction — using the X402 protocol and USDC on Base.
# X402 Autonomous Payments
X402 is an open payment protocol that uses the HTTP `402 Payment Required` status code to let AI agents pay for resources autonomously — no checkout page, no human click, no API key exchange.
Your PayRequest page is already X402-compatible. Agents that speak the protocol can discover your payment requirements, sign an authorization off-chain, and settle USDC directly to your wallet in one round trip.
X402 requires your EVM wallet to be connected in Provider Settings. The agent pays to that address directly — PayRequest never holds the funds.
## How it works
The agent reads your `payments.txt` manifest and finds your `x402_payment_endpoint`. Alternatively it calls the discovery JSON at `x402_discovery_url` to get the full payment requirements object.
The agent sends a `POST` to your payment endpoint without a payment header. PayRequest responds with HTTP `402 Payment Required` and a JSON body describing exactly what to pay:
```json theme={null}
{
"x402Version": 2,
"error": "payment_required",
"accepts": [{
"scheme": "exact",
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "1000",
"payTo": "0xYourWalletAddress",
"maxTimeoutSeconds": 30
}]
}
```
`amount` is in USDC atomic units (6 decimals): `1000` = \$0.001.
The agent signs an ERC-3009 `transferWithAuthorization` message with its wallet — no gas, no on-chain transaction yet. This is just a cryptographic signature authorizing the USDC transfer.
The agent sends the same request again, this time including:
```
X-Payment: base64({"x402Version":2,"payload":{"signature":"0x...","authorization":{...}},...})
```
PayRequest verifies the signature, then broadcasts `transferWithAuthorization` on Base — moving USDC from the agent's wallet directly to yours. No intermediary. The transaction is final within seconds.
PayRequest responds `200 OK` with:
```json theme={null}
{
"success": true,
"onchain_tx": "0xTxHash…",
"payer": "0xAgentWalletAddress",
"amount_usdc": 0.001
}
```
Plus an `X-Payment-Response` header with the settlement receipt.
## Pay a specific invoice
Agents can pay a specific outstanding invoice by hitting:
```
POST /api/v1/x402/yourhandle/invoice/{invoiceId}/pay
```
The `402` response will include the exact invoice amount as the required payment. On success, the invoice is automatically marked as paid in PayRequest.
This is the primary use case: an AI agent receives an invoice email, extracts the invoice ID, pays it autonomously via X402, and the invoice closes — all without a human touching the checkout.
## Discovery endpoints
| Endpoint | Method | Description |
| - | - | - |
| `/yourhandle/payments.txt` | `GET` | Human + machine readable manifest |
| `/api/v1/x402/yourhandle` | `GET` | JSON discovery: wallets, accepted networks, payment URL |
| `/api/v1/x402/yourhandle/pay` | `POST` | X402 payment endpoint |
| `/api/v1/x402/yourhandle/invoice/{id}/pay` | `POST` | Pay a specific invoice |
## Supported networks
| Network | Token | Chain ID |
| - | - | - |
| Base (mainnet) | USDC | `eip155:8453` |
| Base Sepolia (testnet) | USDC | `eip155:84532` |
| Solana (mainnet) | USDC | `solana:5eykt4...` |
## Settlement
PayRequest settles payments by calling `transferWithAuthorization` on the USDC contract. This moves funds directly from the agent's wallet to yours — PayRequest acts as a broadcast relay, not a custodian.
Settlement uses the Base public RPC by default. No Coinbase CDP account is required.
You can use Base Sepolia testnet USDC to test X402 payments before going live. Set `X402_TESTNET=true` in your environment to switch endpoints to testnet.
## For developers building agents
If you're building an AI agent that needs to pay PayRequest users autonomously:
1. **Discover** — `GET https://payrequest.me/{handle}/payments.txt` or the JSON discovery endpoint
2. **Get requirements** — `POST` to the payment endpoint, expect a `402` response
3. **Sign** — Use `viem`, `ethers.js`, or any EIP-712 library to sign `TransferWithAuthorization`
4. **Pay** — Retry the `POST` with the `X-Payment` header
5. **Confirm** — `200` response + `X-Payment-Response` header = settled
The full protocol specification is at:
Complete request/response format, header schemas, and network reference.
## Frequently asked questions
No — not for the agent. The agent only signs an off-chain ERC-3009 authorization; it never needs ETH or any gas balance. PayRequest's own wallet broadcasts the `transferWithAuthorization` transaction on Base and pays the (tiny, roughly \$0.001) gas cost itself. Agent developers don't need to fund a wallet with ETH to use X402.
Any EVM-compatible wallet that can sign EIP-712 typed data. Smart contract wallets (Safe, Coinbase Smart Wallet) are also supported since ERC-3009 handles those signatures.
The default per-call amount is \$0.001 USDC. For invoice payments, the amount is always the invoice total. Custom minimum amounts per-user are on the roadmap.
If the signature is invalid, expired, or the amount is too low, PayRequest returns another `402` with the `verification_error` field explaining what went wrong. The agent can retry with a fresh signature.
Yes — PayRequest implements the [open X402 spec](https://github.com/coinbase/x402) published by Coinbase. Any agent built against that spec works with PayRequest. No Coinbase account is needed on your end.
# Zapier Integration
Source: https://docs.payreque.st/integrations/zapier
Connect PayRequest to thousands of apps and automate payments, subscriptions, and payment links without code.
# Automate PayRequest with Zapier
The official PayRequest integration for Zapier lets you start workflows from successful payments and subscription events. You can also create PayRequest payment links from other apps.
Zapier uses real-time REST Hooks for the new payment and subscription triggers. Your Zap runs as soon as PayRequest records the event; it does not need to wait for a polling interval.
## What You Can Automate
Run a Zap after a payment is successfully completed in PayRequest.
Run a Zap when a subscription is created, including subscriptions that are still pending activation.
Run a Zap when a subscription or trial becomes active.
Run a Zap after a subsequent recurring subscription payment succeeds. The initial payment is not reported as a renewal.
Run a Zap when a subscription is cancelled in PayRequest.
Create an amount-based PayRequest payment link from another Zapier app.
You can also use **Find Subscription** to retrieve a subscription by its PayRequest ID.
## Connect Your Account
Sign in to PayRequest and open [Settings → Integrations](https://payrequest.app/zapier).
Select **Create Zapier token**. PayRequest creates a token with the `billing.read` and `billing.write` permissions required by the integration.
Copy the token immediately. For security, its value is shown only once.
Select **Open Zapier**, or open the [PayRequest integrations page](https://zapier.com/apps/payrequest/integrations). Create a Zap and choose PayRequest as the trigger or action app.
When Zapier asks for your PayRequest API token, paste the token you just created. Zapier tests the connection before continuing.
Select a payment or subscription event. Zapier loads recent PayRequest data so you can map fields into the next step of your workflow.
Treat the API token like a password. Do not send it by email, place it in a spreadsheet, or paste it into a Zap field other than the PayRequest account connection screen.
## Payment Data
The **Payment succeeded** trigger includes fields such as:
| Field | Description |
| - | - |
| Payment ID | Unique PayRequest transaction ID |
| Amount and currency | Paid decimal amount and ISO currency code |
| Customer | Customer ID, display name, and email address |
| Payment method | Method used for the payment |
| Payment provider | Provider that processed the payment |
| Paid at | ISO 8601 payment timestamp |
| Invoice, order, or subscription ID | Related PayRequest record when available |
PayRequest uses its transaction record as the source of truth for the amount and payment timestamp.
## Subscription Data
Subscription triggers include:
| Field | Description |
| - | - |
| Subscription ID | Unique PayRequest subscription ID |
| Status | Current subscription status |
| Name and product | Subscription and product information |
| Amount, currency, and interval | Recurring billing details |
| Customer | Customer ID, display name, and email address |
| Next payment at | Scheduled next billing time, when available |
| Cancellation details | Cancellation time and reason, when available |
| Renewal payment ID | Transaction that caused a renewal event |
Use **Subscription created** when you need to prepare work before payment activation. Use **Subscription activated** when the next step should happen only after access or billing becomes active.
## Example Zaps
* Add a customer to your CRM after a successful payment
* Send a Slack or Microsoft Teams message for a new subscription
* Grant course or community access after subscription activation
* Update a customer record after every renewal
* Start an offboarding workflow after cancellation
* Create a PayRequest payment link from a form submission
## Manage Tokens and Connections
The PayRequest **Settings → Integrations** page shows:
* How many active Zap subscriptions are registered
* Which dedicated Zapier tokens exist
* When each token was created and when it expires
* A control to revoke tokens that are no longer used
Existing token values cannot be displayed again. If you lose a token, create a new one, reconnect the PayRequest account in Zapier, and then revoke the old token.
Revoking a token immediately prevents Zapier from accessing PayRequest with that connection. Zaps using it will stop until you reconnect them with a valid token.
## Troubleshooting
Open **Settings → Integrations**, create a new Zapier token, and reconnect the PayRequest account inside Zapier. Make sure you paste only the token value and do not add `Bearer` before it.
First test the PayRequest account connection in Zapier. If authentication succeeds, make sure the PayRequest account contains at least one subscription that matches the selected trigger. The subscription sample must belong to the same PayRequest business as the token.
Create or update the relevant record in PayRequest, then test the trigger again. For example, **Subscription cancelled** needs a cancelled subscription to provide a real sample.
Reconnect the PayRequest account in Zapier with a new token, then update the affected Zaps to use that connection.
Each event includes a stable unique ID. Zapier uses this ID for deduplication, while PayRequest delivers each active REST Hook subscription independently.
## Next Steps
Learn how PayRequest API tokens and permissions work.
Build a direct webhook integration when you need custom code.
Understand subscription statuses and lifecycle events.
Create payment links directly through the API.
# Bulk Invoice Actions
Source: https://docs.payreque.st/invoices/bulk-invoice-actions
Mark multiple invoices as paid, send reminders in bulk, or export your invoices to CSV
# Bulk Invoice Actions
Instead of opening invoices one at a time, the **Bulk Actions** tool lets you select a group of invoices and apply an action to all of them at once.
Bulk Actions is available from **Bulk Actions** in your dashboard. It works across several entity types (customers, subscriptions, products, invoices, orders) — this page covers the invoice-specific actions.
## How It Works
Open **Bulk Actions** and select **Invoices**.
Choose **Manual** selection to pick individual invoices from the list (with search), or **Tags** selection to automatically include every invoice matching one or more tags (match **any** tag or **all** tags).
* **Mark as Paid** — sets the selected invoices' status to Paid
* **Send Reminders** — sends a payment reminder email to each selected invoice's customer
PayRequest shows a summary of the affected invoices before you confirm.
The action runs against every selected invoice in a single transaction. If it fails partway through, nothing is applied.
## Send Reminders Behavior
The **Send Reminders** bulk action only sends to invoices that are actually eligible:
* Skips invoices that aren't **Open** or **Pending**
* Skips invoices where the customer has no email address
* Skips customers whose email has been suppressed (e.g., due to previous bounces)
* Each reminder sent is recorded in the invoice's reminder history, same as a reminder sent from the invoice detail page
## Exporting Invoices
Exporting is a separate bulk type from the invoice actions above. Choose **Export** as the entity type, then **Export Invoices** as the action. This downloads a CSV with one row per invoice:
| Column | Description |
| - | - |
| ID | Internal invoice ID |
| Number | Invoice number |
| Customer | Customer display name, email, or client name snapshot |
| Amount (EUR) | Invoice amount before tax |
| Tax (EUR) | Calculated tax amount |
| Total (EUR) | Amount including tax |
| Status | Current invoice status |
| Date | Invoice date |
| Due Date | Due date |
| Tags | Comma-separated list of applied tags |
You can export all of your invoices, or filter the export to invoices matching selected tags — same tag matching options as manual bulk actions.
## Action History
Every bulk action run — successful or failed — is recorded, including:
* How many invoices were affected
* Which specific invoices were included
* Whether the action completed or failed (and the error, if it failed)
This history is viewable from the Bulk Actions screen so you can confirm what ran and when.
Bulk actions validate that every selected invoice belongs to your account before running — you can't accidentally act on another business's invoices even if an ID were guessed or tampered with.
## FAQ
Bulk actions for invoices currently cover marking as paid and sending reminder emails. Reminder **schedules** (days before/after, frequency) are configured per invoice or via your business's default — see [Payment Reminders](/invoices/payment-reminders).
Yes, bulk reminders don't check whether a reminder was already sent recently — each run sends a new email to every eligible selected invoice.
No, bulk actions aren't reversible automatically. For "Mark as Paid," you'd need to manually change the status back on each invoice.
## Next Steps
Configure automatic reminder schedules
Learn the invoice creation flow
Customize the reminder emails sent in bulk
Escalate invoices that reminders haven't resolved
# Consolidated Invoicing
Source: https://docs.payreque.st/invoices/consolidated-invoicing
Combine multiple subscription charges into a single invoice per customer to reduce emails and transaction costs
# Consolidated Invoicing
When customers have multiple subscriptions, they normally receive a separate invoice for each one. Consolidated invoicing bundles all subscription charges into a single periodic invoice per customer — reducing email noise and saving on transaction costs.
Consolidated invoicing requires a two-step setup: enable it globally in **Settings**, then opt in individual customers. Only subscription charges are consolidated — manual invoices and shop orders are not affected.
Customers receive one invoice instead of many, reducing inbox clutter and improving the payment experience.
Each Mollie SEPA Direct Debit transaction costs \~€0.29. Consolidating 5 subscriptions into 1 invoice saves €1.16 per billing cycle.
Choose monthly, bi-weekly, or weekly consolidation with a configurable anchor day.
Enable consolidation globally, then opt in specific customers. Each customer can have their own frequency override.
## How It Works
Go to **Settings** > **Consolidated Invoicing** and toggle the feature on. Choose a default frequency (monthly, bi-weekly, or weekly) and set the anchor day using the slider.
Edit a customer and scroll to the **Invoice Consolidation** section. Toggle **Enable Consolidated Invoicing** for that customer. Optionally set a custom frequency or anchor day override.
When a subscription billing cycle triggers, instead of creating an invoice immediately, the charge is stored as a **pending item**. The subscription's next billing date still advances normally.
On the anchor day, all pending items for the customer are bundled into a single consolidated invoice. For customers with a Mollie mandate, a single payment is created automatically. For bank transfer customers, a single invoice email is sent.
## Setting Up
### Global Settings
Navigate to **Settings** > **Consolidated Invoicing** to configure the defaults.
| Setting | Description |
| - | - |
| **Enable Consolidated Invoicing** | Master toggle for the entire feature |
| **Default Frequency** | How often consolidated invoices are generated: Monthly, Bi-weekly, or Weekly |
| **Anchor Day** | Day of the month (1-28) when invoices are generated. For weekly frequency, this becomes day of the week |
The settings page also shows how many customers are opted in and how many pending items are waiting.
Use anchor day **28** if you want end-of-month invoicing. This avoids issues with months that have fewer than 31 days.
### Per-Customer Settings
Edit any customer and look for the **Invoice Consolidation** section (only visible when the global feature is enabled).
| Setting | Description |
| - | - |
| **Enable Consolidated Invoicing** | Opt this customer in to receive consolidated invoices |
| **Frequency Override** | Override the business default frequency for this customer. Leave empty to use the default |
| **Anchor Day Override** | Override the anchor day. Slide to **0** to use the business default |
## Consolidated Invoices
Consolidated invoices appear in your invoice list with an **indigo "Consolidated" badge**. You can filter the invoice list by the **Consolidated** tab to see only these invoices.
### What's on the Invoice
Each consolidated invoice includes:
* A line item for each subscription charge in the period
* The billing period (e.g., "Mar 2026") shown in the invoice notes
* Subscription name and amount per line item
* Total amount combining all charges
### Invoice Detail View
When viewing a consolidated invoice, line items are grouped by subscription with a header showing the subscription name.
## Cancellation Handling
If a subscription is canceled while it has pending (not yet invoiced) items, those pending items are automatically **voided** — they won't appear on the next consolidated invoice.
## FAQ
The consolidation still works — they'll receive a single invoice with one line item. This is useful for consistency if you plan to add more subscriptions later.
No. Only subscription charges are consolidated. Manual invoices and shop orders are created and sent independently.
Separate consolidated invoices are generated per currency. For example, a customer with EUR and USD subscriptions would receive two consolidated invoices.
Yes. The invoice notes indicate it's a consolidated invoice and show the billing period. Each line item shows the subscription it belongs to.
Consolidated invoices are generated automatically every morning on the anchor day you configured. Subscription charges are collected throughout the period and bundled into a single invoice.
## Next Steps
Learn about subscription billing intervals and timing
Set up automatic reminders for unpaid invoices
# Creating Invoices
Source: https://docs.payreque.st/invoices/creating-invoices
How to create one-off invoices and credit notes with line items, tax, and payment reminders
# Creating Invoices
Invoices in PayRequest let you bill a customer directly, outside of a shop order or subscription — for services, one-off products, or anything you need to charge for manually. Each invoice supports product-based or custom line items, automatic tax calculation, and optional payment reminders.
You need at least one customer on file before you can create an invoice — the customer is a required field on the invoice form.
## How It Works
Go to **Invoices** in the sidebar, then click **New Invoice**.
* **Invoice Number** is pre-filled based on your [numbering format](/business-settings/invoice-settings) and is editable, but must be unique per business
* **Invoice Date** defaults to today
* **Due Date** defaults to 14 days from today
* **Reference** is an optional free-text field
Pick a customer from the dropdown. If the customer is marked **tax exempt**, all line item tax rates are automatically set to 0%.
Click **Add Product Item** or **Add Custom Item** for each line:
* **Product items** — selecting a product auto-fills its name, description, unit price, and tax rate
* **Custom items** — enter the name, description, quantity, unit price, and tax rate manually
Quantity, unit price, and tax rate can all be edited per line regardless of item type. Totals (subtotal, tax, grand total) recalculate live as you edit.
Toggle **Enable Payment Reminders** to have PayRequest automatically email the customer before and after the due date. This toggle is on by default if your business has **Auto-enable payment reminders** turned on. See [Payment Reminders](/invoices/payment-reminders) for the full schedule options.
Saving creates the invoice with status **Pending**, advances your invoice number sequence, and automatically emails an "Invoice Created" notification to the customer (using your [Email Templates](/invoices/email-templates) if configured).
## Invoice Statuses
| Status | Meaning |
| - | - |
| **Draft** | Not yet finalized |
| **Open / Pending** | Sent to the customer, awaiting payment (new invoices start as **Pending**) |
| **Paid** | Payment received — set automatically when the linked Mollie payment succeeds, or manually |
| **Overdue** | Not a stored status — a computed view of any open/pending/unpaid invoice past its due date |
| **Cancelled** | Voided, no longer collectible |
| **Chargeback** | Payment was disputed/reversed after being marked paid |
Status can also be changed manually from the invoice detail page. Changing an invoice **away from Paid** requires entering a reason, which is logged to the invoice's activity history.
## Credit Notes
The same form doubles as a credit note creator. Toggle **Credit Note** at the top of the form to switch modes:
* Optionally link the credit note to an existing invoice via **Original Invoice**
* Line item amounts are stored as negative values
* The credit note is created with status **Paid** immediately (it represents a reduction, not something awaiting payment)
* An email is sent to the customer if they have an email address on file
Payment reminders aren't available for credit notes — the reminder toggle is disabled automatically when Credit Note mode is on.
## Tax on Line Items
Each line item stores its own tax rate. When line pricing is tax-inclusive, PayRequest extracts the tax portion from the line total rather than adding it on top. See [Tax Configuration for Invoices](/invoices/tax-configuration) for the full breakdown of tax-exempt customers, product tax rates, and mixed rates.
## FAQ
Yes. Open the invoice and use the **Edit** action — you can change the customer, dates, and line items. Editing replaces all existing line items with the ones on the edit form.
Yes, an "Invoice Created" email is dispatched automatically (or "Credit Note Created" for credit notes), using your custom email template if you've set one up, or a default template otherwise.
Every saved invoice (regular or credit note) advances your next invoice number, based on the format configured in [Invoice Settings](/business-settings/invoice-settings).
The tax rate defaults to 0% for all items when the customer is tax exempt, but you can manually change an individual line's tax rate afterward if needed.
## Next Steps
Configure your invoice numbering format
Customize your invoice logo and footer
Automate follow-ups for unpaid invoices
Mark invoices as paid or send reminders in bulk
# Duplicate Invoices
Source: https://docs.payreque.st/invoices/duplicate-invoices
Learn how to quickly create copies of existing invoices to save time when billing for similar services or recurring work
# Duplicate Invoices
The invoice duplication feature allows you to quickly create copies of existing invoices, saving you time when you need to bill for similar services or create recurring invoices with the same line items.
## Why Use Invoice Duplication?
Invoice duplication is perfect when you need to:
* Bill a customer for the same services again
* Create similar invoices for different customers
* Set up recurring billing without subscription automation
* Re-issue an invoice that was cancelled or voided
* Create template-style invoices for common billing scenarios
## How to Duplicate an Invoice
### Step 1: Navigate to the Invoice
1. Go to your dashboard
2. Click on **Invoices** in the sidebar
3. Find the invoice you want to duplicate
4. Click on the invoice to open its detail page
### Step 2: Duplicate the Invoice
1. On the invoice detail page, look for the **Duplicate** button in the action menu
2. Click the **Duplicate** button
3. The system will automatically create a new invoice
### Step 3: Review Your New Invoice
After duplication, you'll be automatically redirected to the new invoice where you can:
* Review all copied details
* Make any necessary adjustments
* Send it to your customer when ready
## What Gets Copied?
When you duplicate an invoice, the following information is copied:
### Customer Information
* Customer name and contact details
* Billing address
* Any customer-specific settings
### Invoice Items
* All line items (products and custom items)
* Quantities and unit prices
* Descriptions and notes
* Tax rates and calculations
### Invoice Settings
* Currency
* Tax configuration
* Notes and terms
## What Gets Changed Automatically?
To ensure your duplicated invoice is ready to use, these fields are automatically updated:
| Field | Original Value | New Value |
| - | - | - |
| Invoice Number | Original number | New sequential number |
| Status | Any status | **Concept** |
| Invoice Date | Original date | **Today's date** |
| Due Date | Original due date | **30 days from today** |
| Payment ID | Linked payment | **Cleared** |
The new invoice always starts as a **Concept** so you can review and edit it before sending to your customer.
## Common Use Cases
### Monthly Retainer Billing
For clients on a monthly retainer:
1. Create the first month's invoice with all services
2. Each month, open the previous invoice and duplicate it
3. Adjust the date range or description if needed
4. Send to your client
### Similar Services for Different Clients
When you provide the same service package to multiple clients:
1. Create a detailed invoice for one client
2. Duplicate it
3. Change the customer to the new client
4. Adjust pricing if needed
### Correcting Invoices
If you need to re-issue an invoice:
1. Open the original invoice
2. Duplicate it
3. Make the necessary corrections
4. Cancel or void the original if appropriate
### Creating Invoice Templates
Build a library of "template" invoices:
1. Create invoices for your common service packages
2. Keep them as concepts
3. Duplicate when needed for actual billing
4. Customize for each customer
## Step-by-Step Workflow
### For Recurring Monthly Billing
```
Original Invoice (#2024-001)
├── Service: Monthly Retainer
├── Amount: €500.00
├── Customer: Acme Corp
└── Status: Paid
↓ Click "Duplicate"
New Invoice (#2024-002)
├── Service: Monthly Retainer
├── Amount: €500.00
├── Customer: Acme Corp
├── Date: Today
├── Due Date: 30 days from now
└── Status: Concept ← Ready to edit and send!
```
## Tips for Effective Invoice Duplication
### Before Duplicating
* Ensure the original invoice has accurate line items
* Verify tax rates are correct
* Check that product references are up to date
### After Duplicating
1. **Update the description** if it contains date references
2. **Verify the customer** is correct (especially when duplicating for a different client)
3. **Check the amounts** - prices may have changed
4. **Review the due date** - 30 days may not suit all clients
5. **Add any new items** that should be included
### Organization Tips
* Use clear invoice numbers for easy tracking
* Add internal notes to track duplicated invoices
* Consider using tags to group related invoices
## Frequently Asked Questions
**Q: Does duplicating an invoice affect the original?**
A: No, the original invoice remains completely unchanged. Duplication creates an entirely new, independent invoice.
**Q: Can I duplicate a paid invoice?**
A: Yes! You can duplicate invoices regardless of their status (concept, sent, paid, overdue, etc.). The new invoice will always start as a concept.
**Q: What happens to the invoice number?**
A: A new invoice number is automatically generated following your invoice numbering sequence. This ensures all your invoices have unique numbers.
**Q: Can I duplicate an invoice to a different customer?**
A: The duplicate is created for the same customer, but you can change the customer after duplication by editing the new invoice.
**Q: Are attachments duplicated?**
A: Attachments are not duplicated to avoid unnecessary file duplication. You can add attachments to the new invoice manually if needed.
**Q: Is there a limit to how many times I can duplicate an invoice?**
A: No, you can duplicate invoices as many times as needed.
**Q: Can I undo a duplication?**
A: You can delete the duplicated invoice if you don't need it. The original invoice is never affected.
## Related Features
* [Creating Invoices](/invoices/creating-invoices) - Learn how to create invoices from scratch
* [Invoice Templates](/invoices/invoice-templates) - Set up reusable invoice templates
* [Bulk Invoice Actions](/invoices/bulk-invoice-actions) - Manage multiple invoices at once
* [Payment Reminders](/invoices/payment-reminders) - Automate payment follow-ups
# Email Templates
Source: https://docs.payreque.st/invoices/email-templates
Customize the emails PayRequest sends automatically for invoices, orders, and subscriptions
# Email Templates
Every new PayRequest account gets a set of default email templates for the automated emails PayRequest sends — invoice notifications, payment reminders, order confirmations, and subscription lifecycle emails. You can customize the subject and content of each one to match your brand's voice.
Email Templates are managed on the **Email Templates** page in your dashboard. A default template is created automatically for every template type when your account is created, so customization is optional.
## Template Types
Templates that affect invoices:
| Type | Sent When |
| - | - |
| **Invoice Created** | A new invoice is created and (if applicable) emailed to the customer |
| **Invoice Paid** | An invoice's status changes to Paid |
| **Payment Reminder** | An automatic or manual payment reminder is sent for an unpaid invoice |
| **Credit Note Created** | A credit note is created |
Other template types cover orders and subscriptions (Order Confirmation, Order Completed, Subscription Created, Subscription Renewal, Subscription Ended, Subscription Payment Failed, Subscription Suspended, Subscription Price Increase) and use the same editor.
## How It Works
Go to **Email Templates** in your dashboard.
Click on any template type to open the editor.
Both fields support the template variables listed below — wrap a variable name in double curly braces, e.g. `{{invoice_number}}`.
Turning a template **off** doesn't disable the notification — it falls back to sending PayRequest's built-in default content for that email type instead.
Changes apply to every future email of that type immediately.
Click **Use Default Content** in the editor at any time to reset a template's body back to PayRequest's built-in version, in case you want to start over.
## Available Variables
Variables are replaced with real values when the email is sent. All templates have access to these common variables:
| Variable | Description |
| - | - |
| `{{business_name}}` | Your business name |
| `{{business_email}}` | Your account email |
| `{{customer_name}}` | The recipient's display name |
| `{{customer_email}}` | The recipient's email address |
| `{{current_date}}` | Today's date |
Invoice-related templates (**Payment Reminder**, **Invoice Created**, **Invoice Paid**, **Credit Note Created**) additionally have:
| Variable | Description |
| - | - |
| `{{invoice_number}}` | The invoice number |
| `{{invoice_amount}}` | The invoice total, formatted as currency |
| `{{invoice_due_date}}` | The invoice due date |
| `{{payment_link}}` | Direct link to pay the invoice |
| `{{invoice_items}}` | An HTML table of the invoice's line items with subtotal, tax, and total |
Available variables are shown in the editor for the template type you're editing, so you don't need to memorize them.
## Localization
If you haven't customized a template's subject or content, PayRequest automatically shows it in the customer's language when translations are available. As soon as you type your own custom text into a template, your text is used as-is and is not automatically translated.
## FAQ
An empty active template would send a blank email, so use the **inactive** toggle instead if you want PayRequest's default content to be used — don't leave a template active with empty content.
Yes. Template content is rendered as HTML, so you can use basic tags for formatting, links, and styling — this is how the default templates create buttons and tables.
Yes. Any time PayRequest sends an "Invoice Created," "Invoice Paid," "Payment Reminder," or "Credit Note Created" email — whether triggered automatically or by a manual action like a bulk reminder — it uses your active template for that type.
## Next Steps
Configure when reminder emails are sent
Learn the invoice creation flow that triggers these emails
Customize the visual appearance of the invoice document itself
Send reminder emails to multiple invoices at once
# Invoice Payment Links
Source: https://docs.payreque.st/invoices/invoice-payment-links
Learn how to share payment links with customers and manage invoice payments
## Overview
Invoice payment links make it easy for your customers to pay their invoices online. Every invoice in PayRequest automatically gets a unique payment link that you can share with customers via email, messaging apps, or any other channel.
## How Payment Links Work
When you create an invoice, PayRequest automatically generates a secure payment link for it. This link:
* **Pre-fills all invoice information** - Amount, customer details, and invoice items
* **Shows invoice status** - Customers see if the invoice is paid, pending, or overdue
* **Works on any device** - Mobile-friendly payment experience
* **Never expires** - The link remains valid until the invoice is paid
* **Is unique per invoice** - Each invoice has its own dedicated link
## Payment Link Format
Payment links use your PayRequest business name:
```
https://payrequest.me/yourbusiness?invoice=132
```
**Why payrequest.me?**
Payment links always use the PayRequest.me domain for security and reliability, even if you have a custom shop domain configured. Your custom domain is reserved for your shop storefront.
## Sharing Payment Links
### From the Invoice List
1. Go to **Invoices** in your dashboard
2. Find the invoice you want to share
3. Click the **three dots (⋮)** next to the invoice
4. Click **"Payment Link"**
5. The link opens in a new tab - copy the URL to share it
### From Invoice Details
When viewing a specific invoice, you have two options:
#### Share Link Button
1. Open the invoice details page
2. Click the **"Share Payment Link"** button in the header
3. A modal opens with:
* The full payment link (click to copy)
* A QR code for easy mobile scanning
* Options to share directly
#### Pay Now Button
* If the invoice is unpaid, you'll see a **"Pay Now"** button
* Click it to open the payment page in a new tab
* Copy the URL from your browser to share with the customer
## What Customers See
When customers open a payment link, they see:
### Invoice Information Header
* **Your business name and logo**
* **Invoice number** (e.g., "Invoice #132")
* **Status badge** with color coding:
* 🟢 **Green** = Paid
* 🟡 **Yellow** = Pending payment
* ⚪ **Gray** = Open/Draft
* 🔴 **Red** = Overdue or Failed
### For Unpaid Invoices
* All invoice items with descriptions and prices
* Payment method options (iDEAL, Credit Card, etc.)
* Customer information pre-filled
* "Pay Now" button to complete payment
### For Paid Invoices
* ✅ **Success message** confirming payment
* Payment date and time
* Complete list of purchased items
* Total amount paid
* **No payment form** (prevents accidental double payments)
## Using Payment Links in Emails
### Automatic Email Links
When you send invoice emails from PayRequest, payment links are automatically included in the email template. Customers can click directly from their inbox.
### Manual Email Sharing
To share a payment link via your own email:
1. Get the payment link from your dashboard
2. Write your email message
3. Add the link as a button or hyperlink:
```
Hi [Customer Name],
Your invoice #132 is ready for payment.
Click here to pay: https://payrequest.me/yourbusiness?invoice=132
Thank you!
```
## Payment Link Best Practices
### ✅ Do's
* **Include context** - Always mention the invoice number when sharing links
* **Add due dates** - Let customers know when payment is expected
* **Use reminders** - Set up automatic payment reminders for overdue invoices
* **Test the link** - Click it yourself before sharing to ensure it works
* **Track payments** - Check your dashboard for payment confirmations
### ❌ Don'ts
* **Don't share via unsecured channels** - Avoid posting payment links publicly
* **Don't modify the URL** - Share the complete link as-generated
* **Don't create duplicate invoices** - Use the retry feature if payment fails
* **Don't share expired links** - Links work until paid, but keep invoices current
## Sharing Payment Links via QR Code
QR codes make it easy for customers to pay from their mobile devices:
### Generating QR Codes
1. Open the invoice details
2. Click **"Share Payment Link"**
3. The modal displays a QR code automatically
4. Customers can scan with their phone camera
### Where to Use QR Codes
* **Printed invoices** - Include QR code on PDF invoices
* **In-person payments** - Show QR code on tablet or phone
* **Physical locations** - Display on counters or signage
* **Receipts** - Add to printed receipts for easy re-ordering
## Payment Methods Available
When customers use payment links, they can pay with:
* **iDEAL** - Direct bank payments (Netherlands)
* **Credit/Debit Cards** - Visa, Mastercard, American Express
* **SEPA Direct Debit** - For recurring subscriptions
* **Bank Transfer** - Manual payment instructions
* **Other local methods** - Based on your payment provider settings
The available methods depend on which payment providers you've connected in your PayRequest settings.
## Security & Privacy
Payment links are secure:
* ✅ **HTTPS encryption** - All payment pages use secure connections
* ✅ **No sensitive data** - Links don't contain payment information
* ✅ **PCI compliant** - Payment processing meets industry standards
* ✅ **Fraud prevention** - Built-in security checks
* ✅ **Audit trail** - All payments are logged and tracked
## Tracking Payment Link Usage
### Monitor Link Activity
In your dashboard, you can track:
* **Payment status** - See which invoices have been paid
* **Payment date/time** - Know exactly when payment was received
* **Payment method** - Track how customers prefer to pay
* **Failed payments** - Identify invoices needing follow-up
### Activity Log
Every time a customer uses a payment link, the action is recorded:
1. Go to **Activity** in your dashboard
2. Filter by invoice number
3. See all payment attempts and completions
## Common Scenarios
### Scenario 1: Customer Wants to Pay Later
**Situation:** Customer receives invoice but wants to pay next week
**Solution:**
* Payment link remains valid
* Customer can bookmark the link
* Or you can resend it when they're ready
### Scenario 2: Payment Link Not Working
**Situation:** Customer reports the link doesn't work
**Check these things:**
1. Ensure link wasn't cut off in email (send as clickable button)
2. Verify invoice isn't already marked as paid
3. Check payment provider is connected and active
4. Try the link yourself to reproduce the issue
### Scenario 3: Customer Lost the Link
**Situation:** Customer can't find the payment link email
**Solution:**
1. Go to invoice in your dashboard
2. Click "Share Payment Link"
3. Send the link again via email, SMS, or messaging app
### Scenario 4: Multiple Payment Reminders
**Situation:** Invoice is overdue and you want to send reminders
**Solution:**
* Use the same payment link in all reminders
* Set up automatic payment reminders in settings
* Each reminder includes the original payment link
## Integration with Other Features
### Works With Payment Reminders
Payment links are automatically included in:
* Initial invoice emails
* Overdue reminders
* Payment confirmation emails
### Works With Subscriptions
For subscription-based invoices:
* Each billing cycle gets a new invoice with its own link
* Links connect to subscription payment methods
* Customers can update payment details via the link
### Works With Custom Domains
Even if your shop uses a custom domain (e.g., yourshop.com):
* Payment links use payrequest.me for consistency
* Your branding still appears on the payment page
* This ensures payment security and reliability
## Troubleshooting
### Link Shows 404 Error
**Cause:** Invoice was deleted or business name changed
**Fix:** Verify invoice exists in dashboard, regenerate link if needed
### Payment Form Not Showing
**Cause:** Invoice already marked as paid
**Fix:** Check invoice status, use payment retry if needed
### Wrong Business Name in Link
**Cause:** Shop name was changed after link creation
**Fix:** Links automatically update to current business name
### Customer Can't Select Payment Method
**Cause:** Payment provider not connected or inactive
**Fix:** Go to Settings → Payment Providers and verify connection
## Related Articles
* [Invoice Payment Retry](/invoices/invoice-payment-retry)
* [Creating Invoices](/invoices/creating-invoices)
* [Payment Reminders](/invoices/payment-reminders)
* [Setting Up Payment Providers](/payment-processing/setting-up-payment-providers)
* [Email Templates](/invoices/email-templates)
# Invoice Payment Retry
Source: https://docs.payreque.st/invoices/invoice-payment-retry
Learn how customers can retry payments for unpaid invoices and what happens when invoices are already paid
## Overview
When customers encounter issues during payment (such as canceling an iDEAL transaction or experiencing a payment failure), PayRequest makes it easy for them to try again without creating duplicate invoices. The payment retry system ensures a smooth experience while maintaining accurate records.
## How Payment Retry Works
### Sharing Invoice Payment Links
When you create an invoice in PayRequest, you can share a payment link with your customer. This link includes the invoice number and automatically pre-fills all payment information.
**Example payment link:**
```
https://payrequest.me/yourbusiness?invoice=132
```
When customers open this link, they'll see all invoice details pre-filled, including:
* Invoice amount
* Product or service details
* Customer name and email
* Any notes or descriptions
### When Payment Fails or Is Canceled
If a customer cancels their payment or encounters an error (for example, closing the iDEAL payment screen), they can simply click the **"Try Again"** button to return to the payment page.
**What happens:**
1. Customer is returned to the payment page with all information pre-filled
2. The same invoice number is maintained (no duplicates created)
3. Customer can immediately retry the payment without re-entering information
4. If an order was created, it remains linked to the original invoice
### Benefits of the Retry System
✅ **No Duplicate Invoices** - The system reuses the existing invoice instead of creating a new one
✅ **Pre-filled Information** - Customers don't need to re-enter their details
✅ **Order Preservation** - If products were ordered, they remain linked correctly
✅ **Clean Records** - Your invoice numbering stays sequential without gaps from failed payments
## Viewing Paid Invoices
### What Customers See
When a customer opens a payment link for an invoice that's already been paid, they'll see:
* A **green success message** confirming the invoice has been paid
* The **invoice number** and payment date
* A detailed list of **all items** on the invoice with quantities and prices
* The **total amount paid**
**No payment form is shown** - this prevents customers from accidentally paying twice.
## Pending Payment Protection
### SEPA Direct Debit Processing
When a customer pays an invoice via SEPA Direct Debit (bank transfer), the payment takes 1-3 business days to complete. During this time, the invoice status is "pending" rather than "paid".
**Duplicate Payment Prevention:**
If a customer opens a payment link for an invoice with a pending SEPA payment, they'll see:
* A **yellow warning callout**: "Payment Processing"
* Message: "SEPA Direct Debit is pending. This typically takes 1-3 business days to complete."
* Full invoice details (items, quantities, total amount)
* **No payment form** - completely hidden to prevent duplicate charges
This protection ensures customers cannot accidentally pay twice while waiting for their bank transfer to complete.
### Why This Matters
SEPA Direct Debit payments can take several days to process. Without this protection:
* Customers might think their payment failed
* They could try to pay again, resulting in double charges
* Business owners would need to manually process refunds
With pending payment protection:
* ✅ Customers see clear status information
* ✅ Duplicate payments are impossible
* ✅ No manual intervention needed
* ✅ Professional, transparent experience
### Invoice Items Display
Paid invoices show a clear breakdown including:
* Product or service names
* Quantities ordered
* Price per item
* Total for each line item
* Grand total amount paid
This gives customers a complete record of their purchase without the risk of duplicate charges.
## Best Practices
### For Business Owners
1. **Share Specific Invoice Links** - When following up on unpaid invoices, include the invoice parameter in the link (`?invoice=132`)
2. **Enable Email Notifications** - Set up automatic email reminders for unpaid invoices with retry links
3. **Monitor Failed Payments** - Check your dashboard regularly for invoices that need attention
### For Customers
1. **Don't Refresh During Payment** - Wait for payment confirmation before closing the page
2. **Use the Try Again Button** - If payment fails, use the provided button rather than the browser back button
3. **Check Your Email** - Payment confirmations and retry links are sent automatically
## Common Scenarios
### Scenario 1: Customer Cancels iDEAL Payment
**What happens:**
* Customer clicks "Cancel" on their bank's iDEAL screen
* They're redirected to a PayRequest page with a "Try Again" button
* Clicking the button returns them to the payment page with all details pre-filled
* They can immediately start a new iDEAL payment for the same invoice
### Scenario 2: Payment Link Already Paid
**What happens:**
* Customer opens a payment link for invoice they already paid
* Green success callout appears: "This invoice has already been paid"
* Full invoice details are displayed (items, quantities, total)
* No payment button is shown - prevents double charging
### Scenario 3: Following Up on Unpaid Invoice
**What happens:**
* You send customer the payment link from your dashboard
* Customer opens link and sees all invoice details pre-filled
* They complete payment using their preferred method
* Both you and the customer receive confirmation
## Troubleshooting
### Customer Says They Can't Pay
**Check these things:**
1. Ensure the invoice isn't already marked as paid in your dashboard
2. Verify the payment link includes the correct invoice number
3. Confirm your payment provider (Mollie/Stripe) is properly connected
### Duplicate Invoices Appearing
**This shouldn't happen with the retry system**, but if you see duplicates:
1. Check if customer clicked "Pay" multiple times rapidly
2. Verify only one invoice has actual payment associated
3. You can safely delete/void the duplicate invoice without payment
## Related Articles
* [Creating Invoices](/invoices/creating-invoices)
* [Payment Reminders](/invoices/payment-reminders)
* [Payment Methods](/payment-processing/payment-methods-overview)
* [Customer Portal](/customer-management/customer-portal)
# Invoice Templates
Source: https://docs.payreque.st/invoices/invoice-templates
Customize your invoice's logo, footer, and branding
# Invoice Templates
PayRequest generates invoice PDFs and pages using a single, consistent layout — you customize its branding (logo, footer text and styling) rather than choosing between multiple template designs. Changes apply to every invoice you generate going forward.
Invoice branding is managed at **Settings → Business → Invoice Design**. The same screen also has a **Numbering** tab — see [Invoice Settings](/business-settings/invoice-settings) for that part.
## Logo
On the **Logo** tab, upload an image file (max 1MB). It's stored and served from your account's file storage.
Pick **Small**, **Medium**, or **Large** to control how large the logo appears at the top of your invoices.
Click **Remove Logo** to delete the uploaded file and fall back to no logo.
## Footer
The **Footer** tab controls the block of text shown at the bottom of every invoice, plus one invoice-wide display setting:
| Setting | Description |
| - | - |
| **Show IBAN on Invoice** | Toggle whether your bank IBAN is displayed on invoices (appears under your VAT number) |
| **Footer Text** | Free-text message shown at the bottom of the invoice (e.g., "Thank you for your business!") |
| **Footer Text Size** | Small, Medium, or Large |
| **Footer Alignment** | Left, Center, or Right |
| **Footer Text Color** | A color picker for the footer text |
## Preview
The **Preview** tab renders a live sample invoice using your current logo, footer, and numbering settings, so you can check how a real invoice will look before saving. The preview uses placeholder customer and line item data — it doesn't pull from a real invoice.
## FAQ
No — there's one invoice layout per business. All invoices you generate use the same logo, footer, and numbering settings.
No. Styling changes apply to invoices generated after you save — previously generated PDFs aren't regenerated.
Standard image formats are accepted, up to 1MB in size.
## Next Steps
Configure your invoice numbering format
Learn the invoice creation flow
How VAT/BTW is displayed on your invoice PDFs
Set your company name, address, and VAT number shown on invoices
# Partial Payments
Source: https://docs.payreque.st/invoices/partial-payments
How partial refunds work on paid invoices, and your options when a customer can't pay in full
# Partial Payments
An individual invoice in PayRequest is paid in a single payment for the full amount — there's no built-in "pay half now, half later on this invoice" option at checkout. What PayRequest does support is **partial refunds** on invoices that have already been paid, plus a separate installment mechanism for invoices that have gone to debt collection.
If you're looking for a way to split an unpaid invoice into monthly installments, see [Payment Plans](/debt-collection/payment-plans) — that feature is available once an invoice is in a debt collection case.
## Partial Refunds
From a **paid** invoice's detail page, you can issue a refund for less than the full amount, refund it in stages, or convert part of it into a credit note. This is the core "partial payment" adjustment available on any invoice.
Go to the invoice detail page and click **Refund Invoice**.
| Option | What it does |
| - | - |
| **Full Refund** | Refunds the entire remaining (unrefunded) amount |
| **Setup Fee Refund** | Refunds only the remaining setup fee portion, if the invoice has one |
| **Partial Refund** | Refund a custom amount you specify, up to the remaining balance |
| **Create Credit Invoice + Refund** | Generates a credit note for the amount you specify and processes the matching refund |
For **Partial Refund** or **Credit Invoice**, enter the amount to refund. An optional description is stored with the refund record.
PayRequest calls the Mollie refund API against the invoice's original payment and records the result.
### How the Remaining Amount Is Tracked
Every invoice tracks a **remaining amount** — the invoice total minus all refunds that are pending, processing, or completed. You can issue multiple partial refunds against the same invoice as long as there's still a remaining balance above €0.01.
Mollie doesn't allow two refunds of the **exact same amount** on the same payment. If you try to refund an amount that matches an existing pending or completed refund, PayRequest blocks it and shows you the conflicting refund's status.
### Credit Invoice + Refund
Choosing **Create Credit Invoice + Refund** does two things at once: it creates a credit note (a separate invoice record with negative, proportionally-calculated line items referencing the original), and it processes a Mollie refund for the same amount. This is useful when you need a formal accounting document alongside the refund, rather than just a refund transaction.
## Splitting an Unpaid Invoice Into Installments
If a customer genuinely can't pay an invoice in full, PayRequest doesn't support partial/installment collection on a standalone invoice directly. Instead, escalate the invoice to a **Debt Collection** case, where you (or the customer) can set up a [Payment Plan](/debt-collection/payment-plans) that splits the outstanding balance into 2, 3, 6, or 12 monthly installments, billed automatically via a linked subscription.
## Authorization Holds (Partial Capture)
A related but distinct concept: [Security Deposits](/payment-processing/security-deposits) let you place a credit card authorization hold on a product order and later **capture only part of it** (e.g., charging €75 of a €500 hold for minor damage). This applies to deposit-enabled products, not to standard invoices.
## FAQ
No — invoices are paid in full in a single Mollie payment. If the customer needs to spread the cost, use a Debt Collection [Payment Plan](/debt-collection/payment-plans) instead.
Yes, as long as the invoice still has a remaining (unrefunded) balance above €0.01, and each refund is for a different amount.
A partial refund doesn't change the invoice's status — it stays **Paid**. The refund is tracked separately and shown on the invoice's activity timeline.
No. Refunds require an existing Mollie payment on the invoice — there's nothing to refund on an unpaid invoice.
## Next Steps
How customers can request a refund themselves
Split an overdue invoice into monthly installments
Authorization holds with partial capture for products
What happens when a payment is disputed instead of refunded
# Payment Reminders
Source: https://docs.payreque.st/invoices/payment-reminders
Automated follow-up sequences to get invoices paid on time
# Payment Reminders
PayRequest can automatically remind your customers about unpaid invoices, so you don't have to chase payments manually.
## How Reminders Work
When you enable payment reminders on an invoice, PayRequest sends automatic email reminders based on your schedule.
### Setting Up Reminders
1. Open any invoice
2. Go to the **Payment Reminders** tab
3. Toggle reminders **on**
4. Configure your preferences:
| Setting | Description |
| - | - |
| **Days before due date** | Send a reminder X days before the invoice is due |
| **Days after due date** | Send a reminder X days after the due date |
| **Frequency** | How often to send reminders (e.g., every 7 days) |
### Automatic Schedule
Reminders are processed daily at **9:00 AM**. The system checks all invoices with reminders enabled and sends emails according to your schedule.
### Manual Reminders
You can also send reminders manually at any time:
* **Single invoice**: Click **Send Reminder** on the invoice detail page
* **Bulk action**: Select multiple invoices and use the **Send Reminder** bulk action
## Reminder Email
Each reminder includes:
* Your business branding
* Invoice number and amount
* Due date (and how many days overdue)
* Direct payment link
* Your custom message (if configured)
## Tracking Reminders
The Payment Reminders tab on each invoice shows a complete history:
* Date and time each reminder was sent
* Whether it was automatic or manual
* Delivery status
## When Reminders Aren't Enough
If regular payment reminders don't result in payment, you can escalate to formal debt collection:
1. Invoice reminders go unanswered for 14+ days
2. Open a **Debt Collection** case from the invoice
3. The collection pipeline takes over with escalating communication
Escalate unpaid invoices to formal collection
Share payment links with customers
Send reminders to multiple invoices at once
Customize your reminder email templates
Bounced emails are automatically suppressed with delivery confirmation
# Refund Requests
Source: https://docs.payreque.st/invoices/refund-requests
How customers can request refunds for paid invoices through the customer portal
## Overview
Customers can request refunds for paid invoices directly from their customer portal. Instead of needing to contact you through a generic support form, they get a dedicated, streamlined refund request page linked to the specific invoice they want refunded.
Refund requests don't process refunds automatically. They create a support ticket of type "Refund Request" for you to review and act on. You remain in full control of whether to approve or decline the refund.
## How It Works
### Customer Experience
When a customer views a **paid** invoice in their customer portal, they see a **"Request Refund"** button next to the "Download PDF" button in the invoice actions area.
Customer navigates to their invoice detail page in the customer portal and sees the "Request Refund" button alongside other actions
After clicking the button, a dedicated refund request page loads showing the full invoice summary: invoice number, date, amount, and line items
Customer fills in a subject (pre-filled with the invoice number) and writes a reason for their refund request using a rich text editor
Customer submits the form. A support ticket is created with type "Refund Request", linked directly to the invoice, and the customer is redirected back to the invoice detail page with a success message
### What Gets Created
When a customer submits a refund request, a **Support Request** record is created with:
| Field | Value |
| - | - |
| **Type** | Refund Request |
| **Priority** | Medium |
| **Related Record** | The specific invoice (automatically linked) |
| **Subject** | Pre-filled with "Refund request for invoice \[number]" |
| **Message** | Customer's reason for the refund |
| **Status** | Open |
### Duplicate Prevention
The system prevents customers from submitting multiple refund requests for the same invoice:
* If an **open or in-review** refund request already exists for that invoice, the "Request Refund" button on the invoice detail page changes to a disabled **"Refund Requested"** button
* If the customer navigates directly to the refund request page, they see a callout informing them that a request has already been submitted, with a link to view their existing ticket
## Managing Refund Requests
### Viewing Requests
Refund requests appear in your **Support Requests** section alongside all other customer requests. You can filter by type "Refund Request" to see only refund-related tickets.
Each refund request is automatically linked to the relevant invoice, so you can quickly see:
* Which invoice the customer wants refunded
* The invoice amount and items
* The customer's stated reason
### Processing a Refund
Open the refund request from your Support Requests page. Review the customer's reason and the linked invoice details
Determine whether to approve a full refund, partial refund, or decline the request based on your business policies
If approved, process the refund through your Mollie dashboard or via the invoice's refund functionality in PayRequest
Respond to the customer through the support ticket and mark it as Resolved (or Rejected if declined)
Respond to refund requests promptly. Quick, clear communication builds customer trust even when you need to decline a refund.
## Where Customers Find It
The "Request Refund" button appears in two locations, depending on your shop setup:
* **Standard shop URL**: `yourshop.payrequest.shop/customer/invoices/{id}`
* **Custom domain**: `shop.yourbusiness.com/customer/invoices/{id}`
The refund request page is accessible at:
* **Standard**: `/shop/{storename}/customer/invoices/{id}/refund`
* **Custom domain**: `/customer/invoices/{id}/refund`
The "Request Refund" button only appears for invoices with a **paid** status. Unpaid, pending, or canceled invoices do not show the refund option.
## Next Steps
Learn more about the full customer portal experience
Understand the difference between refund requests and chargebacks
Share payment links with customers for unpaid invoices
Set up automated reminders for unpaid invoices
# Tax Configuration for Invoices
Source: https://docs.payreque.st/invoices/tax-configuration
Configure VAT/BTW rates, tax display, and exemptions on your invoices
# Tax Configuration for Invoices
PayRequest automatically calculates and displays taxes on your invoices based on your business settings, product configurations, and customer tax status. This guide explains how tax appears on invoices and how to configure it.
## How Invoice Tax Works
When you create an invoice, PayRequest:
1. **Checks the customer's tax status** - Is the customer tax exempt?
2. **Applies product tax rates** - Each line item uses its product's configured tax rate
3. **Calculates tax amounts** - Based on tax-included or tax-excluded pricing
4. **Generates the invoice** - With full tax breakdown for compliance
Tax settings are determined hierarchically: Customer exemption > Product tax rate > Business default rate
## Tax on Invoice Line Items
Each invoice item shows:
| Field | Description |
| - | - |
| **Description** | Product/service name |
| **Quantity** | Number of units |
| **Unit Price** | Price per unit |
| **Tax Rate** | VAT/BTW percentage |
| **Tax Amount** | Calculated tax for this line |
| **Total** | Line total including/excluding tax |
### Example Invoice Breakdown
**Standard Customer (21% BTW):**
```
┌──────────────────────────────────────────────────────┐
│ Invoice #2025-0042 │
│ Customer: Acme B.V. │
├──────────────────────────────────────────────────────┤
│ Item Qty Price Tax Total │
├──────────────────────────────────────────────────────┤
│ Web Hosting 1 €50.00 21% €60.50 │
│ SSL Certificate 1 €25.00 21% €30.25 │
│ Support Hours 3 €75.00 21% €90.75 │
├──────────────────────────────────────────────────────┤
│ Subtotal (excl. BTW) €150.00 │
│ BTW 21% €31.50 │
│ Total €181.50 │
└──────────────────────────────────────────────────────┘
```
**Tax-Exempt Customer (BTW Verlegd):**
```
┌──────────────────────────────────────────────────────┐
│ Invoice #2025-0043 │
│ Customer: Euro Partners GmbH │
│ VAT: DE123456789 │
│ BTW VERLEGD │
├──────────────────────────────────────────────────────┤
│ Item Qty Price Tax Total │
├──────────────────────────────────────────────────────┤
│ Consulting 10 €100.00 0% €1,000.00 │
├──────────────────────────────────────────────────────┤
│ Subtotal €1,000.00 │
│ BTW (Verlegd) €0.00 │
│ Total €1,000.00 │
└──────────────────────────────────────────────────────┘
```
## Configuring Tax Rates
### Business Default Tax Rate
Set your default tax rate in **Settings > Tax & Currency**:
Go to **Settings** in your dashboard sidebar.
Click on the **Tax & Currency** tab.
Enter your standard tax rate (e.g., **21** for 21% Dutch BTW).
Click **Save** to apply the new default rate.
This default rate is used when:
* Creating new products (as their initial tax rate)
* Adding manual invoice items without a product reference
### Per-Product Tax Rates
Each product can have its own tax rate that overrides the default:
1. Go to **Products > \[Select Product] > Edit**
2. Find the **Tax Settings** section
3. Set the **Tax Rate** for this product
4. Toggle **Tax Included** if the price includes tax
**21% Standard Rate (Algemeen tarief)**
* Most goods and services
* Software licenses
* Consulting services
* Digital products
**9% Reduced Rate (Verlaagd tarief)**
* Books and e-books
* Food products
* Medications
* Hotel accommodations
* Cultural events
**0% Zero Rate (Nultarief)**
* Exports outside EU
* Intra-EU B2B supplies
* Certain medical services
## Tax Included vs Excluded
### Tax Included (Recommended for B2C)
When **Tax Included** is enabled on a product:
* The price you set is what customers see
* Tax is calculated backwards: `Tax = Price - (Price / (1 + Rate/100))`
* Better for consumer-facing pricing
**Example:**
* Price set: €121.00
* Tax rate: 21%
* Tax calculation: €121 - (€121 / 1.21) = €21.00
* Net amount: €100.00
### Tax Excluded (Common for B2B)
When **Tax Included** is disabled:
* The price you set is the net price
* Tax is added on top: `Tax = Price × (Rate/100)`
* Common for wholesale/B2B pricing
**Example:**
* Price set: €100.00
* Tax rate: 21%
* Tax calculation: €100 × 0.21 = €21.00
* Total: €121.00
## Creating Invoices with Tax
### Manual Invoice Items
When adding items manually to an invoice:
1. Enter the item description
2. Set quantity and unit price
3. Select the tax rate from dropdown
4. Toggle tax included if needed
PayRequest calculates the totals automatically.
### Product-Based Invoice Items
When adding a product to an invoice:
1. Select the product from the dropdown
2. The product's tax settings are applied automatically
3. Tax rate and inclusion settings come from the product
4. Adjust quantity as needed
### Handling Mixed Tax Rates
An invoice can contain items with different tax rates. PayRequest:
* Calculates tax per line item
* Shows a tax breakdown by rate in the invoice
* Totals all amounts correctly
**Example with Mixed Rates:**
```
┌─────────────────────────────────────────────────┐
│ Tax Breakdown: │
├─────────────────────────────────────────────────┤
│ 21% BTW over €200.00 €42.00 │
│ 9% BTW over €50.00 €4.50 │
│ 0% BTW over €25.00 €0.00 │
├─────────────────────────────────────────────────┤
│ Total BTW €46.50 │
└─────────────────────────────────────────────────┘
```
## Customer Tax Exemption
When a customer is marked as **Tax Exempt**:
### Automatic Behavior
* All invoice items are set to **0% tax**
* Invoice displays **"BTW VERLEGD"** indicator
* Tax totals show €0.00
* Customer is not charged any VAT
### Manual Override
Even for tax-exempt customers, you can manually adjust tax rates on specific invoice items if needed (though this is rarely required).
Be careful when manually overriding tax for exempt customers. This should only be done in special circumstances with proper documentation.
## Invoice PDF Tax Display
Your invoice PDFs include:
### Header/Footer
* Your business VAT number
* Customer's VAT number (if applicable)
* "BTW Verlegd" notice for reverse charge
### Line Items
* Each item shows its tax rate
* Tax amounts calculated per line
### Summary Section
* Subtotal (excluding tax)
* Tax breakdown by rate
* Total amount
* Payment instructions
### Legal Requirements
For EU VAT compliance, your invoices should show:
* Business name and address
* VAT/BTW registration number
* KvK number (Dutch companies)
* Customer name and address
* VAT number (for B2B reverse charge)
* Country
* Unique invoice number
* Invoice date
* Payment due date
* Currency
* Tax rate per line item
* Tax amounts
* Total tax
* Reverse charge notice if applicable
## Editing Invoice Tax
### Before Invoice is Sent
You can freely edit:
* Tax rates on any line item
* Tax included setting
* Add or remove items
### After Invoice is Sent
Editing sent invoices affects your accounting records. If significant changes are needed, consider issuing a credit note instead.
Minor corrections are allowed, but changing tax rates after sending may require:
* Notifying the customer
* Updating your accounting records
* Potentially issuing a corrected invoice
## Tax in Invoice Templates
Customize how tax appears in your invoice templates:
### Available Template Variables
| Variable | Description |
| - | - |
| `{tax_subtotal}` | Total before tax |
| `{tax_amount}` | Total tax amount |
| `{tax_rate}` | Applied tax rate (%) |
| `{invoice_total}` | Grand total including tax |
| `{tax_exempt_notice}` | "BTW Verlegd" text if applicable |
### Customization Options
In **Settings > Invoice Settings**, you can:
* Add custom footer text for tax notices
* Include payment terms
* Add reverse charge statements
* Customize the tax breakdown display
## Subscription Invoice Tax
For recurring subscription invoices:
### Automatic Tax Application
* Tax is calculated based on the subscription product's settings
* Customer exemption status is checked each billing cycle
* Tax rates can be updated and will apply to future invoices
### Subscription Amount Changes
If you change a subscription's tax settings:
* Past invoices remain unchanged
* Future invoices use the new settings
* Proration calculations include tax
## Common Tax Scenarios
**Settings:**
* Customer: Dutch individual, not tax exempt
* Product: Standard rate (21%)
**Result:** Invoice shows full 21% BTW, customer pays total including tax.
**Settings:**
* Customer: Dutch business, not tax exempt
* Product: Standard rate (21%)
**Result:** Same as B2C - 21% BTW charged. Customer reclaims on their VAT return.
**Settings:**
* Customer: German business, marked tax exempt
* Customer VAT number stored: DE123456789
**Result:** Invoice shows 0% VAT, "BTW Verlegd" notice, customer accounts for VAT in Germany.
**Settings:**
* Customer: US company, marked tax exempt
* Delivery: Outside EU
**Result:** Invoice shows 0% VAT, marked as export sale.
**Settings:**
* Line 1: Software (21%)
* Line 2: Training manual/book (9%)
**Result:** Tax breakdown shows amounts per rate, totals calculated correctly.
## Troubleshooting
**Check:**
1. Is your business registered for VAT in Settings?
2. Does the product have a tax rate set?
3. Is the customer marked as tax exempt?
If VAT registration is disabled, no tax will be applied.
**Possible causes:**
1. Product has a different rate than expected
2. Invoice item was manually adjusted
3. Business default rate changed after invoice was created
**Solution:** Edit the invoice item and select the correct tax rate.
**Check:**
1. Was the customer marked exempt before the invoice was created?
2. Was the invoice created from an older order?
**Solution:** Edit the invoice and set tax rates to 0%, or recreate the invoice.
This usually happens with tax-included pricing. The calculation extracts tax from the total, which can result in rounding differences.
**Example:** €10.00 at 21% = €8.26 net + €1.74 tax (rounds correctly)
PayRequest handles rounding to 2 decimal places.
## Tax Reporting
PayRequest provides tax data for your bookkeeping:
### Available Reports
* **Transaction Reports**: Show tax amounts per transaction
* **Invoice Export**: CSV export with tax breakdown
* **Revenue Tracking**: Separates net revenue from tax collected
### Bookkeeping Integration
Export your invoice data including:
* Invoice number and date
* Net amounts
* Tax amounts by rate
* Gross totals
* Customer information
This data integrates with common Dutch bookkeeping software.
## Related Documentation
Complete guide to tax settings in PayRequest
Managing customer tax exemption status
Configure product pricing and tax settings
Customize your invoice appearance
***
This documentation explains PayRequest's tax features. For advice on which tax rates to apply or how to handle specific tax situations, consult with a qualified tax professional familiar with Dutch and EU VAT regulations.
# MCP Overview
Source: https://docs.payreque.st/mcp/overview
Connect Claude Desktop or ChatGPT to PayRequest using the Model Context Protocol
# Model Context Protocol (MCP)
PayRequest provides an MCP server that allows AI assistants to interact with your billing data securely using natural language.
**Now available for Claude Desktop and ChatGPT!** Connect your favorite AI assistant to PayRequest and manage your billing with simple conversations.
## Supported AI Assistants
Full MCP support with OAuth authentication
MCP connector support for ChatGPT Plus users
## What is MCP?
The [Model Context Protocol](https://modelcontextprotocol.io/) is an open standard that enables AI applications to connect to external data sources and tools. With PayRequest's MCP integration, your AI assistant can:
* **View billing statistics** - Get real-time insights into your invoices
* **List invoices** - Search and filter your invoice data
* **Identify overdue payments** - Find invoices that need attention
* **Send payment reminders** - Automate follow-up emails
## Why Use MCP?
Ask questions like "How many invoices are overdue?" and get instant answers
Let AI assistants handle routine billing tasks like sending reminders
OAuth 2.0 authentication ensures only authorized access
Always work with the latest billing information
## Server Endpoint
The PayRequest MCP Billing Server is available at:
```
https://payrequest.app/mcp/billing
```
## Available Tools
| Tool | Description | Scope Required |
| - | - | - |
| `get-invoice-stats` | Get invoice statistics (totals, pending, paid, overdue) | `billing.read` |
| `list-invoices` | List invoices with optional status filtering | `billing.read` |
| `get-overdue-invoices` | Get all overdue invoices with customer details | `billing.read` |
| `send-invoice-reminder` | Send payment reminder email for an invoice | `billing.read` |
## Quick Example
Once connected, you can ask your AI assistant questions like:
> "Show me all overdue invoices"
The assistant will use the MCP tools to fetch your data and respond:
```
Overdue Invoices (3 total):
- Invoice #INV-2025-042: €1,250.00
Customer: Acme Corp
Due: 2025-01-15 (14 days overdue)
Status: sent
- Invoice #INV-2025-038: €600.00
Customer: TechStart BV
Due: 2025-01-10 (19 days overdue)
Status: viewed
Total Overdue Amount: €1,850.00
```
## Get Started
Connect Claude Desktop to PayRequest in minutes
Connect ChatGPT to access your billing data
Detailed documentation for all MCP tools
Find setup instructions in your PayRequest dashboard
# MCP Setup
Source: https://docs.payreque.st/mcp/setup
Connect Claude Desktop or ChatGPT to PayRequest using the Model Context Protocol
# Setting Up MCP
This guide walks you through connecting AI assistants to PayRequest using the Model Context Protocol (MCP) with OAuth authentication.
## Supported AI Assistants
Anthropic's desktop application with full MCP support
OpenAI's ChatGPT with MCP connector support
## Prerequisites
Before you begin, ensure you have:
* A PayRequest account with active billing data
* Claude Desktop app or ChatGPT Plus subscription
* Your PayRequest dashboard accessible
***
## Claude Desktop Setup
In Claude Desktop, go to **Settings** → **MCP Servers** → **Add Server**.
Configure the MCP server with these settings:
| Setting | Value |
| - | - |
| Server URL | `https://payrequest.app/mcp/billing` |
| Name | PayRequest Billing |
Claude Desktop will open a browser window to authenticate with PayRequest. Log in with your PayRequest account and authorize the connection.
Review the requested permissions and click **Authorize** to allow Claude Desktop to access your billing data.
Back in Claude Desktop, you should see "PayRequest" listed under your connected MCP servers. Try asking:
> "What are my invoice statistics?"
### Claude Desktop Configuration File
For advanced users, you can also configure Claude Desktop via the config file:
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json theme={null}
{
"mcpServers": {
"payrequest-billing": {
"url": "https://payrequest.app/mcp/billing"
}
}
}
```
Edit `%APPDATA%\Claude\claude_desktop_config.json`:
```json theme={null}
{
"mcpServers": {
"payrequest-billing": {
"url": "https://payrequest.app/mcp/billing"
}
}
}
```
***
## ChatGPT Setup
Go to [chat.openai.com](https://chat.openai.com) and ensure you have a ChatGPT Plus subscription.
In ChatGPT, go to **Settings** → **Connected Apps** or look for the MCP connector option.
Add a new MCP server with:
| Setting | Value |
| - | - |
| Server URL | `https://payrequest.app/mcp/billing` |
| Name | PayRequest Billing |
ChatGPT will redirect you to PayRequest to log in and authorize the connection.
Once connected, you can ask ChatGPT about your billing data:
> "Show me my overdue invoices"
***
## Finding Your Setup Instructions
The easiest way to set up MCP is from your PayRequest dashboard:
1. Go to **Settings** → **API** in PayRequest
2. Select the **Claude Desktop** or **ChatGPT** tab
3. Follow the on-screen instructions with pre-configured values
***
## Test the Connection
After setup, verify everything works by asking your AI assistant:
> "What are my invoice statistics?"
You should receive a response like:
```
Invoice Statistics:
- Total invoices: 150
- Pending: 23 (€15,750.00 outstanding)
- Paid: 120
- Overdue: 7 (€4,200.00)
```
## Available Commands
Once connected, you can ask questions like:
* "What are my invoice statistics?"
* "Show me all overdue invoices"
* "List my recent invoices"
* "Send a payment reminder for invoice #INV-2025-042"
***
## OAuth Endpoints (Technical Reference)
For developers building custom MCP clients:
| Endpoint | URL |
| - | - |
| MCP Server | `https://payrequest.app/mcp/billing` |
| OAuth Discovery | `https://payrequest.app/.well-known/oauth-authorization-server` |
| Authorization | `https://payrequest.app/oauth/authorize` |
| Token Endpoint | `https://payrequest.app/oauth/token` |
### OAuth Flow
PayRequest MCP uses OAuth 2.0 with PKCE for secure authentication:
1. Client initiates authorization request with `code_challenge`
2. User authenticates with PayRequest
3. Authorization code returned to client
4. Client exchanges code for access token using `code_verifier`
5. Access token used for MCP requests
***
## Troubleshooting
### "Permission denied" or "Authentication failed"
* Ensure you're logged into the correct PayRequest account
* Try disconnecting and reconnecting the MCP server
* Clear your browser cookies and try again
### "Invalid client" error
* Make sure you're using the correct server URL: `https://payrequest.app/mcp/billing`
* Contact support if the issue persists
### Connection timeout
* Verify you can access `https://payrequest.app` in your browser
* Check your firewall or VPN settings
* Try from a different network
### No data returned
* Ensure you have invoices in your PayRequest account
* Verify you authorized the correct PayRequest account
***
## Security
PayRequest uses industry-standard OAuth 2.0 with PKCE (Proof Key for Code Exchange) for secure authentication without exposing secrets.
MCP connections only have access to billing data (invoices, statistics). They cannot access payment provider credentials or modify account settings.
You can disconnect MCP clients at any time from Settings → API in your PayRequest dashboard.
All MCP actions are logged in your Activity Log for audit purposes.
***
## Next Steps
Learn about all available MCP tools and their parameters
Explore the full PayRequest API for custom integrations
# MCP Tools Reference
Source: https://docs.payreque.st/mcp/tools
Complete reference for PayRequest MCP billing tools
# MCP Tools Reference
The PayRequest Billing Server provides four tools for managing invoices through AI assistants.
## get-invoice-stats
Get aggregated statistics about your invoices including totals, pending amounts, and overdue counts.
### Parameters
This tool takes no parameters.
### Example Usage
> "What are my invoice statistics?"
### Response
```
Invoice Statistics:
- Total invoices: 150
- Pending: 23 (€15,750.00 outstanding)
- Paid: 120
- Overdue: 7 (€4,200.00)
```
### Response Fields
| Field | Type | Description |
| - | - | - |
| `total_invoices` | integer | Total number of invoices |
| `pending_invoices` | integer | Invoices awaiting payment |
| `paid_invoices` | integer | Fully paid invoices |
| `overdue_invoices` | integer | Invoices past due date |
| `total_outstanding` | decimal | Sum of all unpaid invoices (EUR) |
| `total_overdue` | decimal | Sum of overdue invoices (EUR) |
***
## list-invoices
List invoices with optional filtering by status. Returns invoice details including customer information, amounts, and dates.
### Parameters
Filter by invoice status. Options:
* `pending` - Includes pending, sent, and viewed invoices
* `paid` - Only paid invoices
* `canceled` - Only canceled invoices
* `refunded` - Only refunded invoices
Maximum number of invoices to return (1-100)
### Example Usage
> "Show me all pending invoices"
> "List my last 10 paid invoices"
### Response
```
Invoices (filtered by: pending) - showing 5 results:
- #INV-2025-050: €2,500.00 | Pending | Due: 2025-02-15
Customer: Acme Corp | Created: 2025-01-30
- #INV-2025-048: €750.00 | Sent | Due: 2025-02-10
Customer: TechStart BV | Created: 2025-01-28
- #INV-2025-045: €1,200.00 | Viewed | Due: 2025-02-05
Customer: Digital Agency | Created: 2025-01-25
```
***
## get-overdue-invoices
Get a list of all overdue invoices with customer details, amounts, and days overdue. Sorted by due date (oldest first).
### Parameters
Maximum number of overdue invoices to return (1-100)
### Example Usage
> "Which invoices are overdue?"
> "Show me the 5 most overdue invoices"
### Response
```
Overdue Invoices (3 total):
- Invoice #INV-2025-042: €1,250.00
Customer: Acme Corp
Due: 2025-01-15 (14 days overdue)
Status: sent
- Invoice #INV-2025-038: €600.00
Customer: TechStart BV
Due: 2025-01-10 (19 days overdue)
Status: viewed
- Invoice #INV-2025-035: €450.00
Customer: StartupXYZ
Due: 2025-01-05 (24 days overdue)
Status: pending
Total Overdue Amount: €2,300.00
```
### Use Cases
Ask: "What invoices are overdue?" to start your day with a clear picture of outstanding payments.
Ask: "Show me the 5 most overdue invoices" to focus on the oldest unpaid invoices first.
Ask: "How much revenue is tied up in overdue invoices?" to understand your cash flow impact.
***
## send-invoice-reminder
Send a payment reminder email for a specific invoice. The reminder is sent to the customer's email address and logged in your activity history.
### Parameters
The ID of the invoice to send a reminder for
The invoice number (e.g., "INV-2025-042") to send a reminder for
Provide either `invoice_id` OR `invoice_number`, not both.
### Example Usage
> "Send a reminder for invoice INV-2025-042"
> "Remind the customer about invoice 1234"
### Response
```
Payment reminder sent successfully!
Invoice: #INV-2025-042
Amount: €1,250.00 (14 days overdue)
Customer: Acme Corp
Email sent to: billing@acme.com
```
### Validation
The tool validates before sending:
| Check | Error Message |
| - | - |
| Invoice not found | "Invoice not found or does not belong to your account." |
| Already paid | "Invoice #X is already paid. No reminder needed." |
| Canceled | "Invoice #X is canceled. Cannot send reminder." |
| No customer email | "Invoice #X has no customer email address." |
### Activity Logging
Each reminder sent via MCP is logged with:
* Timestamp
* Customer email
* Days overdue at time of sending
* Source marked as "MCP API"
You can view these in **Activity Log** → filter by "Invoice reminder sent".
***
## Error Handling
All tools return errors in a consistent format:
```
Error: Authentication required to access invoice statistics.
```
### Common Errors
| Error | Cause | Solution |
| - | - | - |
| "Authentication required" | Missing or invalid token | Check your API token configuration |
| "Invoice not found" | Invalid ID or wrong account | Verify the invoice ID/number |
| "Already paid" | Invoice status is 'paid' | No action needed |
***
## Workflow Examples
### Morning Billing Review
```
You: "Give me a billing summary"
AI: Here's your invoice summary:
- Total invoices: 150
- Pending: 23 (€15,750.00 outstanding)
- Paid: 120
- Overdue: 7 (€4,200.00)
You: "Which invoices are overdue?"
AI: You have 7 overdue invoices totaling €4,200.00...
```
### Automated Follow-up
```
You: "Send reminders for all invoices more than 14 days overdue"
AI: I found 3 invoices more than 14 days overdue. Let me send reminders:
✓ Sent reminder for INV-2025-042 to billing@acme.com
✓ Sent reminder for INV-2025-038 to finance@techstart.nl
✓ Sent reminder for INV-2025-035 to ap@startupxyz.com
All 3 reminders sent successfully.
```
### Customer Query
```
You: "Show me all pending invoices for Acme Corp"
AI: I found 2 pending invoices for Acme Corp:
- #INV-2025-050: €2,500.00 | Due: Feb 15
- #INV-2025-042: €1,250.00 | Due: Jan 15 (14 days overdue)
Total outstanding: €3,750.00
```
# Billing Activity Log
Source: https://docs.payreque.st/organization-and-automation/activity-tracking
Track all billing activities, changes, and events across your PayRequest account
## Overview
The Billing Activity Log provides a comprehensive audit trail of all actions and events in your PayRequest account. Every subscription change, invoice update, customer modification, and payment event is automatically recorded with timestamps, user attribution, and detailed context.
Use the Activity Log to answer questions like "When was this subscription canceled?", "Who sent this invoice?", or "What changed on this customer record?" - all with complete audit history.
## Key Features
* **Complete Audit Trail**: Every action automatically logged with timestamp and user
* **31+ Event Types**: Subscriptions, invoices, customers, payments, and more
* **Advanced Filtering**: Filter by entity type, action, date range, and search
* **User Attribution**: See who performed each action (or "System" for automated events)
* **IP & Device Tracking**: Security audit with IP address and user agent
* **JSON Details**: Rich contextual data for each event
* **Real-Time Updates**: Activity appears immediately after actions
## Accessing the Activity Log
Navigate to **Activity Log** (or **Logs**) in your dashboard sidebar to view all billing activities.
The Activity Log shows only your own account's activities. Multi-user accounts see activities from all team members.
## Tracked Events
PayRequest automatically tracks 31+ distinct event types across your billing operations:
### Subscription Events
| Event | Description | Details Captured |
| - | - | - |
| `subscription_paused` | Subscription manually paused | Pause date, reason |
| `subscription_resumed` | Subscription reactivated | Resume date |
| `subscription_canceled` | Subscription canceled | Cancellation reason, effective date |
| `subscription_completed` | Trial or billing cycle completed | Completion type |
| `subscription_settings_updated` | Name, amount, interval, or quantity changed | Old values, new values, changed fields |
| `subscription_custom_fields_updated` | Custom field values modified | Field names, old/new values |
| `subscription_mandate_updated` | SEPA mandate associated or changed | Mandate ID |
| `subscription_fields_synced` | Subscription synced with product changes | Synced fields |
### Invoice Events
| Event | Description | Details Captured |
| - | - | - |
| `invoice_created` | New invoice generated | Invoice number, amount, customer |
| `invoice_email_sent` | Invoice email sent automatically | Customer email, invoice number |
| `invoice_email_resent` | Invoice manually resent | Resend reason |
| `invoice_payment_email_sent` | Payment confirmation sent | Payment amount, method |
| `invoice_payment_email_resent` | Payment confirmation resent | Resend timestamp |
| `invoice_status_changed` | Invoice status transitioned | Old status, new status, reason |
| `invoice_reminder_sent` | Payment reminder sent | Reminder number, days overdue |
### Customer Events
| Event | Description | Details Captured |
| - | - | - |
| `customer_archived` | Customer archived | Archive reason, note, warnings |
| `customer_reactivated` | Archived customer reactivated | Reactivation date |
### Payment & Mandate Events
| Event | Description | Details Captured |
| - | - | - |
| `mandate_request_sent` | SEPA mandate request emailed | Customer email |
| `mandate_activation_sent` | Mandate activation email sent | Mandate type |
| `mandate_activated` | Mandate confirmed via payment | Mandate ID, activation method |
| `chargeback_received` | Payment chargeback processed | Amount, reason, payment ID |
### Bulk Operations
| Event | Description | Details Captured |
| - | - | - |
| `bulk_action` | Bulk operation initiated | Action type, affected count |
| Individual actions | Each item in bulk operation | Item-specific details |
### Migration Events
| Event | Description | Details Captured |
| - | - | - |
| `mollie_selective_migration_initiated` | Single Mollie subscription migrated | Migration status |
| `mollie_bulk_migration_prepared` | Bulk migration prepared | Eligible count |
| `mollie_subscription_canceled` | Legacy Mollie subscription canceled | Mollie subscription ID |
## Using the Activity Log
### Viewing Activities
The main Activity Log displays:
1. **Date & Time** - When the action occurred (with relative time like "2 hours ago")
2. **Action** - The event type with color-coded badge
3. **User** - Who performed the action (avatar + name, or "System")
4. **Entity Type** - What type of record was affected
5. **Entity** - The specific record (ID and friendly name)
6. **Details** - Expandable section with full context
Color-coded action badges help you quickly identify event types:
* **Green**: Create, reactivate, activate
* **Red**: Cancel, delete, archive
* **Amber**: Update, change, modify
* **Blue**: Payment, email sent
* **Gray**: Other system events
### Filtering Activities
Use the filter controls to narrow down activities:
**By Entity Type**
* Subscription
* Invoice
* Customer
* Mandate
* Payment
* And more...
**By Action**
* Select specific actions like "subscription\_canceled" or "invoice\_paid"
* Shows only available actions from your activity history
**By Date Range**
* Today
* Yesterday
* This Week
* Last Week
* This Month
* Last Month
**By Search**
* Full-text search across entity ID, name, action, and details
* Example: Search "INV-2025" to find all activity for that invoice
### Sorting
Click column headers to sort by:
* **Date** (default, newest first)
* **Action** (alphabetical)
* **Entity Type** (alphabetical)
Click again to reverse sort direction.
## Activity Details
Each activity log entry contains rich contextual data in the Details section.
### Invoice Status Change Example
```json theme={null}
{
"old_status": "open",
"new_status": "paid",
"reason": "Customer paid via iDEAL",
"customer_email": "john@example.com"
}
```
### Subscription Update Example
```json theme={null}
{
"old_amount": 12.50,
"new_amount": 15.00,
"changes": ["recurring_amount"],
"updated_by": "Admin User"
}
```
### Chargeback Example
```json theme={null}
{
"amount": 49.00,
"reason": "Customer disputed transaction",
"payment_id": "tr_AbCdEfGh",
"invoice_number": "INV-2025-00123"
}
```
### Customer Archive Example
```json theme={null}
{
"customer_email": "john@example.com",
"archived_reason": "inactive",
"archive_note": "No activity for 6 months",
"archived_by": "Admin Name",
"warnings": ["Active subscription exists"]
}
```
## Dashboard Activity Widget
The main dashboard includes a Recent Activity widget showing your latest billing activities at a glance.
**Widget Features:**
* Shows last 10 activities
* Color-coded action icons
* Quick link to full Activity Log
* Auto-updates with new activities
The dashboard activity widget is perfect for monitoring daily operations without navigating to the full Activity Log.
## Security & Compliance
### Audit Trail Benefits
The Activity Log serves as your compliance audit trail:
* **Who**: User attribution for every action
* **What**: Detailed action description with context
* **When**: Precise timestamp with timezone
* **Where**: IP address and device information
* **Why**: Contextual details explaining changes
### Data Captured
For security and compliance purposes, each log entry includes:
| Field | Description |
| - | - |
| `user_id` | The user who performed the action |
| `ip_address` | Source IP address |
| `user_agent` | Browser/client information |
| `created_at` | Precise timestamp |
| `details` | Full context as JSON |
Activity logs are permanent records and cannot be edited or deleted. This ensures audit trail integrity for compliance purposes.
### Multi-User Accounts
For accounts with multiple team members:
* Each user's actions are attributed to their account
* Admin users can view all team activity
* Standard users see only their own activity
* System-generated events show "System" as the user
## Common Use Cases
### Investigating Issues
**"When was this subscription canceled?"**
1. Go to Activity Log
2. Filter by Entity Type: Subscription
3. Filter by Action: subscription\_canceled
4. Search for the subscription name or ID
5. View the details for cancellation reason and timestamp
### Compliance Audits
**"Show all invoice status changes this month"**
1. Go to Activity Log
2. Filter by Entity Type: Invoice
3. Filter by Action: invoice\_status\_changed
4. Set Date Range: This Month
5. Export or screenshot for audit records
### Team Monitoring
**"What did my team do today?"**
1. Go to Activity Log
2. Set Date Range: Today
3. Review all activities with user attribution
4. Click on specific entries for details
### Payment Tracking
**"Track all payment-related activities"**
1. Go to Activity Log
2. Search for "payment" or "paid"
3. Or filter by actions containing "payment"
4. Review chronological payment history
## Best Practices
### Regular Review
* **Daily**: Check dashboard widget for unusual activity
* **Weekly**: Review Activity Log for trends
* **Monthly**: Audit critical actions (cancellations, chargebacks)
### Search Effectively
* Use invoice numbers: "INV-2025-00123"
* Use customer emails: "[john@example.com](mailto:john@example.com)"
* Use subscription names: "Monthly Plan"
* Combine with filters for precise results
### Document Important Events
When investigating issues:
1. Note the activity timestamp
2. Record the user who performed the action
3. Save the details JSON for reference
4. Use this information for support tickets or internal documentation
## Troubleshooting
### Activities Not Appearing
**Check:**
1. Refresh the page to load latest activities
2. Clear any active filters
3. Expand date range (activities may be older than expected)
4. Verify the action type is logged (not all actions create logs)
### Search Not Finding Results
**Try:**
1. Use partial terms instead of full phrases
2. Search by ID instead of name
3. Remove special characters
4. Check spelling of search terms
### Missing User Attribution
**Cause:** Action was performed by the system (automated job, webhook)
**Solution:** System-generated activities show "System" as the user. This is normal for:
* Scheduled billing
* Webhook-triggered updates
* Automated email sends
* Background sync jobs
### Old Activities Not Visible
**Note:** Activity logs are retained indefinitely, but very old logs may take longer to load. Use date filters to narrow your search range for better performance.
## Integration with Other Features
### Tags System
When tags are added or removed from entities, activity is logged:
* Tag additions and removals tracked
* Automation-triggered tag changes recorded
* Bulk tag operations logged
### Email Automations
Email automation triggers create activity logs:
* Email bounce events logged
* Automated tag actions recorded
* Trigger execution tracked
### Bulk Operations
All bulk actions are comprehensively logged:
* Bulk action initiation recorded
* Individual item changes logged
* Success/failure status captured
## Frequently Asked Questions
Activity logs are retained indefinitely. All historical activity remains accessible for compliance and audit purposes. There is no automatic deletion of activity history.
Currently, activity logs are view-only in the dashboard. For export needs, contact support for assistance with compliance reports or use the API for programmatic access.
Standard users see only their own activity. Admin users can view activity from all team members. Activity logs are never visible to your customers.
Yes. System-generated actions (scheduled billing, webhooks, automated emails) are logged with "System" as the user. This provides complete visibility into both manual and automated operations.
No. Activity logs are immutable records that cannot be modified or deleted. This ensures audit trail integrity for compliance and security purposes.
Not all actions generate activity logs. The system focuses on billing-critical events: subscription changes, invoice updates, customer modifications, and payment events. Minor UI interactions are not logged.
Use the search function to search for the customer's email address or name. You can also filter by Entity Type "Customer" to see customer-specific events, or search for their related invoice/subscription IDs.
Timestamps are displayed in your local timezone (Europe/Amsterdam for PayRequest). The relative time display (e.g., "2 hours ago") adjusts automatically.
## Related Features
Organize entities with tags (changes logged)
Automate actions based on events
Manage subscriptions (all changes logged)
Create and manage invoices (all actions logged)
# Bulk Operations
Source: https://docs.payreque.st/organization-and-automation/bulk-operations
Perform mass updates, price adjustments, and exports across subscriptions, customers, products, invoices, and orders.
# Bulk Operations
The Bulk Actions wizard lets you perform mass operations on multiple items at once. Select your items manually or filter by tags, validate before executing, and track every action in the history log.
Access Bulk Operations from **Dashboard > Bulk Actions** or navigate directly to `/bulk`.
## Supported Entity Types
Price adjustments, pause, resume, cancel, change interval
Apply tags, change language, toggle tax exemption, send email
Update prices, change tax rate, toggle active status, apply category
Mark as paid, send reminders, apply late fees, export PDF
Update status, apply shipping, send notifications
Export any entity type to CSV
## How It Works
Choose the entity type you want to work with (subscriptions, customers, products, etc.)
Pick items manually from a searchable list, or use **tag-based selection** with AND/OR logic to filter automatically.
Select the action and configure its parameters. Different actions show different configuration fields.
Review validation results. Errors block execution, while warnings allow you to proceed with caution.
Confirm and run the action. Results are saved to the action history for auditing.
## Subscription Actions
| Action | Description |
| - | - |
| **Apply Inflation Adjustment** | Increase prices by percentage, fixed amount, or set a specific price. Supports rounding, scheduling, and customer notifications. [Full guide](/subscriptions/price-adjustments) |
| **Pause Until Date** | Pause selected subscriptions until a specific date, then auto-resume |
| **Resume Subscriptions** | Resume paused or canceled subscriptions immediately or on a specific date |
| **Cancel at End of Period** | Schedule cancellation at the end of the current billing period |
| **Change Billing Interval** | Switch between daily, weekly, monthly, quarterly, or yearly billing |
## Customer Actions
| Action | Description |
| - | - |
| **Apply Tags** | Add one or more tags to selected customers |
| **Change Language** | Update the preferred language for communications |
| **Toggle Tax Exemption** | Enable or disable tax-exempt status |
| **Send Email** | Send a custom email to selected customers |
## Selection Methods
### Manual Selection
Browse or search the paginated item list and select individual items with checkboxes. Use **Select All** to pick everything on the current page.
### Tag-Based Selection
Filter items by tags using two logic modes:
* **OR** — Items with **any** of the selected tags (broader selection)
* **AND** — Items with **all** of the selected tags (narrower selection)
Use tags to organize subscriptions into groups like "Annual Review", "Enterprise", or "Legacy Pricing". This makes it easy to select the right subscriptions for targeted price adjustments.
## Action History
Every bulk action is logged with full details:
* Entity type and action performed
* Number of items affected
* Action parameters used
* Success or failure status
* Timestamp
View recent history at the bottom of the Bulk Actions page, or click **View Details** on any entry for a full breakdown.
## Next Steps
Detailed guide for subscription inflation and pricing changes
Organize items with tags for easier bulk selection
# Email Automations
Source: https://docs.payreque.st/organization-and-automation/email-automations
Automatically tag customers and take action when emails bounce, get spam complaints, or fail to deliver
# Email Automations
Email automations let you trigger actions when email delivery events occur. The most common use case is automatically tagging customers with an "Invalid Email" tag when their email bounces, making it easy to find and fix problematic addresses.
Email automations work together with the [Email Health & Bounce Suppression](/customer-management/customer-health) system, which automatically blocks emails to bounced addresses.
***
## Default Automation: Bounce Tagging
PayRequest comes with a pre-built automation template:
**Email Bounce → Add Invalid Email Tag**
This automation:
1. Triggers when a customer's email bounces
2. Creates an "Invalid Email" tag (red) if it doesn't exist
3. Attaches the tag to the affected customer
### Setting It Up
Navigate to **Automations** from the sidebar.
Click **Create Automation** — the bounce tagging template is pre-filled.
Change the tag name or color if you prefer a different label.
The automation activates immediately and processes all future bounces.
***
## Available Triggers
| Trigger | When It Fires |
| - | - |
| **Email Bounced** | Recipient server rejects the email (permanent or transient) |
| **Email Complained** | Recipient marks the email as spam |
| **Email Failed** | Email fails to send for any other reason |
## Available Actions
| Action | What It Does |
| - | - |
| **Add Tag** | Attaches a tag to the customer |
| **Remove Tag** | Removes a tag from the customer |
***
## Automatic Tag Cleanup
When you update a customer's email address to a different one, PayRequest automatically removes any tags that were added by email bounce automations. This means fixing an email address also cleans up the "Invalid Email" tag without manual work.
Combine bounce tagging with the **Email Issues** filter on the customer list to quickly review and fix all affected customers at once.
***
## Next Steps
How bounce suppression protects your sender reputation
Learn more about organizing with tags
# Tags System
Source: https://docs.payreque.st/organization-and-automation/tags-system
Organize your business data with color-coded labels for segmentation, filtering, and automation
## Overview
Tags are customizable labels that help you organize and segment your business data in PayRequest. Apply tags to customers, subscriptions, products, invoices, smart links, and expenses to create powerful workflows, filter data, and trigger automations.
Tags are essential for organizing large datasets. Create tags for customer segments (VIP, trial users), product categories (services, physical), or campaigns (Summer 2025) to quickly filter and analyze your data.
## Key Features
* **Color-Coded Labels**: 18 color options for visual organization
* **Multi-Entity Support**: Tag customers, subscriptions, products, invoices, smart links, and expenses
* **Filtering & Segmentation**: Filter any entity list by tags with AND/OR logic
* **Automation Triggers**: Automatically add/remove tags based on email events
* **Usage Tracking**: See how many entities use each tag
* **CSV Export**: Export tagged entities for reporting
* **Per-Business Isolation**: Tags are private to your business account
## Accessing Tags
Navigate to **Tags** in your dashboard sidebar to access the tag management interface.
Tags are available for all PayRequest accounts. You can create unlimited tags per entity type.
## Supported Entity Types
PayRequest supports tagging 8 different entity types:
| Type | Description | Common Use Cases |
| - | - | - |
| **Customer** | Customer profiles | VIP, Active, Churned, Lead Source |
| **Subscription** | PayRequest & Mollie subscriptions | Plan tier, Trial, Annual, Monthly |
| **Product** | Digital products and services | Category, Featured, On Sale |
| **Order** | Shop orders | Fulfilled, Needs Review, Wholesale |
| **Invoice** | Invoices and bills | Urgent, Overdue, Paid, Disputed |
| **Smart Link** | Marketing payment links | Campaign, Channel, Season |
| **Expense** | Recurring expenses | Software, Marketing, Operations |
| **Support** | Support-related items | Priority, Department, Status |
A `DebtCollection` tag type also exists at the data level but isn't selectable in the tag creation UI yet — you can't create a Debt Collection tag from the Tags page today.
## Creating Tags
### Step 1: Open Tag Creation
From the Tags page, click **Create Tag** in the top right corner.
### Step 2: Configure Tag Details
**Required Fields:**
* **Name**: Descriptive label (e.g., "VIP Customer", "Summer Campaign")
* **Type**: Select entity type (Customer, Subscription, Product, etc.)
* **Color**: Choose from 18 color options
Tag names must be unique within each type. You can have a "VIP" customer tag and a "VIP" product tag, but not two "VIP" customer tags.
### Step 3: Save Tag
Click **Create Tag** to save. The tag is immediately available for use across your dashboard.
## Available Colors
Choose from 18 color options to visually distinguish your tags:
zinc
red, orange, amber, yellow
lime, green, emerald, teal, cyan, sky, blue, indigo
violet, purple, fuchsia, pink, rose
Use consistent color schemes for similar tags. For example, all subscription tier tags could use shades of blue, while all campaign tags use warm colors.
## Applying Tags
### To Products
1. Go to **Products** in the sidebar
2. Click on a product to view details
3. Click **Manage Tags** button
4. Select tags from the dropdown or create new ones inline
5. Click **Save Tags**
### To Subscriptions
1. Go to **Subscriptions** in the sidebar
2. Click on a subscription to view details
3. Scroll to the **Tags** section
4. Click **Manage Tags**
5. Select or create tags
6. Click **Save Tags**
### To Customers
1. Go to **Customers** in the sidebar
2. Click on a customer profile
3. Locate the **Tags** section
4. Add or remove tags as needed
### To Orders
1. Go to **Orders** in the sidebar
2. Open an order to view details
3. Use the tag management interface to add tags
### To Invoices
1. Go to **Invoices** in the sidebar
2. Click on an invoice to view details
3. Use the tag management interface to add tags
### To Smart Links
When creating or editing a smart link:
1. Scroll to the **Tags** field
2. Select existing tags or create new ones
3. Tags help organize links by campaign, channel, or purpose
### To Expenses
In the Expense Tracker:
1. Open an expense record
2. Add tags to categorize by department, type, or project
## Filtering by Tags
### Basic Filtering
Most entity list pages support tag filtering:
1. Locate the **Tag Filter** dropdown
2. Select one or more tags
3. The list updates to show only matching items
### AND vs OR Logic
When selecting multiple tags:
**ANY (OR Logic)** - Default
* Shows items that have **at least one** of the selected tags
* Example: Select "VIP" and "Trial" → Shows VIP customers OR trial customers
**ALL (AND Logic)** - Toggle available
* Shows items that have **all** selected tags
* Example: Select "VIP" and "Annual" → Shows only customers who are BOTH VIP AND on annual plans
The filter logic toggle appears when you select multiple tags. Click to switch between ANY and ALL matching modes.
## Tag View & Analytics
### Accessing Tag Details
Click on any tag name to view its detail page, which shows:
**Tag Information**
* Name, color, and type
* Total usage count
* Creation date
**Tagged Entities**
* List of all entities using this tag
* Searchable and paginated
* Organized by entity type
### Usage Breakdown
For Subscription tags, you'll see separate counts:
* PayRequest subscriptions (native)
* Mollie subscriptions (legacy)
### CSV Export
Export tagged entities for reporting:
1. Open a tag detail page
2. Navigate to the entity type section
3. Click **Export CSV**
4. Download includes entity details with tag information
## Tag Automations
Tags integrate with PayRequest's automation system for powerful workflow automation.
### Automatic Tagging via Email Events
Set up automations to automatically tag customers based on email delivery status:
**Available Triggers:**
* `email_bounced` - Email couldn't be delivered
* `email_complained` - Recipient marked as spam
* `email_failed` - Email delivery failed
**Common Automation Example:**
```
Trigger: email_bounced
Action: add_tag
Tag: "Invalid Email"
```
Email automations help maintain clean customer data. Tag bounced emails to prevent sending to invalid addresses and protect your sender reputation.
### Setting Up Tag Automations
1. Go to **Automations** in the sidebar
2. Click **Create Automation**
3. Select trigger type (e.g., Email Bounced)
4. Choose action: **Add Tag** or **Remove Tag**
5. Select or create the target tag
6. Save and activate
Create a "Verified Email" tag and remove it when emails bounce. Use this tag for filtering customers with confirmed email addresses.
### Automatic Tagging via Smart Links
Smart Links support automatic customer tagging after successful payments. This is powerful for tracking campaign conversions and customer lifecycle.
**Available Actions:**
| Action | Description |
| - | - |
| **Apply Tag** | Add a Customer tag after payment |
| **Remove Tag** | Remove a Customer tag after payment |
**Common Use Cases:**
```
Smart Link: "Summer Campaign 2025"
Customer: John Doe
After Payment: Apply tag "Summer 2025 Customer"
```
```
Smart Link: "Upgrade to Premium"
Customer: Jane Smith
After Payment:
- Remove tag "Free Tier"
- Apply tag "Premium Customer"
```
**Setting Up Smart Link Tag Automation:**
1. Go to **Smart Links** and create or edit a link
2. Select a customer in **Send smart payment link to customer**
3. Scroll to **After Payment Actions**
4. Configure **Apply Tag to Customer** to add a tag
5. Configure **Remove Tag from Customer** to remove a tag
6. Save the smart link
The Remove Tag dropdown only shows tags that the selected customer currently has, plus any tag you've selected to apply (since it will be added upon payment).
**Combining with Redirect:**
You can combine tag automation with redirect actions:
1. Apply a tag (e.g., "Paid Customer")
2. Remove a tag (e.g., "Lead")
3. Redirect to a thank-you page
All three actions execute after successful payment.
Use Smart Link tag automation to move customers through your sales funnel automatically. Remove "Prospect" tags and add "Customer" tags upon payment completion.
## Managing Tags
### Editing Tags
1. From the Tags list, click **Edit** on any tag
2. Modify name, color, or type
3. Changes apply immediately to all tagged entities
### Deleting Tags
1. Click **Delete** on a tag
2. If the tag is in use, you'll see a warning with usage count
3. Confirm deletion
Deleting a tag removes it from ALL entities that use it. This action cannot be undone. Consider renaming or deactivating tags instead.
### Tag Type Restrictions
Once a tag is created with a specific type, it can only be applied to that entity type:
* Customer tags → Customers only
* Product tags → Products only
* Subscription tags → Both PayRequest and Mollie subscriptions
## Best Practices
### Naming Conventions
**Do:**
* Use descriptive names: "Q4 2025 Campaign" instead of "Campaign1"
* Be consistent: "VIP Customer" and "VIP Product" are clear
* Use categories: "Lead Source: Website", "Lead Source: Referral"
**Don't:**
* Use vague names: "Tag1", "Test", "New"
* Create duplicates: "VIP" and "V.I.P." and "vip"
* Use overly long names (max 255 characters)
### Color Strategy
Assign colors with meaning:
| Color | Suggested Use |
| - | - |
| **Green** | Positive status (Active, Paid, Verified) |
| **Red** | Negative/Urgent (Overdue, Churned, Invalid) |
| **Blue** | Information (Plan tier, Category) |
| **Yellow/Orange** | Warning/Attention (Trial ending, Needs review) |
| **Purple** | Special (VIP, Featured, Premium) |
### Organization Tips
1. **Start Simple**: Begin with 3-5 essential tags per type
2. **Review Regularly**: Remove unused tags quarterly
3. **Document Purpose**: Use consistent naming so team members understand tag meanings
4. **Combine with Automations**: Let automations handle routine tagging
## Use Cases
### Customer Segmentation
**Lifecycle Tags:**
* Trial User
* Active Customer
* At Risk
* Churned
**Value Tags:**
* VIP
* High Value
* New Customer
* Referral Partner
### Subscription Management
**Plan Tags:**
* Freelancer Plan
* Business Plan
* Enterprise
* Legacy Plan
**Status Tags:**
* Annual Billing
* Monthly Billing
* Trial Period
* Pending Cancellation
### Marketing Campaigns
**Smart Link Tags:**
* Black Friday 2025
* Email Campaign
* Social Media
* Partner Referral
### Invoice Organization
**Status Tags:**
* Urgent
* Disputed
* Partial Payment
* Sent Reminder
## Troubleshooting
### Tags Not Appearing
**Check:**
1. Tag type matches entity type (Customer tag won't appear on Products)
2. You're filtering by the correct type
3. Clear browser cache and refresh
### Can't Delete Tag
**Cause:** Tag is currently in use
**Solution:**
1. View tag details to see which entities use it
2. Remove tag from all entities first
3. Then delete the tag
### Duplicate Tags
**Cause:** Tags were created with similar names or different capitalizations
**Solution:**
1. Identify the duplicate tags
2. Update entities to use one tag consistently
3. Delete the unused duplicate
### Automations Not Adding Tags
**Check:**
1. Automation is set to **Active**
2. Trigger conditions are met
3. Tag exists and matches entity type
4. No errors in automation logs
## API Integration
For developers integrating with PayRequest:
### Tag Structure
```json theme={null}
{
"id": 1,
"name": "VIP Customer",
"color": "purple",
"type": "Customer",
"user_id": 1,
"created_at": "2025-01-15T10:30:00Z"
}
```
### Polymorphic Relationship
Tags use Laravel's polymorphic many-to-many relationships:
* **tags** table: Tag definitions
* **taggables** table: Pivot table linking tags to entities
* `tag_id`: Reference to tag
* `taggable_id`: Entity ID
* `taggable_type`: Entity class (Customer, Product, etc.)
## Frequently Asked Questions
No. Each tag is specific to one entity type. However, you can create tags with the same name for different types (e.g., "VIP" for both Customers and Products). They will be separate tags with independent usage tracking.
No, there's no limit. However, for practical organization, we recommend keeping your tag count manageable - typically under 50 tags per type.
No. Tags are internal organizational tools only. They're visible only in your dashboard and never shown in the customer portal, shop, or invoices.
When you delete a customer, subscription, or other entity, the tag associations are automatically removed. The tags themselves remain available for other entities.
Currently, tags are applied individually. For bulk operations, consider using the CSV import feature with tag assignments or setting up automations for automatic tagging.
Yes! The Subscription tag type works with both PayRequest native subscriptions and legacy Mollie subscriptions. You can tag and filter both types using the same tags.
Yes. Most entity list pages include a tag filter dropdown. Select one or more tags to filter the displayed items. You can also search within tagged entities on tag detail pages.
Automations run when specific events occur (like email bounces). For new customer tagging, you'll need to manually apply tags or use future automation triggers like "customer\_created" when available.
Yes! When creating or editing a Smart Link, you can configure automatic tag actions in the After Payment Actions section. You can apply a Customer tag, remove a Customer tag, or do both. These actions execute automatically when the customer completes payment. This is useful for tracking campaign conversions and moving customers through your sales funnel.
## Related Features
Set up automatic tagging based on email events
Organize and segment your customers
Tag marketing links by campaign
Monitor tag changes in activity log
# Webhook Configuration
Source: https://docs.payreque.st/organization-and-automation/webhook-configuration
Real-time event notifications
# Webhook Configuration
Get notified the instant a payment succeeds. PayRequest can send a signed HTTP request to your own server every time a `Transaction` is marked paid — regardless of which payment method or provider was used (Mollie, Stripe, PayPal, bank transfer, crypto, etc).
Currently one event is supported: **`payment.succeeded`**. You can configure a single webhook URL per account.
## Setting Up Your Webhook
Go to **Settings → API Tokens** in your dashboard.
Enter the HTTPS endpoint on your server that should receive payment notifications.
The first time you save a webhook URL, PayRequest generates a **webhook secret** used to sign every request. You'll need this to verify incoming requests.
Use the secret to validate the `X-PayRequest-Signature` header on every request you receive (see below).
You can regenerate your webhook secret at any time from the same settings page if you suspect it's been exposed. Doing so immediately invalidates the old secret.
## Payload
When a transaction is marked paid, PayRequest sends a `POST` request with this JSON body:
```json theme={null}
{
"event": "payment.succeeded",
"timestamp": "2026-07-13T10:15:00+00:00",
"data": {
"id": 48213,
"amount": 49.00,
"currency": "EUR",
"description": "Invoice #1042",
"payment_link_id": 1809,
"payment_method": "ideal",
"reference": "tr_abc123",
"paid_at": "2026-07-13T10:14:58+00:00",
"customer": {
"id": 512,
"name": "Jane Doe",
"email": "jane@example.com"
}
}
}
```
| Field | Description |
| - | - |
| `event` | Always `payment.succeeded` currently |
| `timestamp` | When the webhook was dispatched (ISO 8601) |
| `data.id` | PayRequest transaction ID |
| `data.amount` | Amount as a decimal (never divided/multiplied — matches what the customer paid) |
| `data.currency` | ISO currency code, defaults to `EUR` |
| `data.payment_link_id` | Smart Link ID, if the payment came from one |
| `data.payment_method` | Payment method used (`ideal`, `creditcard`, `crypto_usdc`, etc) |
| `data.reference` | Provider-specific transaction reference |
| `data.customer` | `null` if no customer is attached to the transaction |
## Verifying the Signature
Every request includes an `X-PayRequest-Signature` header in the form `sha256={hmac}`, where `{hmac}` is an HMAC-SHA256 of the raw JSON body, signed with your webhook secret.
```php theme={null}
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_PAYREQUEST_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $payload, $yourWebhookSecret);
if (! hash_equals($expected, $signature)) {
http_response_code(401);
exit;
}
```
Always compare signatures with a constant-time function (like PHP's `hash_equals`) to avoid timing attacks. Never compare with `==` or `===`.
## Delivery Behavior
* Webhooks are dispatched asynchronously via a queued job as soon as a transaction is marked paid
* Requests time out after **10 seconds**
* Delivery is **best-effort** — PayRequest does not currently guarantee automatic retries if your endpoint is unreachable or returns an error, so make sure your endpoint responds quickly and reliably
* Only one webhook URL is supported per account; every `payment.succeeded` event goes to the same endpoint
Since delivery isn't guaranteed to retry, treat webhooks as a fast notification layer rather than your only source of truth. You can always confirm a payment by checking the transaction or invoice status in the PayRequest dashboard or via the [API](/api/overview).
## Testing Your Endpoint
There's no built-in webhook test-send tool yet — the simplest way to test is to trigger a real (or testmode) payment and confirm your endpoint receives and correctly verifies it. Tools like [webhook.site](https://webhook.site) or [ngrok](https://ngrok.com) are useful for inspecting payloads during local development.
## FAQ
Currently only `payment.succeeded`. Additional events (subscription lifecycle, invoice status changes) are on the roadmap.
Not yet — one webhook URL per account. If you need to notify multiple systems, have your endpoint fan the event out internally.
The request will fail and the failure is logged on PayRequest's side, but it is not automatically retried. Make sure your endpoint has good uptime, and reconcile periodically against the dashboard or API as a safety net.
Yes. The webhook fires whenever a `Transaction` record is marked paid, regardless of payment method — including crypto (USDC), bank transfers, and manually recorded payments.
## Next Steps
Query transactions and invoices directly instead of (or alongside) webhooks
Advanced patterns for building against PayRequest webhooks
See how payment\_link\_id maps back to a Smart Link
# Bank Sync (Ponto)
Source: https://docs.payreque.st/payment-processing/bank-sync-ponto
Connect your bank account for automatic transaction syncing and Bank Transfer payments
# Bank Sync (Ponto)
Ponto is an open banking platform that connects your business bank account to PayRequest. This enables automatic transaction syncing and powers the Bank Transfer payment method.
**Powered by Isabel Group**: Ponto is a trusted open banking solution used by thousands of European businesses for secure bank connectivity.
## What Ponto Enables
Automatically import your bank transactions into PayRequest for reconciliation and reporting
Accept bank transfers with automatic payment matching using reference codes
View your real-time bank balance directly in PayRequest
Better understand your cash flow with integrated bank data
## Connecting Ponto
### Prerequisites
Before connecting Ponto, ensure you have:
* A **business bank account** with a Ponto-supported bank
* **Admin access** to your PayRequest account
* Your **bank login credentials** ready
### Supported Banks
Ponto supports most major European banks including:
* ABN AMRO
* ING
* Rabobank
* SNS Bank
* ASN Bank
* RegioBank
* Triodos Bank
* KBC
* BNP Paribas Fortis
* ING Belgium
* Belfius
* Argenta
* AXA Bank
* Deutsche Bank
* Commerzbank
* BNP Paribas
* Crédit Agricole
* And many more...
**Check Availability**: Visit the Ponto website to verify your specific bank is supported before starting the connection process.
### Connection Steps
Go to **Settings → Ponto** in your PayRequest dashboard
Click **Connect Ponto API** to start the connection process
Choose your bank from the list of available financial institutions
Log in to your bank and authorize Ponto to access your account data. This uses your bank's secure authentication (often including 2FA)
Return to PayRequest where your account will be synced automatically
**Security Note**: PayRequest never sees your bank login credentials. Authentication happens directly with your bank through Ponto's secure infrastructure.
## Managing Your Connection
### Connection Status
On the Ponto settings page, you can see:
* **Connected Date**: When the connection was established
* **Last Synced**: Most recent transaction sync timestamp
* **Account Details**: Your IBAN and current balance
### Available Actions
See all available financial institutions if you want to connect additional accounts
Manually trigger an account refresh to get the latest transactions
Disconnect your bank account from PayRequest (this doesn't affect your bank)
## Transaction Syncing
### Automatic Sync
Once connected, Ponto automatically syncs your transactions:
* **Frequency**: Every few minutes during business hours
* **History**: Imports recent transaction history
* **Direction**: Both incoming (credits) and outgoing (debits)
### Transaction Data
Each synced transaction includes:
| Field | Description |
| - | - |
| Date | Transaction execution date |
| Amount | Transaction amount with direction |
| Description | Bank-provided transaction description |
| Counterpart | Name of the other party |
| Reference | Payment reference/communication |
| Status | Booked or pending |
### Viewing Transactions
To view your synced bank transactions:
1. Go to **Settings → Ponto**
2. Find your connected bank account
3. Click **View Transactions**
Transactions are displayed with color coding:
* **Green**: Incoming payments (credits)
* **Red**: Outgoing payments (debits)
## Bank Transfer Payments
One of the most powerful features enabled by Ponto is automatic Bank Transfer payment matching.
### How It Works
Toggle "Bank Transfer Payment Method" on in your Ponto settings
Customer receives your IBAN and a unique reference (e.g., `PAY-12345`)
Customer transfers the exact amount with the reference to your account
PayRequest detects the incoming transaction and matches it by reference
The invoice/order is automatically marked as paid
### Configuration
In the Bank Transfer section of Ponto settings:
* **Toggle**: Enable/disable Bank Transfer as a payment option
* **IBAN Display**: Your IBAN shown to customers (auto-detected from bank)
* **Account Name**: Your account name shown to customers
* **Custom Instructions**: Add your own guidance text for customers
Add helpful instructions like:
```
Please include the reference code exactly as shown in your payment description.
Payments are typically matched within 24 hours. For urgent orders, please
contact us after making your transfer.
```
### Where Bank Transfer Appears
When enabled, Bank Transfer shows as a payment option on:
* Payment pages
* Invoice payment portal
* Smart links
* Checkout (coming soon)
Bank Transfer is **not available** for recurring payments or subscriptions. Use SEPA Direct Debit for those use cases.
For complete Bank Transfer documentation, see [Bank Transfer Payments](/payment-processing/bank-transfer).
## Transaction Categorization
PayRequest helps you organize synced transactions:
### VAT Categories
Categorize transactions for accounting:
* Standard Rate (21%)
* Reduced Rate (9%)
* Zero Rate (0%)
* Exempt
* Out of Scope
### Bulk Editing
Select multiple transactions and:
* Assign VAT category
* Add notes
* Mark as reviewed
* Export for accounting
## Security & Privacy
Ponto operates under EU PSD2 regulations for open banking security
All data transmission uses bank-grade encryption
PayRequest never stores your bank login credentials
You can revoke access anytime through your bank or PayRequest
### Data Access
Ponto provides **read-only** access to:
* Account balances
* Transaction history
* Account holder information
Ponto does **not** have access to:
* Initiate payments from your account
* Modify your account settings
* Access other bank accounts you haven't authorized
## Troubleshooting
**Common causes:**
1. **Bank not supported**: Check if your bank is in Ponto's network
2. **Authentication timeout**: Try again - bank sessions can expire
3. **2FA issues**: Ensure you complete all authentication steps
4. **Browser issues**: Try a different browser or clear cache
**Solution**: Wait a few minutes and try again. If persistent, contact support.
**Check these:**
1. Is the connection still active? (Check for "Connected" status)
2. Click "Refresh Accounts" to force a sync
3. Some banks have sync delays (especially weekends)
4. Very recent transactions may take a few hours to appear
**Note**: Bank transaction availability varies by institution.
**Matching requires:**
1. Exact reference (e.g., `PAY-12345`) in payment description
2. Exact amount (to the cent)
3. Transaction synced to PayRequest
**Debug steps:**
* Check if transaction appears in Ponto transactions list
* Verify the reference in the transaction description
* Compare amounts exactly
Bank connections may need reconnection if:
* Your bank requires periodic reauthorization
* You changed bank credentials
* The bank updated their systems
**To reconnect**: Remove the existing connection and add it again following the setup steps.
## Pricing
**No additional cost** for Ponto integration within PayRequest. Bank Transfer payments have no transaction fees from PayRequest.
Ponto may have its own pricing for API access. Check [Ponto's pricing](https://myponto.com) for current rates.
Typical costs include:
* Monthly subscription for API access
* Per-transaction fees for certain operations
## Related Documentation
Complete guide to accepting bank transfers with automatic matching
Compare all available payment methods
Analyze your payment and bank transaction data
For recurring payments, use SEPA Direct Debit instead
# Bank Transfer Payments
Source: https://docs.payreque.st/payment-processing/bank-transfer
Accept bank transfers with automatic payment matching via Ponto integration
# Bank Transfer Payments
Accept direct bank transfers from your customers with automatic payment matching. When customers transfer money to your bank account with the correct reference, PayRequest automatically detects and marks the payment as complete.
**Automatic Reconciliation**: Bank Transfer payments use the Ponto integration to automatically match incoming bank transactions with pending payments - no manual work required.
## How It Works
At checkout, the customer chooses "Bank Transfer" as their payment method
Customer receives your IBAN, account name, exact amount, and a unique payment reference (e.g., `PAY-12345`)
Customer logs into their bank and transfers the exact amount with the reference in the payment description
PayRequest syncs your bank transactions via Ponto and automatically matches the payment by reference and amount
Invoice/order is marked as paid, and customer receives confirmation
## Requirements
You need an active Ponto bank connection to use Bank Transfer payments. Ponto syncs your bank transactions automatically.
A business bank account connected to Ponto. Most European banks are supported through the Ponto network.
## Enabling Bank Transfer
### Step 1: Connect Ponto
First, ensure you have Ponto connected:
1. Go to **Settings → Ponto**
2. Click **Connect Ponto API** if not already connected
3. Authorize access to your bank account
4. Wait for initial account sync
### Step 2: Enable Bank Transfer Payment Method
Once Ponto is connected:
1. On the **Settings → Ponto** page, find the **Bank Transfer Payment Method** section
2. Toggle the switch to **enable** Bank Transfer
3. Your IBAN and account name will be displayed (pulled from your connected bank)
**Custom Instructions**: You can add custom instructions that will be shown to customers when they select Bank Transfer. Use this to provide additional guidance or expected processing times.
## Customer Experience
When a customer selects Bank Transfer at checkout, they see:
**What customers see:**
* **Account Name**: Your business name from the bank account
* **IBAN**: Your bank account number
* **Amount**: Exact amount to transfer
* **Reference**: Unique payment reference (e.g., `PAY-12345`)
Each field has a **copy button** for easy copying to their banking app.
The payment reference is crucial for automatic matching. Customers are instructed to:
* Include the **exact reference** in their payment description
* Transfer the **exact amount** (not more, not less)
* Use standard SEPA transfer (not instant/express which may truncate references)
If the reference is missing or incorrect, automatic matching won't work and manual reconciliation may be needed.
After the customer initiates the transfer:
1. Invoice status changes to **Pending**
2. Customer can return to the payment page anytime to see the bank details
3. Once matched, status updates to **Paid**
4. Customer receives email confirmation (if email templates are configured)
## Automatic Matching
PayRequest automatically matches bank transfers using this logic:
Ponto syncs your bank transactions regularly (typically every few minutes)
System scans incoming transactions for payment references matching the `PAY-XXXXX` pattern
The transaction amount must match the pending payment amount exactly
When matched, the invoice/order is automatically marked as paid with a transaction record
### Matching Criteria
| Criteria | Requirement |
| - | - |
| Reference | Must contain exact `PAY-XXXXX` reference |
| Amount | Must match exactly (to the cent) |
| Direction | Must be an incoming payment (credit) |
| Timeframe | Transaction within last 30 days |
**Partial Payments**: Bank Transfer currently requires the exact amount. Partial payments are not automatically matched.
## Where Bank Transfer Appears
Bank Transfer is available as a payment option in:
Your public payment page (e.g., `payrequest.me/yourbusiness`)
Customer portal where customers pay their invoices
Payment links created for specific amounts or products
Your online shop checkout (coming soon)
**Not for Recurring**: Bank Transfer is only available for one-time payments. For subscriptions and recurring billing, use SEPA Direct Debit instead.
## Use Cases
### B2B Payments
Business customers often prefer bank transfers for:
* Accounting and audit trails
* Internal approval workflows
* Avoiding credit card fees
* Large transaction amounts
### High-Value Transactions
For large payments where:
* Credit card limits may apply
* Lower fees are important
* Customer prefers bank-level security
### Cost-Conscious Customers
Some customers prefer bank transfers to:
* Avoid card processing fees being passed on
* Not share card details online
* Use their familiar banking app
## Pricing
**€0.00**
No PayRequest fee for bank transfers
**0%**
No percentage-based fees
**Varies**
Check your Ponto subscription for API usage costs
## Troubleshooting
**Possible causes:**
1. **Wrong reference**: Customer didn't include the reference or made a typo
2. **Wrong amount**: Amount doesn't match exactly
3. **Sync delay**: Ponto hasn't synced yet (wait a few minutes)
4. **Reference truncated**: Some banks truncate long descriptions
**Solution**: Check your Ponto transactions manually and verify the reference/amount. Contact support if needed.
**Check these settings:**
1. Is Ponto connected? (Settings → Ponto)
2. Is Bank Transfer enabled? (Toggle in Ponto settings)
3. Is your IBAN available? (Refresh accounts if needed)
4. Is this a recurring product? (Bank Transfer not available for subscriptions)
**Advise your customer:**
1. Return to the payment page with `?invoice=ID` parameter
2. The reference and IBAN are displayed there
3. They can also check their email for the invoice
## Best Practices
Add custom instructions explaining your expected processing time and any special requirements
Inform customers to copy the reference exactly - including the hyphen
Remind customers to transfer the exact amount shown, not rounded
Advise customers to use standard SEPA transfers, not instant transfers that may truncate references
## Related Documentation
Learn more about connecting and configuring Ponto for bank synchronization
Compare all available payment methods and their features
Creating and managing payment links for invoices
Create reusable payment links with Bank Transfer support
# Checkout Links
Source: https://docs.payreque.st/payment-processing/checkout-links
Generate direct checkout URLs for products, invoices, and custom amounts
## Overview
Checkout links are URLs that take customers directly to a payment flow. PayRequest offers several types of checkout links depending on your use case.
## Types of Checkout Links
### Payment Page Links
Your payment page is always available at:
```
https://payrequest.me/[your-handle]
```
You can pre-fill amounts and customer details using dynamic URL parameters:
```
https://payrequest.me/[your-handle]/25.00
https://payrequest.me/[your-handle]?amount=25&name=John&email=john@example.com
```
See [Payment Page Dynamic Links →](/payment-processing/payment-page-dynamic-links) for full URL parameter documentation.
### Smart Links
Branded, reusable URLs with built-in analytics:
```
https://payrequest.me/[your-handle]/summer-sale
```
Smart links provide permanent URLs, QR codes, payment limits, delivery options, and conversion tracking.
See [Smart Links →](/payment-processing/smart-links) for full documentation.
### Product Links
Direct links to specific products in your shop:
```
https://payrequest.me/shop/[your-handle]/product/[product-id]
```
Or via payment page with product parameter:
```
https://payrequest.me/[your-handle]?product=[product-id]
```
### Invoice Payment Links
Every invoice includes a unique payment link that customers can use to pay. These are automatically generated and included in invoice emails.
See [Invoice Payment Links →](/invoices/invoice-payment-links) for details.
## Choosing the Right Link Type
| Use Case | Recommended Link Type |
| - | - |
| Marketing campaign | Smart Link |
| One-time payment request | Payment Page Dynamic Link |
| Product promotion | Smart Link (Product type) |
| Invoice payment | Invoice Payment Link |
| QR code on flyer | Smart Link |
| Security deposit | Smart Link (Deposit product) |
| Custom amount with pre-filled data | Payment Page Dynamic Link |
| Reusable donation link | Smart Link (Amount type) |
## Need Help?
Branded payment links with analytics
URL parameters for payment pages
Authorization hold links
Invoice payment URLs
# Connecting Payoneer
Source: https://docs.payreque.st/payment-processing/connect-payoneer
Accept payments from customers worldwide — including emerging markets across Asia, LatAm, and Africa — by connecting your Payoneer account to PayRequest.
# Connecting Payoneer
Payoneer is a global payment platform trusted by over 5 million businesses and freelancers worldwide. Connecting it to PayRequest adds a **Pay with Payoneer** button to your payment links — giving customers in 150+ countries a familiar, local checkout experience.
**Phase 1 scope**: Payoneer currently powers payment links only. Invoices, subscriptions, and recurring billing continue to use Mollie. Wider Payoneer support is planned for upcoming releases.
## Why Add Payoneer
Accept payments from customers in Asia, LatAm, Africa, and the Middle East — markets where Mollie and Stripe have limited reach.
Payoneer is widely used by online creators and freelancers. Your customers may already have a Payoneer account and prefer it.
Supports cards, ACH bank transfers, SEPA, and a growing range of local payment methods by region.
Customers are redirected to Payoneer's secure hosted checkout and returned to your page immediately after payment.
## Prerequisites
You need a **Payoneer Business account** and API credentials from the [Payoneer Developer Portal](https://developer.payoneer.com). Payoneer will provide a **Client ID** and **Client Secret** when you create a checkout integration in your account.
If you don't have API credentials yet, log in to the Payoneer Developer Portal, create a new application, and copy the **Client ID** and **Client Secret** — you'll need both to connect.
## How to Connect
Go to **Settings → Providers** (or navigate to `/provider-settings`). Scroll down to the **Add more payment options** section and find the **Payoneer** card.
Click the **Connect** button on the Payoneer card. A form expands in place — no redirect required.
Paste your **Client ID** and **Client Secret** from the Payoneer Developer Portal. Optionally add your **account email** for reference.
Click **Connect Payoneer**. PayRequest immediately verifies your credentials by requesting a token from Payoneer's API. If successful, the card shows a green **Connected** badge.
## What Customers See
When a customer opens one of your payment links with Payoneer enabled, a **Pay with Payoneer** button appears below your other payment methods:
1. Customer clicks **Pay with Payoneer**
2. They are redirected to Payoneer's secure hosted checkout page
3. They pay with their preferred local method (card, Payoneer wallet, bank transfer, etc.)
4. Payoneer redirects them back to your success page
5. The transaction is recorded in your PayRequest dashboard
The payment is confirmed both via the return redirect and an async webhook — so even if a customer closes their browser mid-redirect, the transaction is still recorded correctly.
## Supported Currencies
Payoneer supports a wide range of currencies, making it especially useful for merchants with international customers:
| Region | Currencies |
| - | - |
| Americas | USD, CAD, BRL, MXN |
| Europe | EUR, GBP, TRY |
| Asia-Pacific | INR, JPY, PHP, IDR, MYR, THB, VND |
| Africa & Middle East | NGN, KES, ZAR, EGP |
| Oceania | AUD |
If your payment page currency isn't in the list above, Payoneer will default to **USD**.
## Running Multiple Providers
Payoneer works alongside Mollie, Stripe, and PayPal simultaneously. Customers see all enabled payment options on the same page — each as its own button or method group.
A common setup for creators with a global audience: **Mollie** for European iDEAL / SEPA payments, **PayPal** for US and UK buyers, and **Payoneer** for the rest of the world.
## Disconnecting Payoneer
Go to **Settings → Providers**, find the Payoneer card, and click **Disconnect Payoneer**. The button disappears from your payment links immediately. Existing transactions and their refund history remain fully accessible.
If Payoneer is your only active payment provider, disconnecting it will leave your payment links with no checkout method until you reconnect or add another provider.
## Frequently Asked Questions
Yes. You need a Payoneer Business account with checkout API access enabled. Personal Payoneer accounts (used for receiving freelance payouts) don't include the checkout API — you'll need to upgrade or create a separate Business account.
Log in to the [Payoneer Developer Portal](https://developer.payoneer.com), navigate to your applications, and create a new **Checkout** integration. Your credentials are shown once — copy them immediately and store them securely.
Not in the current integration. Payoneer is Phase 1 — payment links only. Subscriptions and recurring billing use Mollie. Payoneer recurring support is on the roadmap.
Payoneer's standard merchant fees apply and vary by country and payment method — typically 3–4% for card payments. Check your Payoneer merchant agreement for exact rates. PayRequest's platform fee (2% on free plans, none on paid plans) applies on top.
Yes. Set `PAYONEER_SANDBOX=true` in your environment to route all API calls through Payoneer's sandbox environment. Use sandbox credentials from the Payoneer Developer Portal for testing.
Yes. All four providers can be connected at the same time. Buyers see all available options on your payment page, and each transaction routes to the provider the buyer selects.
Payoneer sends a webhook notification to PayRequest when the payment completes, regardless of the redirect. Your transaction is recorded correctly even if the browser redirect fails.
## Next Steps
Compare all available payment methods across Mollie, Stripe, PayPal, and Payoneer.
Add Stripe for cards, Apple Pay, Klarna, and Adaptive Pricing on your payment links.
Add PayPal buttons — including Pay Later and Venmo — alongside Payoneer.
Build the shareable link or QR code your customers pay through.
# Connecting PayPal
Source: https://docs.payreque.st/payment-processing/connect-paypal
Add PayPal, Pay Later, and Venmo to your payment links — for the millions of buyers who already trust the PayPal checkout.
# Connecting PayPal
PayPal is the world's most familiar payment button — many buyers prefer it because their card and shipping details are already saved with PayPal. Connecting your account to PayRequest adds **PayPal**, **Pay Later**, and (where eligible) **Venmo** to your payment links.
**Phase 1 scope**: PayPal currently powers payment links only. Invoices, subscriptions, and customer billing flows continue to use Mollie. We're rolling out wider PayPal support in upcoming releases.
## Why Add PayPal
Buyers can pay with their existing PayPal balance, linked bank, or saved cards in two clicks.
For orders above PayPal's regional threshold (typically €30+), buyers see Pay Later options — split payments or 30-day delay.
For US buyers on mobile, Venmo appears as a checkout option. Higher conversion in the US Gen-Z and Millennial segments.
PayPal's buyer protection program reassures hesitant first-time buyers — often the deciding factor for higher-ticket purchases.
## How to Connect
Go to `/provider-settings` and find the **PayPal** card.
PayRequest opens PayPal's Partner onboarding page. Sign in with your PayPal Business account, or create one if you don't have it yet.
PayPal asks you to grant PayRequest permission to charge customers and issue refunds on your behalf. Approve, and you're returned to PayRequest.
The PayPal card now shows a green **Connected** banner with your PayPal merchant ID and account email.
**Already have a PayPal Business account?** The onboarding flow detects it and links it instantly — no need to create a new account or migrate anything.
## What Customers See
When a customer opens a payment link with PayPal enabled, they see one or more buttons appear directly on your payment page:
The familiar yellow **Pay with PayPal** button. Opens PayPal's checkout in a popup so the buyer never leaves your page.
Appears automatically for eligible orders. Lets the buyer split the payment or delay it for 30 days.
Shows up only for US-based mobile buyers. Tap-to-pay using their Venmo account.
After confirming in the PayPal popup, the buyer lands back on your success page and the transaction is recorded in your PayRequest dashboard within seconds.
## Renewable Access Links
PayPal Amount Links can grant access for a fixed number of days after every successful payment. Customers use the same public Smart Link to buy or renew, while PayRequest maintains an independent expiry date for each customer.
You can optionally connect a private Telegram group or channel. After payment, the success page gives the buyer a personal, one-use invitation, and the PayRequest bot removes the member when their paid period ends.
See [Renewable Timed Access](/payment-processing/smart-links#step-3c-grant-renewable-timed-access-optional) for setup instructions and renewal behavior.
## Checkout Recovery
When [Checkout Recovery](/shop-and-checkout/checkout-recovery) is enabled, PayPal orders started through Smart Links are included in checkout-attempt tracking. This lets you identify buyers who began PayPal checkout but did not complete the payment. The setting must be enabled before the attempt occurs.
## Login with PayPal
If you'd like new merchants to sign up to PayRequest faster, the **Login with PayPal** option on `/login` and `/register` lets people skip the standard form. They authenticate with PayPal, and PayRequest automatically chains a PayPal Connect step right after — so by the time they finish signup, their account is already wired up to take payments.
## Refunds and Disputes
Open the transaction in your dashboard and click **Refund**. You can issue a full refund or a partial amount up to the original charge. PayPal returns the money to the buyer's original funding source.
If a buyer files a dispute with PayPal (claiming "item not received" or "not as described"), PayPal notifies PayRequest and the dispute is logged on the transaction. You respond through the PayPal Resolution Center; the [Handling Chargebacks](/payment-processing/handling-chargebacks) guide covers the workflow.
Supported. Issue any amount up to the full charge value. Multiple partial refunds are allowed until the total reaches the original amount.
## Eligibility Notes
PayPal's checkout buttons are dynamically gated by PayPal itself based on:
* **Buyer location**: Venmo only renders for US IPs; Pay Later thresholds vary by region
* **Order amount**: Pay Later requires the cart value to exceed the regional minimum (typically €30+ in EU, \$30+ in US)
* **Currency**: Some methods only work with specific currencies — Venmo with USD, regional Pay Later schemes with the local currency
* **Buyer eligibility**: PayPal's risk engine may suppress Pay Later for buyers who don't qualify
If a buyer doesn't see Pay Later or Venmo, it's PayPal's own eligibility check — not a PayRequest setting.
## Currency Conversion
Your payment pages can display prices in whatever currency you've chosen, but PayPal always settles funds into **one fixed currency** for your account — the "primary currency" set when your PayPal Business account was created, based on your country.
If a buyer pays through PayPal while your page currency is different from your PayPal account's settlement currency, PayRequest automatically converts the amount using live exchange rates before sending it to PayPal — so your account receives the correct value, not the raw number relabeled with a different currency code.
**Example**: Your payment page shows prices in USD, but your PayPal account settles in PHP. A buyer paying **\$10.00** will have PayPal charge **≈ ₱607.50** (the live USD → PHP equivalent) — not "PHP 10.00".
Buyers see this converted estimate on the PayPal button itself before they pay, so there are no surprises at checkout. Exchange rates refresh regularly from a live market-rate feed, and the rate shown to the buyer matches the rate used for the actual charge.
## Disconnecting PayPal
You can disconnect PayPal at any time from Provider Settings. Existing transactions stay accessible, and refunds on past transactions continue to work. Only new payments are blocked while PayPal is disconnected.
If you disconnect PayPal while it's your only payment provider, your payment links will be unavailable until you reconnect (or connect another provider).
## Frequently Asked Questions
PayPal's standard merchant fees apply — typically 2.9% + a fixed fee for domestic transactions, slightly higher for cross-border. PayRequest itself only charges its own platform fee on free-plan accounts (2% per transaction); paid plans pay nothing on top.
Yes. PayPal requires a Business (not Personal) account to accept payments through a partner integration. The onboarding flow can convert a Personal account during signup if needed.
Yes. The connect flow detects existing accounts and links them — no need to create a new one or move existing transactions.
Pay Later only renders when the order amount exceeds PayPal's regional threshold (typically €30+ in the EU, \$30+ in the US). For amounts below that, only the standard PayPal button appears.
Venmo only renders for buyers in the US, on mobile, with USD as the transaction currency. EU and UK buyers won't see it. If you're testing from outside the US and want to verify Venmo is configured, you'll need to use a US IP.
Yes. All three can be connected simultaneously. Buyers see whichever methods you've enabled, and each transaction routes to the right provider based on what the buyer picks.
PayPal settles funds in your account's fixed primary currency, which may differ from the currency your payment page displays. PayRequest converts the amount automatically using live exchange rates, so PayPal charges the correct equivalent value — see [Currency Conversion](#currency-conversion) above.
## Next Steps
See every payment method available through PayPal and other providers.
Add Stripe alongside PayPal for cards, Apple Pay, Klarna, and Adaptive Pricing.
Build the shareable link or QR code your customers will pay through.
Learn how to respond to PayPal disputes and chargebacks from other providers.
# Connecting Revolut Pay
Source: https://docs.payreque.st/payment-processing/connect-revolut-pay
Connect your own Revolut Merchant account and accept Revolut Pay payments directly into your business account.
# Connecting Revolut Pay
Revolut Pay lets customers pay through Revolut, cards, and the payment methods enabled in your Revolut Merchant checkout. PayRequest uses Revolut's Merchant API and Merchant Web SDK; payments settle directly to your own Revolut Merchant account.
Revolut Pay is tenant-scoped. PayRequest never uses a shared Revolut account for your checkout. The button appears only on payment pages owned by a merchant with an active Revolut connection.
## What you need
You need an approved **Revolut Merchant account** under Revolut Business. The Merchant account is separate from the ordinary Business account and must be approved before production payments can be accepted.
From **Revolut Business → Settings → APIs → Merchant API**, obtain:
* **Production Public API key** (`pk_...`) for the browser checkout
* **Production Secret API key** (`sk_...`) for server-side API calls
* **Webhook signing secret** from the webhook details page
Never paste the secret key into frontend code, a payment link, or a support message.
## Connect your account
In PayRequest, open **Settings → Providers**, or go directly to `/provider-settings`.
Open the **Revolut Pay** provider card and click **Connect**.
Enter your Public API key and Secret API key. Select **Production**. Sandbox credentials must only be used with the Sandbox environment.
Click **Connect Revolut**. Your credentials are encrypted before storage and are never shown again in full.
## Configure the webhook
Create a Merchant API webhook for:
`https://payrequest.app/webhooks/revolut`
Subscribe at minimum to:
* `ORDER_COMPLETED`
* `ORDER_CANCELLED`
* `ORDER_FAILED`
* `ORDER_PAYMENT_DECLINED`
* `ORDER_PAYMENT_FAILED`
Copy the webhook's **signing secret** into the PayRequest Revolut provider form. PayRequest verifies the raw request body, HMAC-SHA256 signature, and five-minute timestamp window before processing an event.
The webhook secret is different from the Merchant Secret API key. Use the signing secret shown in the webhook details, not the `sk_...` API key.
## Customer checkout
On an eligible PayRequest payment page, customers see a dark **Revolut Pay** button after entering a valid amount, name, and email address. The checkout uses the Revolut Payments module and creates an order on demand through PayRequest's server.
After a successful payment:
1. Revolut sends an `ORDER_COMPLETED` webhook.
2. PayRequest retrieves the order server-side and verifies the final state.
3. The matching invoice and transaction are marked paid idempotently.
4. The customer returns to the PayRequest success page.
The webhook is the reliable source for fulfillment; the browser return is only a confirmation and recovery path.
## Current scope
The current Phase 1 integration supports one-time amounts on simple payment pages. It does not yet appear on product URLs such as `?product=123`, subscriptions, deposits, or existing invoice checkouts. These flows need product/order fulfillment and recurring-payment handling before Revolut can be enabled safely for them.
Revolut Pay can be connected alongside Mollie, Stripe, PayPal, and Payoneer. Each merchant's payments remain scoped to the provider account they connected.
## Sandbox testing
For testing, connect Sandbox public and secret keys and select **Sandbox** in the provider form. The SDK mode and Merchant API endpoint are selected per connection; production keys cannot be used in Sandbox and vice versa.
Revolut's Sandbox Revolut Pay flow uses a simulated account-creation experience because there is no Sandbox version of the Revolut retail app. Sandbox behavior can therefore differ from production.
## Disconnecting
Return to **Settings → Providers** and click **Disconnect Revolut**. New payment pages stop showing the button immediately. Existing transactions retain their provider reference for reconciliation.
## Related guides
Compare PayRequest payment providers and methods.
Create the payment page where Revolut Pay appears.
# Connecting Stripe
Source: https://docs.payreque.st/payment-processing/connect-stripe
Accept cards, Apple Pay, Google Pay, Klarna, iDEAL and more through Stripe — with prices auto-localized to your buyer's currency.
# Connecting Stripe
Stripe gives PayRequest payment links a worldwide reach. Customers can pay with cards, Apple Pay, Google Pay, Klarna, Afterpay, iDEAL, Bancontact, and many more — and **Adaptive Pricing** automatically shows them the price in their own local currency.
**Phase 1 scope**: Stripe currently powers payment links only. Invoices, subscriptions, and customer billing continue to use Mollie. We're rolling out wider Stripe support over the coming releases.
## Why Add Stripe
Cards in 200+ countries, plus regional methods that drop in automatically based on the buyer's location.
A buyer in Canada sees CAD, a buyer in Japan sees JPY — without you doing the FX math. The conversion fee is paid by the buyer, not you.
One-tap mobile checkout that consistently lifts conversion. Enabled out of the box on supported devices.
Klarna and Afterpay surface for orders above the regional threshold, helping convert higher-ticket sales.
## How to Connect
Go to `/provider-settings` and find the **Stripe** card.
You'll be sent to Stripe's secure onboarding page. Sign in to your Stripe account, or create one if you don't have it yet.
Stripe asks for permission to charge on your behalf. Approve, and you're returned to PayRequest with the connection live.
The Stripe card now shows a green **Connected** banner with your account name and email.
First time using Stripe? The onboarding wizard guides you through identity verification, bank details, and payout settings — required by Stripe before you can take live payments.
## What Customers See
When a customer opens a payment link, the Stripe checkout shows up as an embedded form on your payment page — no redirect to a separate site. They pick their preferred method, fill in card or bank details, and confirm. Cards are charged instantly; methods like iDEAL or Bancontact bounce briefly through the buyer's bank for authorization.
The payment form uses a dark theme that matches PayRequest's checkout chrome. Buyers stay on your payment page from start to finish.
The pay button updates as the buyer picks a method — "Pay with iDEAL", "Pay with Apple Pay", and so on — so they always know what they're confirming.
## Adaptive Pricing
Adaptive Pricing is what makes Stripe especially valuable for international payment links. Stripe detects each buyer's country and shows the price converted to their local currency, with the exchange rate locked in for 24 hours.
**You don't pay anything extra.** Stripe takes a 2–4% conversion fee, and that fee is added to the buyer's price — not yours. You receive the original amount in your account's settlement currency.
### How It Works for Buyers
1. Buyer opens a €25 payment link from Toronto
2. Stripe detects their location and converts the price (e.g., to CAD 36.50)
3. The Currency Selector lets them switch back to your default currency if they prefer
4. They pay in their own currency through whichever method they choose
5. You receive €25 in your Stripe account — Stripe handles the conversion
### Managing Adaptive Pricing
Adaptive Pricing is **enabled by default** when you connect Stripe. To turn it off for your account:
Visit `/provider-settings` and find your connected Stripe card.
In the Stripe section there's a panel labelled **Adaptive Pricing** with a switch. Flip it off if you want all buyers to see your account currency only.
Most merchants leave Adaptive Pricing on — it's a free conversion lift for international buyers. The only common reason to disable it is if you have legal or pricing constraints that require a single currency display.
## Choosing Which Payment Methods Show
Stripe supports dozens of payment methods — cards, wallets, regional bank methods, Buy Now Pay Later, and more. You decide which ones appear on your checkout from inside PayRequest, so you don't have to bounce into the Stripe Dashboard.
Visit `/provider-settings` and find your Stripe card.
Inside the Stripe card, click the **Payment Methods** tab. Methods are grouped — Cards & wallets, European bank methods, Buy now pay later, Regional methods, and Bank debits.
Click **Enable** to turn on a method, or **Disable** to turn it off. PayRequest handles both sides of the switch in one click — it tells Stripe you want the method **and** flips it on for your checkout, so buyers see it next time they pay.
**Why this matters.** Stripe actually has two settings per method: one for "is my account allowed to use this", and one for "show it to buyers at checkout". They're separate, and turning on only the first one is a common gotcha that leaves a method invisible. PayRequest now toggles both for you in a single click.
### The "Hidden at checkout" badge
Sometimes a method is enabled on your account but Stripe still won't show it to a particular buyer. The most common reasons:
* **Currency mismatch** — e.g. MobilePay only displays for payments in DKK or EUR.
* **Buyer region** — e.g. iDEAL only shows to buyers Stripe identifies as being in the Netherlands.
* **Verification pending** — Stripe is still checking your account details.
When PayRequest detects this, the method card shows an amber **Hidden at checkout** badge next to its green Active status. That's Stripe telling you: "the merchant has it on, but right now, this buyer won't see it." It's not an error you need to fix — it's just useful context so you know why a method isn't appearing on a test page.
If you're a Danish merchant testing MobilePay from a non-Danish IP (e.g. via a VPN), Stripe may hide it even though everything is set up correctly. Test from your real location, or use a payment-link currency that matches the method's supported list.
### Methods to Consider Enabling
Card payments, Link, Apple Pay, Google Pay, Amazon Pay. Recommended for every merchant — these cover the bulk of global checkouts.
MobilePay (Denmark, Finland), Swish (Sweden), TWINT (Switzerland), Bizum (Spain), Satispay (Italy). Enable the ones that match your customer base.
iDEAL (Netherlands), Bancontact (Belgium), EPS (Austria), Przelewy24 / BLIK (Poland), Multibanco / MB WAY (Portugal). Strong conversion for European buyers.
Klarna, Afterpay, Affirm, Alma. Surfaces above regional minimums to boost higher-ticket sales.
## Refunds and Disputes
Open the transaction in your dashboard and click **Refund**. You can issue a full refund or a partial amount. Stripe handles the conversion if the original payment was in a different currency — the buyer gets back the exact amount they paid.
If a buyer disputes a charge with their bank, Stripe notifies PayRequest via webhook and the dispute is logged on the transaction. Use the Stripe Dashboard to upload evidence; the [Handling Chargebacks](/payment-processing/handling-chargebacks) guide covers the workflow.
Supported. Issue any amount up to the full charge value. Multiple partial refunds on a single transaction are allowed until the total reaches the original amount.
## Disconnecting Stripe
You can disconnect Stripe at any time from Provider Settings. Existing transactions stay accessible in your dashboard, and refunds on past transactions continue to work. Only new payments are blocked while Stripe is disconnected.
If you have payment links or QR codes that route to Stripe specifically, disconnecting will fall back to your other connected providers. If Stripe is your only provider, your payment links will be unavailable until you reconnect.
## Frequently Asked Questions
Stripe's standard processing fees apply — typically 2.9% + €0.25 for European cards, varying by region and method. Adaptive Pricing's 2–4% currency conversion fee is paid by the buyer, not you. PayRequest itself only charges its own platform fee on free-plan accounts (2% per transaction); paid plans pay nothing on top.
Yes. Stripe requires identity verification (KYC) for any merchant taking live payments. The onboarding form asks for business details, owner identification, and payout bank details. Most merchants finish in under 10 minutes.
Stripe lets you settle in your account's primary currency (typically EUR, USD, GBP, CHF, or your local currency). Adaptive Pricing then handles displaying prices to buyers in any of 150+ presentment currencies.
Yes, but make sure your custom domain is allowed to load Stripe's scripts. PayRequest's standard payment domain (`payrequest.me`) is configured out of the box.
Yes. Connect Stripe alongside Mollie or PayPal, test with a small payment, then update your payment links once you're happy. You don't have to disconnect anything during the transition.
## Next Steps
See every payment method available through Stripe and other providers.
Add PayPal, Pay Later, and Venmo alongside Stripe for broader buyer reach.
Build the shareable link or QR code your customers will pay through.
Learn how to respond to disputes from Stripe and other providers.
# Crypto Payments (USDC)
Source: https://docs.payreque.st/payment-processing/crypto-payments
Accept USDC payments on the Base network through WalletConnect — zero chargebacks, instant settlement, worldwide reach
# Crypto Payments (USDC)
PayRequest supports **USDC payments on the Base network** — a fast, low-cost stablecoin payment method that works worldwide. Customers pay USDC from their own wallet to a PayRequest treasury address; once the transaction is confirmed on-chain, PayRequest automatically forwards 98% to your connected wallet.
Crypto payments are available on your payment page alongside your existing payment methods (iDEAL, credit card, bank transfer, etc.). Enable it once in your settings and it appears on all your payment pages automatically.
## Why Add Crypto Payments
Crypto works everywhere — no country restrictions, no currency conversion issues. Anyone with a wallet on Base can pay you in seconds.
USDC payments are irreversible once confirmed on-chain. No disputes, no chargeback fees, no refund fraud.
Funds arrive in your wallet within seconds of the customer confirming the transaction. No 2–3 day bank delays.
Once a payment is confirmed on-chain, PayRequest automatically forwards 98% to your connected wallet — 2% covers the platform fee. No manual transfers.
## How It Works
Go to **Provider Settings** and find the **Crypto (USDC)** card. Click **Connect Wallet** and scan the QR code with your wallet app (MetaMask, Coinbase Wallet, or any WalletConnect-compatible wallet).
Your wallet asks you to sign a short message. This confirms you own the wallet address. No gas fee — no transaction is sent.
You'll see your wallet address displayed with a green **Connected** badge. Crypto is now available as a payment method on all your payment pages.
When a customer selects "Pay with Crypto" on your payment page, a WalletConnect QR code appears. They scan it with their wallet, confirm the USDC amount, and the transaction is signed and sent to the Base network — to a PayRequest treasury address.
PayRequest monitors the Base network for the transaction. Once it has at least **2 confirmations**, PayRequest automatically forwards **98% to your connected wallet** and keeps 2% as the platform fee. This usually takes a few seconds to a couple of minutes depending on network conditions.
**First time using crypto?** You'll need a wallet app like MetaMask or Coinbase Wallet. See the [supported wallets guide](/payment-processing/crypto-supported-wallets) for setup instructions.
## Wallet Balance
Once your wallet is connected you can see your live balances directly in **Provider Settings → Crypto (USDC)**:
* **USDC balance** — your current USDC on Base, ready to spend or send to an exchange
* **ETH balance** — your ETH available for gas fees on Base (\~\$0.001 per transaction)
Balances are read directly from the Base blockchain (no sign-in required) and cached for 5 minutes. Hit **Refresh** at any time to see the latest figures.
ETH is only needed when you initiate transactions yourself (e.g., sending USDC from your wallet). Customers pay the gas when they send payments to you — you don't need ETH to receive.
## Customer Experience
Your customers don't need an account or prior crypto knowledge — just a wallet with USDC on Base.
A WalletConnect QR code appears on the payment page. Customers scan it with their phone wallet app or click to open their browser extension.
The total is shown in USDC (converted from EUR at the current rate). No surprise fees.
Base confirms transactions in under 1 second. The payment page updates automatically once confirmed.
WalletConnect works on iOS Safari and Android Chrome. No app switching required on most devices.
## Fees & Costs
PayRequest charges a **2% platform fee** on each crypto payment.
**Example:**
* Customer pays 100 USDC to PayRequest's treasury wallet
* Once confirmed on-chain, 98 USDC is forwarded to your wallet
* 2 USDC stays with PayRequest (platform fee)
The customer also pays a small Base network gas fee (typically under \$0.01).
No hidden costs. The 2% fee is the only PayRequest charge.
Unlike credit cards, there are no monthly minimums, no statement fees, no chargeback fees, and no currency conversion costs.
The 2% fee covers infrastructure, WalletConnect integration, on-chain payment monitoring, and support. This fee only applies to crypto payments — your other payment methods (iDEAL, cards, etc.) are unaffected.
## How Settlement Works
PayRequest currently settles crypto payments in **treasury mode**:
1. The customer sends the full USDC amount to a PayRequest-controlled treasury wallet on Base
2. PayRequest's on-chain monitor watches for the transaction and waits for **2 confirmations**
3. Once confirmed, PayRequest automatically forwards **98% to your connected wallet** and keeps **2%** as the platform fee
4. Both the customer's payment and the forwarding transaction are verifiable by anyone on [Basescan](https://basescan.org)
Your funds pass through a PayRequest-controlled wallet for the brief period between confirmation and forwarding — they are not held in escrow or available for withdrawal by PayRequest beyond the 2% fee. If a forward ever fails (e.g. a network hiccup), it is automatically retried by PayRequest's background monitor.
The USDC contract address on Base is `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`. This is the native USDC issued by Circle on Base — not a bridged or wrapped version.
## Supported Wallet Apps
Any wallet supporting **WalletConnect on the Base network** works. Popular choices:
| Wallet | Platform | Best for |
| - | - | - |
| MetaMask | Mobile + browser | Most popular, wide support |
| Coinbase Wallet | Mobile + browser | Easy USDC purchase via Coinbase |
| Rabby | Mobile + browser | Multi-chain power users |
| Rainbow | Mobile | Clean, beginner-friendly UX |
| Trust Wallet | Mobile | Built-in dApp browser |
| Kraken Wallet | Mobile | Kraken exchange users |
| Blockchain.com DeFi Wallet | Mobile | DeFi-focused users |
See the [full supported wallets guide](/payment-processing/crypto-supported-wallets) for setup instructions and tips.
## Refunds
Cryptocurrency payments are irreversible on-chain. If you need to refund a customer, send USDC directly from your wallet to their address. The customer's wallet address and transaction hash are available in your PayRequest transaction history.
Because crypto payments are final, there are no chargebacks or disputes. This is a key advantage — once a customer pays, the transaction is settled permanently. For customer service issues, handle refunds directly with the customer.
## Frequently Asked Questions
USDC is a **stablecoin** — a cryptocurrency always worth exactly \$1 USD. Unlike Bitcoin or Ethereum, the value doesn't fluctuate. It's issued by Circle and backed by real dollar reserves, making it ideal for invoicing.
Base is a blockchain network built by Coinbase. It's fast (under 1 second confirmation), cheap (gas under \$0.01), and widely supported. PayRequest chose Base for its speed, cost, and wallet ecosystem.
No. You just need a wallet to receive USDC. You don't need to hold or buy any crypto in advance. To convert received USDC to euros, send it to an exchange like Coinbase or Kraken and withdraw to your bank.
Base confirms the customer's transaction in under 1 second, but PayRequest waits for 2 confirmations before forwarding your share to avoid chain reorganizations. In practice, your 98% typically arrives within a couple of minutes of the customer paying.
USDC must be on the **Base network** (native USDC, contract `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`). Not bridged or wrapped versions. Most major wallets support Base out of the box.
Yes. Crypto payments work worldwide — no country restrictions. Anyone with an internet connection and USDC on Base can pay. Especially useful for international customers who don't have access to iDEAL or SEPA.
All transactions are publicly verifiable and cryptographically signed on the Base blockchain. PayRequest never holds your private keys or seed phrase. The 2% fee split is enforced consistently by PayRequest's payment processing code — the same rate applies to every crypto payment.
## Crypto for Subscriptions (Recurring Billing)
Crypto works for **recurring subscriptions** too. When a subscription uses USDC as its payment method, an invoice is generated each billing cycle and the customer pays it from their wallet — 98% is forwarded to your wallet once confirmed, just like one-time payments.
Read the full guide on using USDC for subscription billing — setup, customer experience, and FAQs.
See all subscription payment methods and how to switch between them.
## Next Steps
See all supported wallets and how to get USDC on Base for both you and your customers.
See all payment methods PayRequest supports — crypto, iDEAL, credit cards, and more.
Get a branded link with your wallet address, QR code, and copy button — great for giveaways and tips.
# Supported Crypto Wallets
Source: https://docs.payreque.st/payment-processing/crypto-supported-wallets
Every wallet app that works with PayRequest USDC payments on Base — for merchants receiving payments and customers paying invoices
# Supported Crypto Wallets
PayRequest uses **WalletConnect** to connect wallets on the **Base network**. Any wallet that supports WalletConnect and the Base network will work — for both merchants connecting to receive payments and customers paying invoices.
You need **USDC on Base** to pay, and a **Base-compatible wallet address** to receive. See the sections below for how to get set up with each wallet.
## Wallets at a Glance
| Wallet | iOS | Android | Browser extension | Best for |
| - | - | - | - | - |
| MetaMask | ✅ | ✅ | ✅ Chrome, Firefox, Edge | Most popular, widest support |
| Coinbase Wallet | ✅ | ✅ | ✅ Chrome | Easy USDC purchase via Coinbase |
| Rabby | ✅ | ✅ | ✅ Chrome | Multi-chain power users |
| Rainbow | ✅ | ✅ | — | Clean beginner-friendly UX |
| Trust Wallet | ✅ | ✅ | ✅ Chrome | Built-in dApp browser |
| Kraken Wallet | ✅ | ✅ | — | Kraken exchange users |
| Blockchain.com DeFi Wallet | ✅ | ✅ | — | DeFi-focused users |
| Any WalletConnect wallet | varies | varies | varies | If it supports Base + WalletConnect |
## Wallet Details
The most widely used crypto wallet. Available as a mobile app and browser extension.
**Getting USDC on Base:**
1. Open MetaMask and switch to the **Base** network (Settings → Networks → Add Base if not listed)
2. Tap **Buy** and select USDC — MetaMask will route you through an available on-ramp
3. Alternatively, bridge USDC from Ethereum mainnet using the [Base Bridge](https://bridge.base.org)
**Connecting to PayRequest:**
* Desktop: install the MetaMask browser extension, then click **Connect Wallet** on the payment page
* Mobile: scan the WalletConnect QR code with the MetaMask app's built-in scanner
[Download MetaMask](https://metamask.io/download/)
Made by Coinbase. The easiest option if you already have a Coinbase account — you can buy USDC directly inside the app and transfer it to Base in one step.
**Getting USDC on Base:**
1. Buy USDC on Coinbase exchange (coinbase.com)
2. In Coinbase Wallet app, tap **Receive** and share your Base address
3. In Coinbase exchange, withdraw USDC to that address — select **Base** as the network
**Connecting to PayRequest:**
* Mobile: scan the WalletConnect QR code with Coinbase Wallet
* Desktop: use the Coinbase Wallet browser extension
[Download Coinbase Wallet](https://www.coinbase.com/wallet/downloads)
A modern multi-chain wallet built by DeBank. Excellent for users managing multiple chains. Shows clear transaction previews before you sign.
**Getting USDC on Base:**
Same as MetaMask — switch to Base network and use the built-in swap or bridge.
**Connecting to PayRequest:**
* Mobile: scan the WalletConnect QR code
* Desktop: use the Rabby browser extension
[Download Rabby](https://rabby.io/)
A mobile-first wallet with a clean, beginner-friendly design. Great if you're new to crypto.
**Getting USDC on Base:**
Rainbow has a built-in swap and bridge. Switch to Base and buy or swap for USDC inside the app.
**Connecting to PayRequest:**
Mobile only — scan the WalletConnect QR code from the Rainbow app.
[Download Rainbow](https://rainbow.me/en/)
A popular mobile wallet with a built-in dApp browser and support for hundreds of chains.
**Getting USDC on Base:**
1. Open Trust Wallet and select the Base network
2. Use the built-in buy feature or receive USDC from another wallet/exchange
**Connecting to PayRequest:**
Scan the WalletConnect QR code from Trust Wallet's scanner or dApp browser.
[Download Trust Wallet](https://trustwallet.com/)
Kraken's self-custody wallet app. Ideal for Kraken exchange users.
**Getting USDC on Base:**
Buy USDC on Kraken exchange, then withdraw to your Kraken Wallet address on Base network.
**Connecting to PayRequest:**
Scan the WalletConnect QR code from the Kraken Wallet app.
[Download Kraken Wallet](https://www.kraken.com/wallet)
The self-custody wallet from Blockchain.com, focused on DeFi users.
**Getting USDC on Base:**
Transfer USDC from Blockchain.com exchange or another wallet to your Base address in the DeFi Wallet.
**Connecting to PayRequest:**
Scan the WalletConnect QR code from the app's WalletConnect scanner.
[Download Blockchain.com DeFi Wallet](https://www.blockchain.com/explorer/assets/usdc)
## For Merchants — Connecting to Receive Payments
To receive USDC from your customers, you connect your wallet once in **Provider Settings**. PayRequest stores your public wallet address and routes all USDC payments there via the on-chain FeeSplitting contract.
From your dashboard, go to **Settings → Providers** and find the **Crypto (USDC)** card.
A WalletConnect modal opens. Scan the QR code with your wallet app or click your wallet's name if you have a browser extension installed.
Your wallet asks you to approve the connection. Tap **Connect** — no gas fee, no transaction.
Sign the verification message in your wallet (free — no gas). This proves you own the address.
Your address appears in Provider Settings with a green **Connected** badge. All future crypto payments go directly to this address (98% of each payment).
**Check your balance anytime.** Once connected, your USDC and ETH balances on Base are shown right in Provider Settings — no need to open your wallet app.
## For Customers — Paying an Invoice
Customers don't need to create an account. They just need a wallet with USDC on Base.
Click the payment link shared by the business. Select **Pay with Crypto** on the checkout page.
A WalletConnect QR code appears. Scan it with your wallet app, or if you have a browser extension, click **Connect** instead.
Your wallet asks you to approve the PayRequest contract to spend USDC on your behalf. This is a one-time step per wallet — you won't need to do it again.
Your wallet shows the exact USDC amount. Confirm the transaction. Base confirms it in under 1 second.
The invoice is marked as paid instantly. You'll see a confirmation on the payment page.
Make sure you have **USDC on the Base network** — not Ethereum mainnet, not Polygon, not Arbitrum. Sending USDC on the wrong network will not be received. Check that Base is selected in your wallet before confirming.
## Getting USDC on Base
If you're new to crypto and need USDC on Base, here are the easiest paths:
Buy USDC on [Coinbase](https://coinbase.com), then withdraw to your wallet address on the **Base** network. Coinbase supports Base natively — no bridge needed.
Buy USDC on [Kraken](https://kraken.com) and withdraw to your Base wallet address. Select "Base" as the withdrawal network.
Already have USDC on Ethereum mainnet? Use the [Base Bridge](https://bridge.base.org) to move it to Base. Bridging takes a few minutes.
Most wallets (MetaMask, Rainbow, Coinbase Wallet) have a built-in swap feature. Switch to the Base network and swap ETH or another token for USDC directly in the app.
## Troubleshooting
This is a known issue on some Android devices where a QR scanner app intercepts the WalletConnect link instead of opening your wallet. **Fix:** long-press the QR code and copy the link, then open it directly in your wallet app's browser or WalletConnect scanner.
WalletConnect deep links are blocked in Chrome on iOS (WKWebView limitation). **Fix:** use **iOS Safari** instead — WalletConnect works correctly there.
Any wallet supporting WalletConnect and Base will work, even if it's not in the list above. Look for a **WalletConnect** or **Scan QR** option in your wallet's settings or dApp browser.
Base transactions require a tiny amount of ETH for gas (typically \$0.001). If you see a "insufficient gas" error, add a small amount of ETH on Base to your wallet. You can buy ETH on Coinbase or Kraken and withdraw to Base.
If you sent USDC on Ethereum mainnet instead of Base, the funds are not lost — they're just on the wrong chain. Use the [Base Bridge](https://bridge.base.org) to move them to Base, or contact the exchange you used to check if they support a network correction.
## Next Steps
How USDC payments work on PayRequest, fees, and the FeeSplitting contract.
See all payment methods available on PayRequest.
Get a branded link with your wallet address, QR code, and copy button — great for giveaways and tips.
# How Long Can a Security Deposit Hold Last?
Source: https://docs.payreque.st/payment-processing/deposit-hold-duration
Authorization-hold expiration windows per payment provider and card network. Plan your capture deadlines for Mollie, PayPal, and Stripe deposits.
## Overview
When you collect a [security deposit](/payment-processing/security-deposits), you place a temporary **authorization hold** on the customer's payment method instead of charging it. That hold is not open-ended — every issuer and network enforces a maximum window after which the bank automatically releases the funds and you can no longer capture them.
The window depends on three things:
1. **Which PSP** authorized the payment (Mollie, PayPal, or Stripe)
2. **Which payment method** the customer used (card brand, Klarna, PayPal, etc.)
3. **Whether your PSP has extended-authorization features enabled** on your account
Once a hold expires, the funds are released by the bank and **cannot be re-captured**. Always capture or release before the deadline shown in your dashboard.
## Quick Reference: Maximum Hold Windows
The table below shows the maximum guaranteed hold window per provider and method as supported by PayRequest. The actual `captureBefore` deadline returned by the PSP is what your dashboard and customer status page show.
| Provider | Method | Default Window | Maximum (with extensions) |
| :- | :- | :- | :- |
| **Mollie** | Mastercard | 30 days | 30 days |
| **Mollie** | Visa | 7 days | 7 days |
| **Mollie** | American Express | 7 days | 7 days |
| **Mollie** | Cartes Bancaires | 30 days | 30 days |
| **Mollie** | Klarna | 28 days | 28 days |
| **Mollie** | Billie | 28 days | 28 days |
| **Mollie** | Riverty | 30 days | 30 days |
| **Mollie** | Vipps | 180 days | 180 days |
| **Mollie** | MobilePay | 14 days | 14 days |
| **Mollie** | PayPal (via Mollie) | 29 days | 29 days |
| **PayPal** (direct) | PayPal balance / card | 3 days guaranteed | 29 days (auto-reauth) |
| **Stripe** | Card (default) | 7 days | 30 days (extended auth) |
PayRequest reads the real `captureBefore` (Mollie), authorization expiry (PayPal), or `capture_before` from the latest charge (Stripe) and surfaces it on the deposit detail page and the customer-facing status page. The countdown is **the deadline the PSP committed to**, not a hardcoded estimate.
## Mollie
Mollie returns a `captureBefore` field on every authorized payment. PayRequest stores this on the deposit and uses it to drive the dashboard countdown and customer status page.
### How the window is determined
Mollie picks the window based on the **card scheme** (or alternative method) the customer paid with:
* **Mastercard / Cartes Bancaires** → 30 days
* **Visa / American Express** → 7 days
* **Klarna / Billie** → 28 days
* **Riverty** → 30 days (always manual capture, full capture only)
* **Vipps** → 180 days
* **MobilePay** → 14 days
Because the card brand is not known until the customer pays, the actual deadline only becomes available after the deposit moves into the `authorized` state. The dashboard shows "Authorizing…" until then.
If your customers mostly use Visa, plan for a **7-day** capture window even if you configured a longer hold duration on the deposit product. The product's "Hold Duration" setting is your internal target; the bank's window is the hard ceiling.
### Hold-duration setting on the product
The deposit product's **Hold Duration** field (1–28 days) sets the maximum number of days PayRequest will keep the deposit in `authorized` state before auto-expiring it on our side. It is **not** an instruction to the bank — the bank enforces its own window based on card brand.
If the product Hold Duration is shorter than the bank's window, PayRequest auto-releases the hold on the configured day. If it is longer, the bank's window wins.
## PayPal
PayPal authorizations work differently from cards. PayPal **guarantees the funds for 3 days** after authorization. From day 4 to day 29, you can call the [reauthorize endpoint](https://developer.paypal.com/docs/api/payments/v2/#authorizations_reauthorize) to extend the honor period for another 3 days. After day 29, the authorization is permanently dead.
### How PayRequest handles this
PayRequest automates the reauthorization flow so you don't have to track 3-day windows yourself:
1. **On authorization**, PayRequest sets `capture_before` to **72 hours from now**.
2. A scheduled job (`deposits:reauthorize-paypal`) wakes up daily and finds any PayPal deposit whose `capture_before` is within the next 24 hours.
3. It calls PayPal's `/reauthorize` endpoint, which returns a **new authorization ID** with a fresh 3-day honor period.
4. The deposit's `capture_before` is pushed forward 72 hours.
5. This repeats until day 29 of the original authorization, at which point reauthorization is no longer possible.
If a reauthorization call fails (e.g., the customer's card on file was cancelled), PayRequest flags the deposit and the hold is no longer guaranteed. Capture as soon as possible.
### Effective window
From your perspective, a PayPal deposit can be held for **up to 29 days** without intervention, just like a Mastercard hold. The 3-day chunking is invisible — the dashboard shows the next `capture_before` deadline as a rolling countdown.
## Stripe
Stripe is the newest deposit provider. By default, Stripe card authorizations expire after **7 days**. Merchants on **Interchange-Plus (IC+) pricing** can enable **extended authorization**, which lifts the ceiling to **up to 30 days** for supported card brands and MCC codes.
### Default: 7 days
For Stripe accounts on **blended (standard) pricing**, the hold expires 7 days after authorization. PayRequest reads the real `capture_before` from the latest charge and surfaces it on the dashboard.
### Extended: up to 30 days
PayRequest creates Stripe Checkout Sessions with `request_extended_authorization=if_available`. When the merchant is on IC+ pricing **and** the card brand + MCC combination is eligible, Stripe automatically extends the hold to up to 30 days. The actual deadline depends on the brand:
* **Mastercard** — typically 30 days
* **Visa** — typically 7 days (extended-auth eligibility is narrower)
* **American Express** — typically 7 days
The Stripe Provider Settings tab in your dashboard includes a callout explaining how to opt into IC+ pricing — you contact Stripe support directly, because each connected Standard account owns its own pricing relationship.
Stripe deposits **cannot be reauthorized**. Whatever window Stripe set at authorization time is the hard ceiling. Plan your captures accordingly.
### Reading the deadline
After `checkout.session.completed`, PayRequest's Stripe webhook handler reads `capture_before` off the latest charge and writes it to the deposit. The dashboard countdown and customer status page then use that exact timestamp.
## Choosing the right PSP for your use case
| Use case | Best PSP | Why |
| :- | :- | :- |
| **Hotel stay (3–7 nights)** | Any PSP | All providers comfortably cover this window |
| **Weekly car rental (5–10 days)** | Mollie (Mastercard) or PayPal | 29–30 day window on most cards |
| **2–4 week equipment rental** | Mollie (Mastercard / Klarna / Billie) | 28–30 day guaranteed window |
| **Long-term rental (>30 days)** | Mollie + Vipps (NO/SE) | 180-day window for Vipps users |
| **B2B deposits with invoice-style payment** | Mollie (Klarna / Billie / Riverty) | 28–30 day window, no card needed |
| **US/global card-only flows** | Stripe with IC+ | 30-day extended authorization |
| **PayPal-first customers** | PayPal direct | Automatic 3-day → 29-day reauthorization |
## What happens at expiration
When a hold expires before you capture or release it:
1. PayRequest receives the expiration webhook (Mollie) or detects expiry on the next status poll (PayPal/Stripe).
2. The deposit status changes to **Expired** (red badge).
3. The customer's bank releases the funds — typically within 1–3 business days, sometimes up to 7.
4. The deposit detail page disables the **Capture** action. Only history remains visible.
Once expired, you cannot recover the deposit. If you still need to charge the customer (for damages or a service rendered), you'll have to invoice them separately and ask them to pay through normal means.
## Setting a sensible Hold Duration on your product
The **Hold Duration** field on a deposit product (1–28 days) is PayRequest's internal expiry timer. It's useful for ensuring you don't hold customer funds longer than needed, but it doesn't override the bank's window.
Recommended values:
* **Short stays (1–3 nights)**: 5–7 days
* **Weekly rentals**: 10–14 days
* **Monthly rentals**: 28 days (the maximum)
* **Equipment rental**: rental period + 2–3 buffer days
Always add a small buffer beyond the expected service-end date so you have time to inspect before capturing.
## Frequently Asked Questions
The bank's hold window is the hard ceiling. If your customer paid with a Visa card via Mollie or via Stripe on blended pricing, the bank only guarantees the hold for 7 days regardless of what you configured on the product. The product's Hold Duration is PayRequest's internal target, not an instruction to the bank.
Only for PayPal — and PayRequest does this automatically (every 3 days up to day 29). Mollie and Stripe do not support extending an existing authorization. For those, you'd need to release the existing hold and create a new deposit.
You need to be on Interchange-Plus (IC+) pricing with Stripe. Contact Stripe support from your connected Stripe account to request a pricing migration. PayRequest is already sending `request_extended_authorization=if_available` on every Checkout Session, so the extension activates automatically once your account is eligible.
Yes. The branded customer status page shows a progress bar with the remaining hold time and turns red when 2 days or less remain. The customer also sees the start date, expected end date, and the current status.
PayRequest logs the failure and flags the deposit. The hold is no longer guaranteed at that point — the bank may release the funds early. You'll want to capture immediately if you still need the funds, or contact the customer to set up a new deposit.
Mollie's `captureBefore`, PayPal's honor period, and Stripe's `capture_before` are the deadlines the PSP commits to. They're surfaced verbatim in PayRequest. The underlying bank may, in rare cases, release a hold earlier (for example if the customer disputes it). These windows are best treated as deadlines, not minimums.
## Related Documentation
Full guide to setting up and managing security deposits
Set up Stripe as a deposit provider
Set up PayPal as a deposit provider
Configure Mollie, PayPal, and Stripe
# Supported Digital Wallets
Source: https://docs.payreque.st/payment-processing/digital-wallets
Accept payments from 26+ digital wallets and P2P platforms worldwide — from Wise and Revolut in Europe to GCash in the Philippines, UPI in India, and Pix in Brazil.
# Supported Digital Wallets
PayRequest lets you accept payments from **26+ digital wallets and P2P payment platforms** across 6 continents. Add your handle once in Settings — customers see the button on your payment page and transfer via their own app.
Global P2P wallets, regional apps, and instant transfer networks
Europe, Americas, Asia, Africa — wherever your customers are
Customer pays you directly — no PayRequest transaction fees apply
Add your handles under **Settings → Payment Providers → Other Ways to Pay**. Only platforms you've configured appear on your payment page. Customers pay in their app, then click **I have paid** to confirm.
***
## 🌍 Europe & Global
The most popular P2P and instant payment apps used by European and international customers.
**Payment link**
Europe's fastest-growing digital bank. Enter your Revolut username — PayRequest builds the `revolut.me/` link automatically.
**Payment link**
Cross-border transfers in 40+ currencies. Enter your Wise username — PayRequest generates the `wise.com/pay/me/` link.
**Payment link with amount**
Dutch digital bank popular across Europe. The link includes the exact invoice amount — customers pay with one tap.
**Display only**
Global e-wallet used by digital and creative professionals. Enter your Paxum email — shown to the customer as text.
**Display only**
Worldwide digital wallet with prepaid cards. Enter your Skrill email — shown to the customer as text.
**Display only**
IBAN / SWIFT / routing number. Enter account holder, bank name, IBAN, and BIC. Shown as structured text to the customer.
***
## 🇺🇸 United States
The three dominant P2P apps used by US consumers.
**Payment link with amount**
Square's P2P wallet, popular with 50M+ US users. Enter your `$cashtag` — the link includes the invoice amount.
**Payment link**
PayPal's social payments app. Enter your Venmo username — PayRequest builds the `venmo.com/` link.
**Display only**
Bank-to-bank instant transfers embedded in most US banking apps. Enter your email or phone number.
***
## 🌎 Latin America
Regional instant payment systems used across South and Central America.
**Display only**
Latin America's largest fintech, spanning Argentina, Brazil, Mexico, Colombia and more. Enter your alias, phone, or CVU.
**Display only**
Brazil's instant payment system, created by the Central Bank of Brazil — used by 140M+ people. Enter your CPF, email, phone, or random key.
**Display only**
Mexico's interbank electronic transfer network. Enter your CLABE (18-digit bank key).
**Display only**
Venezuela's mobile payment system linked to bank accounts. Enter bank · phone number · cédula (national ID).
***
## 🇮🇳 South Asia
India's unified instant payment infrastructure.
**Payment link with amount**
India's government-built real-time payment rails used by 300M+ people daily via PhonePe, Google Pay, Paytm, and all bank apps. Enter your UPI ID (e.g. `name@upi`) — PayRequest generates a `upi://pay` deep link with the exact amount pre-filled, opening the customer's preferred UPI app directly.
***
## 🌏 Southeast & East Asia
The most widely used digital wallets across Asia's fastest-growing markets.
**Display only**
Ant Group's super-app wallet with 1B+ users in China and across Asia. Enter your Alipay account or phone number.
**Display only**
Tencent's payment layer inside WeChat — ubiquitous in China. Enter your WeChat ID.
**Display only**
South Korea's leading mobile wallet, integrated into KakaoTalk (95%+ Korean smartphone users). Enter your KakaoTalk ID.
**Display only**
The Philippines' #1 e-wallet with 90M+ registered users. Enter your registered GCash phone number.
**Display only**
Singapore's interbank real-time transfer system. Enter your phone number, NRIC, or UEN (business registration).
**Display only**
Thailand's national instant payment network, managed by the Bank of Thailand. Enter your phone number or national ID.
**Display only**
Vietnam's largest e-wallet with 31M+ users. Enter your registered MoMo phone number.
**Display only (crypto equivalent)**
P2P crypto transfers via Binance. Enter your numeric Binance Pay ID. PayRequest shows the USDT-equivalent amount to the customer and captures the Order ID for easy reconciliation.
***
## 🌍 Africa
Mobile money networks that power financial access across sub-Saharan Africa.
**Display only**
Safaricom's pioneering mobile money platform, the dominant payment method across Kenya, Tanzania, Ethiopia, and 7 other African markets. Enter your M-Pesa phone number (+254 7XX XXX XXX).
***
## 🇪🇺 European Regional
Country-specific instant payment apps deeply embedded in local banking ecosystems.
**Display only**
ABN AMRO's payment request app, used by 7M+ Dutch consumers to split bills and pay each other. Enter your Dutch mobile number.
**Display only**
Spain's bank-backed instant mobile payment system, supported by all major Spanish banks with 24M+ users. Enter your Spanish phone number.
***
## 🇨🇦 Canada
**Display only**
Canada's bank-to-bank payment network available through virtually every Canadian bank app. 99% of Canadians with a bank account can send and receive Interac transfers. Enter your email address or phone number.
***
## ₿ Crypto Wallets
Beyond P2P platforms, PayRequest also supports on-chain crypto payments with automatic settlement.
**Automatic settlement**
Accept USDC stablecoin on Coinbase's Base L2 network. Near-zero fees, 2-second finality. Customers pay from any Base-compatible wallet (Coinbase Wallet, MetaMask, Rainbow, etc.).
**Automatic settlement**
Accept USDC on Solana via Solana Pay QR codes. Sub-cent fees, instant finality. Works with Phantom, Solflare, Backpack, and all Solana wallets.
Crypto payments settle automatically on-chain — no "I have paid" confirmation needed. See [Crypto Payments](/payment-processing/crypto-payments) for setup.
***
## How the payment flow works
Go to **Settings → Payment Providers → Other Ways to Pay**. Enter your username, phone number, or account ID for each platform you want to offer.
On your payment page, every active wallet appears as a button. The customer picks the one they use.
For link-type wallets (Revolut, Wise, Cash App, bunq.me, UPI), a deep link opens the customer's app with amount pre-filled. For display-only wallets, they see your handle and transfer manually.
After transferring, the customer confirms on your payment page. You receive a notification and verify receipt in your wallet app.
PayRequest cannot automatically verify transfers for P2P wallets. Always check your app before delivering goods or services. For zero-manual-work reconciliation, use [Bank Transfer with Ponto](/payment-processing/bank-transfer) or [Crypto Payments](/payment-processing/crypto-payments) instead.
***
## Link types at a glance
| Type | How it works | Platforms |
| - | - | - |
| **Payment link with amount** | Button opens the wallet app with amount pre-filled | bunq.me, Cash App, UPI |
| **Payment link** | Button opens the wallet app with your profile | Wise, Revolut, Venmo |
| **Display only** | Handle shown as text — customer opens their own app | All others |
***
Step-by-step guide to configuring your wallet handles and toggling them on your payment page.
Accept USDC on Base or Solana with fully automatic on-chain settlement.
Accept bank transfers with automatic Ponto reconciliation — no manual confirmation.
See all payment methods including cards, iDEAL, SEPA, and more.
# Handling Chargebacks
Source: https://docs.payreque.st/payment-processing/handling-chargebacks
Understanding and managing SEPA chargebacks in PayRequest
# Handling Chargebacks
A chargeback (terugboeking) occurs when a customer reverses a payment, typically for SEPA Direct Debit transactions. PayRequest provides comprehensive tools to track, understand, and manage chargebacks effectively.
## Accessing Chargebacks
Navigate to **Payment Processing > Chargebacks** to view all chargebacks in your account. PayRequest automatically syncs chargebacks from Mollie every 4 hours in the background.
## Chargeback Detail Page
Click on any chargeback to view detailed information:
### Customer Information
* **Customer card** with avatar and contact details
* Direct link to customer profile
* View complete customer history
### Subscription & Transaction Links
PayRequest intelligently links chargebacks to their related:
* **Subscription** - Shows the product, status, and recurring amount
* **Transaction** - Payment details including date, method, and description
* **Invoice** - If applicable
### Chargeback Details
* **Amount** - The charged-back amount
* **Created Date** - When the chargeback was initiated
* **Reversed Date** - If the chargeback was later reversed
* **Settlement Amount** - Only shown if different from the chargeback amount
## Invoice Chargeback Status
When a chargeback is received, the linked invoice is automatically updated:
* Invoice status changes from **Paid** to **Chargeback** (shown as a red badge)
* The chargeback amount, date, and reason are stored on the invoice
The chargeback status is protected — webhooks and payment syncs will never overwrite it back to "Paid". This ensures your records accurately reflect the reversed payment.
### Chargeback Details on Invoice Page
When viewing an invoice with chargeback status, a **Chargeback Details** card appears in the sidebar showing:
* **Chargeback amount** — The reversed amount
* **Date** — When the chargeback was initiated
* **Reason code** — The SEPA reason code with description (e.g., MD06 - Return of funds requested by end customer)
* **Chargeback ID** — The Mollie chargeback reference
If the invoice is linked to a subscription, the card also shows the **Payment Retry Status**:
* **Failed attempts** — Current failures vs maximum allowed (e.g., "1 / 2")
* **Last failure date** — When the most recent failure occurred
* **Next retry** — When the next automatic retry is scheduled (if applicable)
* **Retry history** — Complete timeline of all retry attempts with amounts and reasons
* **Direct link** to the associated subscription for further management
You can see chargeback and retry information directly on the invoice page without navigating to the subscription. This gives you a complete picture of the payment issue at a glance.
## SEPA Reason Codes
PayRequest displays color-coded reason codes to help you quickly understand why a chargeback occurred:
### Critical Issues (Red/Rose)
* **AC01** - IBAN incorrect or unknown
* **MD01** - Invalid mandate (expired, missing, or incorrect type)
### Account Issues (Orange/Amber)
* **AC04** - Account closed
* **AC06** - Direct debit not allowed on this account
### Transaction Issues (Yellow)
* **AG02** - Transaction information incorrect (wrong payment type or mandate reference)
### Insufficient Funds (Lime)
* **AM04** - Insufficient funds in customer's account
### Customer Actions (Purple/Blue)
* **MD06** - Customer reversed the payment (possible within 8 weeks)
* **MS02** - Customer declined before processing
### Special Cases
* **MD07** - Customer deceased (Zinc)
* **MS03** - Multiple possible reasons (Cyan)
* **SL01** - Bank refused (daily limit or blocked account) (Indigo)
### Retryable vs Non-Retryable Reason Codes
| Retryable | Non-Retryable |
| - | - |
| AM04 (Insufficient Funds) | MD06 (Customer Reversed) |
| MS03 (Not Specified) | MS02 (Customer Declined) |
| | AC04 (Account Closed) |
| | MD07 (Customer Deceased) |
| | AG01 (Transaction Forbidden) |
Retryable chargebacks automatically schedule payment retries on the linked subscription. Non-retryable chargebacks mark the subscription as **Payment Failed** immediately.
## What to Do When You Receive a Chargeback
1. **Check the Reason Code** - Understand why the chargeback occurred
2. **Review the Invoice** - Open the invoice to see chargeback details and retry status in one place
3. **Contact Your Customer** - For codes like MD06, MS02, or MS03, reach out to understand the issue
4. **Update Payment Details** - For AC01, AC04, or AC06, request new bank account information
5. **Fix Technical Issues** - For AG02, review your payment type settings
6. **Retry if Appropriate** - For AM04, you may retry after confirming funds are available
## Prevention Tips
### Mandate Management
* Ensure mandates are created before charging customers
* Keep track of mandate expiration (36 months)
* Always use unique mandate references
### Clear Communication
* Inform customers about upcoming charges
* Use clear payment descriptions
* Maintain up-to-date customer contact information
### Payment Timing
* Don't charge immediately after mandate creation
* Allow time for first payments (FRST) before recurring (RCUR)
### Account Verification
* Validate IBANs before creating mandates
* Confirm account status with customers
* Update banking details when customers notify you
## Automatic Syncing
PayRequest automatically syncs chargeback data from Mollie:
* **Frequency**: Every 4 hours
* **Scope**: Last 90 days of transactions
* **Background**: No manual refresh needed
All chargeback information is kept up-to-date automatically, ensuring you always have the latest status and details.
## Related Resources
* [Failed Payment Handling](/subscriptions/failed-payment-handling)
* [Payment Methods Overview](/payment-processing/payment-methods-overview)
* [Setting Up Payment Providers](/payment-processing/setting-up-payment-providers)
* [Customer Management](/customer-management)
* [Subscriptions](/subscriptions)
## Need Help?
If you're experiencing frequent chargebacks or need assistance understanding a specific case, our support team is here to help. Contact us with your chargeback ID for personalized assistance.
# Other Ways to Pay
Source: https://docs.payreque.st/payment-processing/other-ways-to-pay
Let customers pay you via Wise, Revolut, Cash App, Venmo, GCash, WeChat Pay, Mercado Pago, and 20+ more platforms — they confirm payment manually after transferring.
# Other Ways to Pay
PayRequest lets you display your personal handles for **26 peer-to-peer and regional payment platforms** directly on your payment page. Customers pay you outside PayRequest, then click **I have paid** to confirm. No card processor required.
Configure your handles under **Settings → Payment Providers → Other Ways to Pay**. Only platforms you've saved with a handle appear on your customer-facing payment page.
## How It Works
Go to **Settings → Payment Providers → Other Ways to Pay**. Find the platform, enter your username, phone number, or account identifier, and click **Save**.
Use the green toggle next to each saved platform to show or hide it on your payment page without deleting the handle.
On your payment page the customer sees a button for each active platform. They tap it, transfer the amount in their own app, then return and click **I have paid**.
You receive a notification and can verify the transfer in your platform's app before marking the invoice as paid on your end.
PayRequest cannot automatically verify "I have paid" confirmations for these platforms. Always check your platform app or bank before delivering goods or services.
## Smart Handle Correction
PayRequest automatically cleans up common input mistakes when you save a handle, so your payment links always work correctly.
| Platform | Auto-corrected |
| - | - |
| **Wise** | Strips leading `@` and full URL prefix |
| **Revolut** | Strips leading `@` and full URL prefix |
| **Venmo** | Strips leading `@` and full URL prefix |
| **bunq.me** | Strips full URL prefix and leading `/` |
| **Cash App** | Strips `$` and full URL prefix |
| **Binance Pay** | Digits only — non-numeric characters removed |
For example, pasting `https://wise.com/pay/me/johndoe` or `@johndoe` both save as `johndoe` and generate the correct `https://wise.com/pay/me/johndoe` link.
***
## Supported Platforms
### 🌍 Global & European
| Platform | Type | What to enter |
| - | - | - |
| **Wise** | Payment link | Your Wise username (e.g. `johndoe`) |
| **Revolut** | Payment link | Your Revolut username |
| **bunq.me** | Payment link (with amount) | Your bunq.me name |
| **Paxum** | Display only | Your Paxum email address |
| **Skrill** | Display only | Your Skrill email address |
| **Bank Transfer** | Display only | Account holder, IBAN, BIC/SWIFT |
### 🇺🇸 United States
| Platform | Type | What to enter |
| - | - | - |
| **Cash App** | Payment link | Your `$cashtag` (without the `$`) |
| **Venmo** | Payment link | Your Venmo username |
| **Zelle** | Display only | Your email or phone number |
### 🌎 Latin America
| Platform | Flag | What to enter |
| - | - | - |
| **Mercado Pago** | 🌎 | Your alias, phone number, or CVU |
| **Pix** | 🇧🇷 | CPF, email, phone, or random key |
| **SPEI** | 🇲🇽 | Your CLABE (18 digits) |
| **Pago Móvil** | 🇻🇪 | Bank · phone · cédula |
### 🇮🇳 South Asia
| Platform | Flag | What to enter |
| - | - | - |
| **UPI** | 🇮🇳 | Your UPI ID (e.g. `name@upi`) |
### 🌏 Southeast & East Asia
| Platform | Flag | What to enter |
| - | - | - |
| **GCash** | 🇵🇭 | Your registered phone number |
| **PayNow** | 🇸🇬 | Phone number, NRIC, or UEN |
| **PromptPay** | 🇹🇭 | Phone number or national ID |
| **KakaoPay** | 🇰🇷 | Your KakaoTalk ID |
| **MoMo** | 🇻🇳 | Your registered phone number |
| **WeChat Pay** | 🇨🇳 | Your WeChat ID |
| **Alipay** | 🇨🇳 | Your Alipay account or phone |
| **Binance Pay** | — | Your Binance Pay ID (numbers only) |
### 🌍 Africa & Middle East
| Platform | Flag | What to enter |
| - | - | - |
| **M-Pesa** | 🇰🇪 | Your M-Pesa phone number |
### 🇪🇺 European Regional
| Platform | Flag | What to enter |
| - | - | - |
| **Tikkie** | 🇳🇱 | Your Dutch phone number |
| **Bizum** | 🇪🇸 | Your Spanish phone number |
### 🇨🇦 Canada
| Platform | Flag | What to enter |
| - | - | - |
| **Interac e-Transfer** | 🇨🇦 | Your email or phone number |
***
## Platform Link Types
Platforms fall into three categories based on how the customer-facing button behaves:
| Type | What happens | Platforms |
| - | - | - |
| **Payment link (static)** | Button opens a fixed URL with your handle | Wise, Revolut, Venmo, UPI |
| **Payment link (with amount)** | Button opens a URL that includes the invoice amount | bunq.me, Cash App, UPI |
| **Display only** | Handle is shown as text — customer opens their own app | All others |
***
## Frequently Asked Questions
No. PayRequest displays the "I have paid" button and records the customer's confirmation, but cannot check whether the transfer actually happened. Always verify in your platform app before fulfilling orders.
Yes. Enable as many platforms as you like. All active platforms appear as buttons on your payment page, so customers can choose whichever they use.
Since the transfer happens in an external app, you'll see the actual amount when you check your platform. If there's a discrepancy, follow up with the customer directly before confirming payment.
Yes. Use the green toggle next to each platform. Toggling it off hides the platform from your payment page but keeps the handle saved so you can re-enable it anytime.
Binance Pay IDs are always numeric. The input field is restricted to digits only, and any non-numeric characters are automatically stripped when you save.
Yes. PayRequest strips the URL prefix automatically. Whether you enter `johndoe`, `@johndoe`, or `https://wise.com/pay/me/johndoe`, the saved handle is always `johndoe` and the generated link is correct.
## Next Steps
Accept bank transfers with automatic matching via Ponto — no manual confirmation needed.
Accept USDC on Base or Solana with automatic on-chain settlement.
See all payment methods available in PayRequest.
Send a single payment link that works across all your active payment methods.
# P2P Wallet Payments
Source: https://docs.payreque.st/payment-processing/p2p-wallet-payments
Send USDC directly between PayRequest users — prominent pay card on every payrequest.me page. No checkout, no fees, instant on-chain settlement.
# P2P Wallet Payments
Anyone with a Solana wallet can **send USDC directly to a PayRequest user** right from their `payrequest.me` page — no invoice, no checkout form, no platform fee. One amount field, one button, money sent.
P2P payments appear automatically on your `payrequest.me` page when you have a **Solana wallet connected** in Provider Settings. No extra setup required.
## What Makes It Different
The P2P section is the first thing visitors see — a prominent card with your avatar, a big amount field, and a single "Send" button. Standard payment methods appear below.
100% of the USDC goes to your wallet. No PayRequest cut, no processing charge of any kind.
Solana confirms in under a second. The USDC is in your wallet before the sender closes their phone.
Senders who have a PayRequest account can click **Log in →** to pre-fill their name, email, and wallet — one tap to pay, just like PayPal's quick checkout.
## How to Enable P2P Payments
You only need to connect your Solana wallet once.
In your PayRequest dashboard, open **Settings → Provider Settings**.
Scroll to the **Solana Wallet (P2P)** card and click **Connect Solana Wallet**. Approve the connection in your wallet extension. Your address is saved to your account.
Your `payrequest.me` page now shows the P2P hero section to every visitor. No further configuration needed.
## How Senders Use It
When someone visits your `payrequest.me/{handle}` page, the P2P card is the first thing they see — above the standard payment form.
The sender types an amount directly in the large amount field on the P2P card. A note field below it is optional.
They click **Connect wallet to pay**. Their wallet (Phantom, Solflare, Coinbase Wallet, MetaMask, etc.) connects in one click. Once connected, the button updates to show exactly what will happen: **Send €25.00 → \[Your Name]**.
One more click opens their wallet with the pre-filled transfer to approve. The USDC leaves their wallet and arrives in yours — on-chain, permanent, instant.
Senders need a tiny amount of SOL in their wallet (less than \$0.01 worth) to pay the Solana network fee. USDC alone isn't enough — they need SOL for gas.
## Pay Faster with a PayRequest Account
Senders who have their own PayRequest account can skip entering their name and email entirely.
A small **Pay faster with your PayRequest account** bar appears at the top of the page. Clicking **Log in →** opens a small popup to payrequest.app.
If already logged in, the popup closes in under a second. If not, a quick login form appears. After login, the popup closes automatically.
The payment page updates: the name and email fields fill in, and a **● Paying as \[Name]** badge replaces the login button. If the sender has a Solana wallet connected to their PayRequest account, their wallet address is shown immediately — no manual connect needed before they enter an amount.
This works like PayPal's express checkout. The popup is hosted on payrequest.app, so no credentials are ever shared with the page owner. Senders can click **Not you?** at any time to clear their identity.
## Supported Sender Wallets
| Wallet | Platforms | Notes |
| - | - | - |
| **Phantom** | Chrome, Firefox, Brave, Edge, iOS, Android | Most popular Solana wallet. Recommended for first-time users. |
| **Solflare** | Chrome, Firefox, Brave, Edge, iOS, Android | Full-featured with hardware wallet support. |
| **Coinbase Wallet** | Chrome, iOS, Android | Supports both Solana and EVM. Use the Solana network. |
| **Trust Wallet** | Chrome, iOS, Android | Multi-chain. Ensure Solana is selected. |
| **Backpack** | Chrome, iOS, Android | xNFT wallet with native Solana support. |
| **MetaMask** | Chrome, Firefox, Brave, Edge, iOS, Android | Supported via native Solana (recent versions) or via Solana Snap. |
| **Any Wallet Standard wallet** | Varies | Any wallet implementing the [Solana Wallet Standard](https://github.com/wallet-standard/wallet-standard) is detected automatically. |
**MetaMask and Solana:** Newer MetaMask versions support Solana natively via Wallet Standard. You can also install the **Solflare Snap** from inside MetaMask (Snaps → Search "Solflare") to add full Solana support in one click.
Senders must have **USDC on the Solana network** — not USDC on Ethereum or Base. These are different tokens despite sharing the same name. Solana USDC can be obtained on any major exchange (Coinbase, Kraken, Binance) or bridged via [Wormhole](https://wormhole.com).
## Viewing Your Received Transfers
All completed P2P transfers are recorded in your **Wallet Dashboard**:
1. Go to **Wallet** in the sidebar
2. Scroll to the **P2P Transfers** section
3. Each entry shows the sender's wallet address (shortened), the amount, the note if one was left, and a **Solscan** link to the on-chain transaction
Transfers you received show in green with a down-arrow icon. Transfers you've sent show in grey with an up-arrow.
## P2P vs. Standard Payments
| | P2P Wallet Payment | Standard Payment |
| - | - | - |
| **Requires name/email** | No (optional via PayRequest login) | Yes |
| **Creates an invoice** | No | Yes |
| **Platform fee** | None | Varies by method |
| **Settlement** | Instant (on-chain) | 1–3 days (bank) |
| **Refundable** | No (blockchain final) | Yes (via PayRequest) |
| **Appears in** | Wallet Dashboard | Transactions page |
| **Best for** | Tips, quick sends, peer payments | Invoiced work, products |
P2P transfers are **irreversible** — like cash. Once a sender confirms in their wallet, the USDC is gone. If someone sends the wrong amount or to the wrong page, you'll need to return the funds manually from your own wallet.
## Frequently Asked Questions
Phantom, Solflare, Coinbase Wallet, Trust Wallet, Backpack, MetaMask (native Solana or Solana Snap), and any wallet implementing the Solana Wallet Standard. See the full table above.
No. Anyone with a compatible Solana wallet can send a P2P payment. The **Log in → Pay faster** feature is optional — it just pre-fills their details if they happen to have a PayRequest account.
No. P2P payments are separate from the standard Solana checkout (which routes through the pump.fun system). Connecting your Solana wallet in Provider Settings is all that's needed for P2P.
If no compatible wallet is detected, the sender is directed to Phantom.app to download one. Phantom is free on all major browsers and mobile platforms.
Yes — newer MetaMask versions support Solana natively via Wallet Standard. Alternatively, install the **Solflare Snap** from inside MetaMask (Snaps → Search "Solflare") for full Solana support in one click.
The minimum is **0.01 USDC**. There's no hard maximum, but very large amounts are subject to Solana network rules.
Directly in the P2P card at the top of the page — it has its own large amount field. The standard payment form below it is separate.
Not yet — if your Solana wallet is connected, the P2P card appears automatically. Disconnect your Solana wallet in **Provider Settings → Solana Wallet (P2P)** to remove it. This only affects P2P; your Base USDC wallet (if connected separately) is unaffected.
P2P transfers are tracked in the Wallet Dashboard under P2P Transfers, separately from your main transaction history. They don't count toward subscription or invoice revenue analytics.
No. Your **Solana wallet** (for P2P) and your **Base wallet** (for USDC on Base payments) are stored separately in Provider Settings. Connecting one doesn't affect the other.
## Next Steps
Set up your Solana wallet in Provider Settings to enable P2P payments on your page.
Give your page a Solana or Crypto Native visual theme to match your Web3 brand.
Accept USDC payments through the full checkout flow with invoice tracking.
See which wallets work for Base USDC payments and how to connect them.
# Payment Pages
Source: https://docs.payreque.st/payment-processing/payment-forms
Create flexible, branded payment pages for collecting payments, donations, and custom amounts with ease
# Payment Pages 💰
PayRequest Payment Pages are powerful, customizable payment collection tools that enable you to receive payments for any purpose without requiring customers to browse your shop. Perfect for invoicing, donations, service fees, deposits, or any custom payment scenario.
**Flexible Payment Collection**: Payment Pages work independently of your product catalog, allowing customers to pay custom amounts or predefined fees with a clean, professional interface.
## 🎯 What are Payment Pages?
Payment Pages are standalone payment collection forms that you can customize and share with customers:
**Flexible Collection**
* Custom amount entry
* Predefined payment amounts
* Minimum and maximum limits
* Optional customer information
* Multiple payment methods
**Simple Distribution**
* Clean, branded URLs (payrequest.me/yourhandle)
* QR codes for in-person payments
* Email integration
* Social media sharing
* Website embedding
**Brand Integration**
* Custom page titles and descriptions
* Your business branding
* Personalized success messages
* Responsive mobile design
* Professional appearance
**Complete Analytics**
* Real-time payment monitoring
* Customer information capture
* Payment history and reporting
* Revenue tracking
* Export capabilities
## 🚀 Payment Page Features
### Flexible Amount Configuration
**Customer-Defined Amounts:**
* Allow customers to enter any amount
* Set minimum payment thresholds (e.g., €0.01+)
* Configure maximum payment limits
* Default amount suggestions
* Real-time validation and formatting
**Use Cases:**
* Donations and fundraising
* Service fees and consultations
* Invoice payments
* Tip collection
* Flexible billing scenarios
**Fixed Payment Options:**
* Set specific payment amounts
* Multiple amount choices
* Quick-select buttons
* Subscription-style pricing
* Package deal options
**Applications:**
* Membership fees
* Event tickets
* Standard service charges
* Product deposits
* License fees
**Smart Controls:**
* Minimum amount enforcement (€0.01 minimum)
* Maximum payment limits
* Currency formatting (EUR default)
* Real-time validation feedback
* Error prevention and guidance
**Business Protection:**
* Prevent micro-payments
* Set reasonable payment limits
* Ensure payment viability
* Reduce processing issues
* Maintain profit margins
### Customer Information Collection
**Optional Customer Data:**
* Customer name (optional/required)
* Email address for receipts
* Order notes and descriptions
* Custom reference information
* Contact details when needed
**Smart Defaults:**
* Auto-fill for logged-in users
* Magic link authentication
* Minimal required information
* Progressive data collection
* GDPR-compliant handling
**Login Options:**
* "Login to auto-fill" feature
* Magic link authentication
* Guest payment capability
* Account creation optional
* Streamlined user experience
**Benefits:**
* Faster checkout for returning customers
* Automatic information population
* Payment history tracking
* Customer portal access
* Relationship building
### Multi-Language Support
**Sell internationally without extra setup**: every Payment Page (`payrequest.me/yourhandle`) automatically shows in your customer's own language — no translation work required on your end.
English 🇬🇧, Dutch 🇳🇱, German 🇩🇪, French 🇫🇷, Spanish 🇪🇸, Italian 🇮🇹, Portuguese 🇵🇹, Polish 🇵🇱, Swedish 🇸🇪, Danish 🇩🇰, Norwegian 🇳🇴, Finnish 🇫🇮, Greek 🇬🇷, Czech 🇨🇿, Romanian 🇷🇴, Hungarian 🇭🇺, Turkish 🇹🇷, Russian 🇷🇺, Chinese 🇨🇳, Japanese 🇯🇵, and Ukrainian 🇺🇦.
Core checkout fields and labels — name, email, address, order notes, totals, payment method, and more — are translated for every language above, so customers always understand what they're filling in and paying.
**Language is chosen automatically, in this order:**
1. A saved language preference for returning/logged-in customers
2. Their browser's language setting
3. Their country (detected via IP), for visitors whose browser language isn't one of the 21 supported
**Manual override:**
* A language switcher (flag icon) in the top-right corner of every Payment Page lets customers pick a different language at any time
* Business owners can also share a direct link with a fixed language, e.g. `payrequest.me/yourhandle?lang=it`
### Payment Method Integration
**Optimized for EU Markets:**
* iDEAL (Netherlands)
* Bancontact (Belgium)
* SEPA Direct Debit
* Credit/Debit Cards
* Bank transfers
**Global Payment Support:**
* Visa and Mastercard
* American Express
* PayPal integration
* Apple Pay and Google Pay
* Local payment methods
**Intelligent Defaults:**
* Geographic payment preferences
* Amount-based recommendations
* Customer history integration
* Mobile-optimized selection
* One-click payment options
## 🛠️ Setting Up Your Payment Page
### Configuration Process
Navigate to **Payment Pages** in your PayRequest dashboard or go directly to `/paymentpage`
**Essential Configuration:**
* **Custom Handle**: Create a memorable URL (e.g., `payrequest.me/yourhandle`)
* **Page Title**: Professional heading (e.g., "Pay YourBusiness")
* **Description**: Clear payment instructions
* **Amount Settings**: Default, minimum, and maximum amounts
**Advanced Settings:**
* Enable/disable custom amount entry
* Require customer descriptions
* Set success messages
* Configure redirect URLs
* Enable dynamic field controls
**Go Live Process:**
* Test with small amounts
* Verify payment processing
* Check email notifications
* Confirm mobile experience
* Activate for public use
### Configuration Options
**Core Configuration:**
**Custom Handle:**
* Create memorable URLs (letters, numbers, hyphens only)
* Example: `payrequest.me/consultation` or `payrequest.me/donate`
* Auto-converts to lowercase
* Must be unique across PayRequest
* Falls back to business name if not set
**Page Content:**
* **Title**: Main heading (e.g., "Pay for Services")
* **Description**: Instructions or context for payment
* **Success Message**: Custom thank-you message after payment
* All text supports your brand voice and tone
**Payment Amount Controls:**
**Default Amount:**
* Pre-fill amount field with suggested value
* Customers can modify if custom amounts enabled
* Useful for standard fees or donations
* Leave blank for completely open amounts
**Amount Limits:**
* **Minimum**: Prevent micro-payments (default €0.01)
* **Maximum**: Set upper payment limits
* **Custom Amounts**: Allow/disable customer amount entry
* Real-time validation and error messages
**Amount Display:**
* Euro (EUR) currency formatting
* Automatic decimal handling
* Clear visual feedback
* Mobile-friendly input
**Customer Experience Controls:**
**Information Requirements:**
* **Name**: Optional or required customer name
* **Email**: For receipt delivery
* **Description**: Allow customers to add payment notes
* **Readonly Fields**: Lock specific form elements
**Advanced Options:**
* **Require Description**: Force customers to add payment context
* **Dynamic Field Control**: Enable/disable field modifications
* **Guest Payments**: Allow payments without account creation
* **Auto-fill Integration**: Support logged-in user data
## 🎨 Customization and Branding
### Visual Customization
**Professional Appearance:**
* Your business logo display
* Consistent color scheme
* Custom domain support
* Professional typography
* Mobile-responsive design
**Mobile-First Design:**
* Touch-friendly interface
* Responsive layouts
* Fast loading times
* Thumb-friendly buttons
* Optimized form fields
### Content Personalization
**Branded Communication:**
* Welcome messages and instructions
* Payment confirmation text
* Success page content
* Error message customization
* Email receipt branding
**Tone and Voice:**
* Professional service language
* Friendly donation appeals
* Clear payment instructions
* Reassuring security messages
* Brand-consistent communication
**Professional URLs:**
* Custom handles for memorable links
* Business name integration
* Service-specific naming
* Campaign-focused URLs
* Easy sharing and marketing
**Examples:**
* `payrequest.me/consultation`
* `payrequest.me/donate`
* `payrequest.me/membership`
* `payrequest.me/invoice`
* `payrequest.me/deposit`
## 👤 Customer Login & Account Area
Customers can log in and manage their own account **directly from your payment page** — no separate shop portal required.
This is a lighter-weight account area built into the payment page itself, separate from the full [Customer Portal](/customer-management/customer-portal) available under your shop URL. Both share the same customer session, but the payment page account area is scoped to a few essential self-service tabs.
### Passwordless Magic Link Login
Customers log in with just their email — no password to remember or reset:
From your payment page, the customer clicks the account menu and enters their email address.
PayRequest emails a one-time login link. If no customer record exists yet for that email, one is created automatically.
Clicking the link logs them in and starts a session — no password required.
### Account Tabs
Once logged in, customers can switch between tabs using the `?tab=` parameter (e.g. `?tab=settings`):
| Tab | What Customers Can Do |
| - | - |
| **Settings** | Manage notification preferences (invoice created/paid/reminder, subscription renewal/status, order confirmation) |
| **Contacts** | Add up to 10 contact persons from their organization, each with a role and their own notification preferences |
| **Payment Methods** | View and revoke saved SEPA mandates |
| **Subscriptions** | View their active subscriptions (read-only) |
| **Support** | Submit a support request directly to your business, which notifies you by email |
Every account action is scoped to the correct business — a customer logged in on one business's payment page can never see or modify data belonging to another business, even though the underlying `customer` session key is shared site-wide.
## 📊 Payment Page Analytics
### Performance Tracking
**Transaction Analytics:**
* Total payments received
* Revenue generated
* Average payment amount
* Payment success rates
* Method preferences
**User Behavior:**
* Visitor conversion rates
* Customer information completion
* Return visitor tracking
* Geographic distribution
* Device usage patterns
**Performance Optimization:**
* Form completion rates
* Payment method effectiveness
* Mobile vs desktop usage
* Time-to-payment analysis
* Error and abandonment tracking
### Recent Payment History
View payments as they happen with instant dashboard updates
Track customer details, payment amounts, and transaction status
Analyze which payment methods customers prefer
Download payment data for accounting and analysis
## 🌟 Use Cases and Applications
### Business Applications
**Service-Based Businesses:**
* Consultation fees and hourly billing
* Project deposits and milestones
* Retainer payments
* Invoice settlements
* Expense reimbursements
**Configuration Example:**
* Handle: `consultation`
* Title: "Professional Consultation Payment"
* Description: "Pay for your consultation session"
* Default Amount: €150.00
* Allow Custom: Yes (for variable session lengths)
**Non-Profit and Fundraising:**
* Charity donations
* Crowdfunding campaigns
* Event sponsorships
* Membership contributions
* Emergency fundraising
**Configuration Example:**
* Handle: `donate`
* Title: "Support Our Cause"
* Description: "Your donation makes a difference"
* Minimum Amount: €5.00
* Allow Custom: Yes
* Success Message: "Thank you for your generous support!"
**Event and Membership Management:**
* Event ticket sales
* Membership fee collection
* Workshop registrations
* Conference payments
* Annual dues collection
**Configuration Example:**
* Handle: `membership`
* Title: "Annual Membership Payment"
* Description: "Join our community for exclusive benefits"
* Default Amount: €99.00
* Allow Custom: No
* Require Description: Yes (for member information)
**Property and Rental Payments:**
* Security deposits
* Rental payments
* Booking fees
* Damage deposits
* Utility payments
**Configuration Example:**
* Handle: `deposit`
* Title: "Security Deposit Payment"
* Description: "Required deposit for rental agreement"
* Default Amount: €500.00
* Allow Custom: No
* Maximum Amount: €2000.00
### Integration Scenarios
**Email Marketing:**
* Newsletter payment links
* Invoice payment buttons
* Campaign-specific URLs
* Automated follow-ups
* Receipt customization
**Web Integration:**
* Direct website links
* Payment page embedding
* QR code generation
* Social media sharing
* SEO-friendly URLs
## 🔒 Security and Compliance
### Payment Security
**Industry Standards:**
* PCI DSS Level 1 certification
* Secure card processing
* Encrypted data transmission
* Tokenized payment storage
* Regular security audits
**Privacy Safeguards:**
* GDPR compliance
* Data minimization
* Secure data storage
* Customer consent management
* Right to deletion
**Risk Management:**
* Real-time fraud detection
* Velocity checks
* Geographic validation
* Device fingerprinting
* Risk scoring algorithms
### Compliance Features
**Data Protection:**
* Minimal data collection
* Clear consent mechanisms
* Data portability options
* Deletion requests handling
* Privacy policy integration
* Cookie consent management
**Payment Card Security:**
* Secure cardholder data handling
* Strong access controls
* Regular security monitoring
* Vulnerability management
* Secure network architecture
* Information security policies
## 📱 Mobile Experience
### Mobile-First Design
Automatically adapts to all screen sizes with touch-friendly interfaces
Optimized for mobile networks with compressed assets and smart caching
Large buttons, easy form fields, and thumb-friendly navigation
Support for Apple Pay, Google Pay, and mobile wallet integration
### Mobile Features
**App-Like Experience:**
* Add to home screen
* Offline functionality
* Push notifications
* Fast loading
* Native feel
**Contactless Payments:**
* QR code generation
* In-person payment collection
* Event check-in integration
* Contactless donations
* Physical location payments
## 🔧 Advanced Configuration
### API Integration
**Real-Time Events:**
* Payment completion notifications
* Failed payment alerts
* Customer information updates
* Refund processing events
* Custom business logic triggers
**Webhook Payloads:**
* Complete payment details
* Customer information
* Payment method used
* Transaction metadata
* Timestamp and reference data
**Programmatic Control:**
* Payment page creation via API
* Dynamic amount configuration
* Customer pre-filling
* Payment status monitoring
* Bulk payment processing
**Use Cases:**
* CRM integration
* Automated billing systems
* Custom payment workflows
* Multi-tenant applications
* White-label solutions
### Business Intelligence
Connect Google Analytics and other tracking tools for comprehensive insights
A/B test different page configurations to maximize conversion rates
Understand how customers find and complete payments on your pages
Track which marketing channels drive the most valuable payments
## 📞 Support and Resources
**Implementation Help**
* Payment page configuration
* Custom integration support
* Best practices guidance
* Optimization recommendations
**Complete Resources**
* API documentation
* Integration guides
* Code examples
* Troubleshooting help
**Continuous Help**
* Technical support
* Feature requests
* Performance optimization
* Business consultation
## 🎓 Next Steps
Understand all available payment methods and optimization strategies
Enable contactless payments with QR codes for in-person collection
Track payment page performance and optimize conversion rates
Manage customers who pay through your payment pages
***
**Pro Tip**: Start with a simple payment page configuration and gradually add advanced features based on customer feedback and usage analytics. Monitor conversion rates to optimize your page settings for maximum payment completion.
# Payment Methods Overview
Source: https://docs.payreque.st/payment-processing/payment-methods-overview
Comprehensive guide to all payment methods available in PayRequest, including European and international options
# Payment Methods Overview 💳
PayRequest supports a comprehensive range of payment methods to accommodate customers worldwide. From European-focused solutions like iDEAL and SEPA Direct Debit to international options like credit cards and digital wallets, we've got you covered.
**Multi-Provider Support**: PayRequest integrates with multiple payment providers, giving you flexibility and redundancy for your payment processing needs.
## 🌍 Payment Method Categories
PayRequest organizes payment methods into logical categories to help you choose the best options for your customers:
**Regional Specialists**
* iDEAL (Netherlands)
* Bancontact (Belgium)
* SEPA Direct Debit (EU-wide)
* Sofort (Germany)
* Giropay (Germany)
**Global Solutions**
* Credit/Debit Cards (Visa, Mastercard, Amex)
* PayPal
* Revolut Pay
* Apple Pay
* Google Pay
* Bank Transfers
## 💳 Credit and Debit Cards
The most universally accepted payment method, perfect for international customers.
### Supported Card Types
**Visa**
* Global acceptance
* Debit and credit variants
* 3D Secure authentication
* Instant payment processing
**Mastercard**
* Worldwide recognition
* SecureCode protection
* Corporate card support
* Real-time fraud detection
**American Express**
* Premium card network
* Enhanced security features
* Corporate travel cards
* Higher interchange fees
**Maestro**
* European debit card standard
* PIN-based authentication
* Lower processing fees
* Bank account direct debit
**V PAY**
* Visa's European debit solution
* Chip and PIN security
* EMV compliance
* Cost-effective for merchants
### Card Processing Features
* 3D Secure authentication
* PCI DSS compliance
* Fraud detection algorithms
* Tokenization support
* One-click checkout
* Saved payment methods
* Mobile-optimized flow
* Guest checkout options
* Real-time processing
* Automatic retries
* Chargeback protection
* Detailed reporting
## 🏦 European Bank Payment Methods
Optimized for European customers with local banking preferences and lower processing costs.
### iDEAL (Netherlands)
**Market Dominance**: Used by 60%+ of Dutch online shoppers
**Bank Coverage**: All major Dutch banks supported
**Security**: Bank-level authentication and authorization
**Customer Experience**: Direct bank-to-bank transfer with instant confirmation
**How it Works:**
1. Customer selects iDEAL at checkout
2. Chooses their bank from a list
3. Redirected to secure bank environment
4. Authenticates using bank credentials
5. Confirms payment amount and details
6. Returns to merchant with payment confirmation
**Business Benefits:**
* Lower transaction fees than cards
* Guaranteed payment (no chargebacks)
* Instant payment confirmation
* High customer trust and adoption
* No setup fees or monthly costs
**Transaction Fees**: Typically €0.29 per transaction
**No Percentage Fee**: Fixed cost regardless of amount
**No Setup Costs**: Free to activate through PayRequest
**Volume Discounts**: Available for high-transaction merchants
**Cost Comparison Example:**
* €100 payment via iDEAL: €0.29 fee (0.29%)
* €100 payment via credit card: €2.50+ fee (2.5%+)
* €1000 payment via iDEAL: €0.29 fee (0.029%)
### Bancontact (Belgium)
**Market Share**: 70%+ of Belgian online payments
**Bank Integration**: All Belgian banks participate
**Mobile App**: Bancontact by Payconiq for mobile payments
**QR Code Support**: In-store and online QR payments
**Customer Flow:**
1. Select Bancontact at checkout
2. Enter card number or use mobile app
3. Authenticate with card reader or mobile PIN
4. Confirm payment in banking environment
5. Instant payment confirmation
**Advantages:**
* Trusted by Belgian consumers
* Lower costs than international cards
* Instant payment processing
* Mobile-first innovation
* Fraud protection through bank security
### SEPA Direct Debit
**Coverage**: All 36 SEPA countries (EU + EEA + others)
**Use Cases**: Perfect for subscriptions and recurring billing
**Mandate System**: Customer authorization for automatic payments
**Settlement**: T+1 settlement (next business day)
**SEPA Direct Debit Process:**
1. Customer provides mandate authorization
2. Merchant collects signed mandate
3. First payment processed with advance notice
4. Subsequent payments automatically debited
5. Customer retains refund rights (8 weeks)
**Business Benefits:**
* Lowest cost payment method in Europe
* Automatic recurring billing
* High success rates
* Predictable cash flow
* Reduced payment friction for customers
**Requirements:**
* Valid SEPA mandate from customer
* 14-day advance notice for first payment
* 5-day notice for subsequent payments
* Creditor identifier (provided by PayRequest)
**Digital Mandates**: Electronic signature collection
**Mandate Storage**: Secure, compliant mandate archiving
**Customer Communication**: Automated mandate notifications
**Compliance**: Full SEPA regulation adherence
**Mandate Types:**
* **One-off**: Single payment authorization
* **Recurring**: Multiple payment authorization
* **Business-to-Business**: B2B specific mandates with shorter refund periods
**PayRequest Automation:**
* Automatic mandate creation during checkout
* Digital signature collection
* Mandate status tracking and management
* Automatic pre-notification emails
* Failed payment retry logic
## 🌐 International Payment Methods
Reach customers worldwide with globally recognized payment solutions.
### Digital Wallets
**Global Reach**: 400+ million active users
**Buyer Protection**: Built-in fraud protection
**Express Checkout**: Skip form filling
**Currency Support**: 25+ currencies
**Mobile Optimized**: App and mobile web
**iOS Integration**: Native iPhone/iPad payments
**Touch/Face ID**: Biometric authentication
**Privacy Focused**: No card details shared
**Instant Payments**: One-touch checkout
**In-App Support**: Mobile app integration
**Android Native**: Built into Android devices
**Chrome Integration**: Browser-based payments
**Contactless**: NFC payment support
**Security**: Tokenized transactions
**Global Availability**: 40+ countries
**Windows Integration**: Native Windows 10/11
**Edge Browser**: Seamless web payments
**Xbox Support**: Gaming platform integration
**Enterprise Focus**: B2B payment solutions
**Security**: Enterprise-grade protection
### Bank Transfers
**Zero Fee Payments**: Accept bank transfers with no PayRequest transaction fees
**Automatic Matching**: Ponto integration matches incoming payments automatically
**Unique References**: Each payment gets a unique reference code (PAY-12345)
**Instant Recognition**: Payments matched within minutes of arriving in your bank
**How It Works:**
1. Customer selects Bank Transfer at checkout
2. Customer sees your IBAN and unique reference code
3. Customer transfers exact amount via their bank
4. Ponto syncs your bank transactions automatically
5. PayRequest matches the reference and marks invoice as paid
**Requirements:**
* Ponto bank connection (Settings → Ponto)
* Business bank account with Ponto-supported bank
* Bank Transfer payment method enabled
**Use Cases:**
* High-value B2B transactions
* Cost-conscious customers (0% fees)
* Customers preferring bank-direct payments
* Markets with strong bank transfer culture (Netherlands, Belgium, Germany)
**PayRequest Features:**
* Automatic bank details display with copy buttons
* Unique payment reference generation
* Automatic payment matching via Ponto
* Real-time bank transaction syncing
* No manual reconciliation needed
[Learn more about Bank Transfer Payments →](/payment-processing/bank-transfer)
**SWIFT Network**: International bank transfers for global payments
**Manual Process**: Customer-initiated transfers without automatic matching
**Settlement Time**: 3-5 business days for international transfers
**Use Cases:**
* International customers outside SEPA zone
* High-value cross-border transactions
* Customers without access to other payment methods
## 🚀 Emerging Payment Methods
Stay ahead with next-generation payment technologies.
### Buy Now, Pay Later (BNPL)
**Pay Later**: 30-day payment terms
**Installments**: Split payments over time
**No Interest**: 0% financing options
**Consumer Protection**: Purchase guarantees
**Mobile App**: Customer account management
**4 Installments**: Split into equal payments
**No Interest**: Fee-free for on-time payments
**Instant Approval**: Real-time credit decisions
**Consumer Friendly**: Transparent fee structure
**Merchant Protection**: Payment guarantee
### Cryptocurrency
PayRequest supports **USDC stablecoin payments** on Base (Coinbase's L2) and Solana — automatic on-chain settlement, near-zero fees, no "I have paid" confirmation required.
Coinbase's Base L2 — 2-second finality, MetaMask / Coinbase Wallet
Solana Pay QR codes — sub-cent fees, Phantom / Backpack
### 26+ Digital Wallets & P2P Platforms
Accept payments from regional wallets worldwide — Revolut, Wise, Cash App, GCash, UPI, Pix, M-Pesa, WeChat Pay, and 18 more. Customers pay in their own app and confirm with "I have paid."
Europe · Americas · South Asia · SE & East Asia · Africa · Canada
## 📊 Payment Method Comparison
Choose the right payment methods for your business model:
| Payment Method | Transaction Fee | Percentage Fee | Best For |
| - | - | - | - |
| iDEAL | €0.29 | 0% | Dutch customers, any amount |
| Bancontact | €0.35 | 0% | Belgian customers |
| SEPA Direct Debit | €0.15 | 0% | Recurring payments, EU |
| Credit Cards | €0.25 | 2.9% | International customers |
| PayPal | €0.35 | 2.9% | Global reach, buyer protection |
| Bank Transfer | €0.00 | 0% | High-value, B2B payments |
**European Focus:**
* iDEAL: Netherlands (essential)
* Bancontact: Belgium (essential)
* SEPA: All EU countries
* Sofort: Germany, Austria, Switzerland
**Global Coverage:**
* Credit Cards: Worldwide
* PayPal: 200+ countries
* Apple Pay: 70+ countries
* Google Pay: 40+ countries
**Emerging Markets:**
* Local payment methods vary by country
* Research local preferences
* Consider regulatory requirements
**Instant Settlement:**
* Credit cards (authorization)
* Digital wallets
* Real-time bank transfers
**Next Day Settlement:**
* iDEAL, Bancontact
* SEPA Direct Debit
* Most local payment methods
**Delayed Settlement:**
* International bank transfers (3-5 days)
* Some BNPL providers (30+ days)
* Cryptocurrency (varies)
## 🎯 Choosing the Right Payment Methods
### For European Businesses
Enable iDEAL for Netherlands, Bancontact for Belgium, and SEPA for EU-wide coverage
Support Visa and Mastercard for international customers and tourists
Add PayPal and Apple Pay for mobile-first customers
Set up SEPA Direct Debit for recurring billing and subscription models
### For Global Businesses
Enable all major card networks (Visa, Mastercard, Amex)
Support PayPal, Apple Pay, and Google Pay for broader reach
Research and add local payment methods for your target markets
Consider BNPL and bank transfers for specific customer segments
## 🔧 Payment Method Configuration
Configure payment methods through your PayRequest dashboard:
**Navigation**: Settings → Payment Providers → \[Select Provider]
**Configuration Steps:**
1. Connect your payment provider account
2. Enable desired payment methods
3. Configure method-specific settings
4. Test payment flows
5. Monitor performance and adjust
**Testing Requirements:**
* Process test transactions
* Verify webhook delivery
* Test mobile payment flows
* Validate error handling
* Confirm settlement processes
**Key Metrics:**
* Payment success rates by method
* Average transaction values
* Customer preference trends
* Geographic usage patterns
* Cost analysis and optimization
**PayRequest Analytics:**
* Real-time payment method performance
* Customer payment preference insights
* Revenue attribution by payment type
* Failed payment analysis
* Conversion rate optimization data
## 🚨 Security and Compliance
All payment methods in PayRequest maintain the highest security standards:
* PCI DSS Level 1 certification
* Secure card data handling
* Tokenization for stored data
* Regular security audits
* Real-time fraud detection
* Machine learning algorithms
* Risk scoring systems
* Merchant protection programs
* GDPR compliance
* Data encryption in transit
* Secure data storage
* Privacy by design
## 📞 Need Help with Payment Methods?
Get help configuring payment methods for your specific business needs
Direct support for payment provider integration and troubleshooting
Analyze and optimize your payment method mix for better conversion
## 🎓 Next Steps
Connect Mollie, Stripe, PayPal, Payoneer, or Revolut Pay to start accepting payments
Build custom payment forms for specific use cases and campaigns
Enable contactless payments with QR codes for in-person transactions
Learn to manage and prevent payment disputes effectively
***
**Pro Tip**: Start with 2-3 payment methods that match your customer base, then gradually add more based on customer requests and geographic expansion. Monitor performance metrics to optimize your payment method mix for maximum conversion and minimum costs.
# Payment Page Dynamic Links
Source: https://docs.payreque.st/payment-processing/payment-page-dynamic-links
Create powerful pre-filled payment links with dynamic parameters for seamless customer experiences
## Overview
Payment Page Dynamic Links allow you to create customized payment URLs with pre-filled information, making it easier for your customers to complete payments. These links can include customer details, product information, amounts, and even custom fields - all automatically populated when your customer clicks the link.
Dynamic links are perfect for email campaigns, invoices, customer portals, and any situation where you want to streamline the payment process.
## Base URL Structure
Your payment page is accessible via a clean, branded URL:
```
https://payrequest.me/{your-handle}
```
**Example:**
```
https://payrequest.me/acme-corp
```
You can customize your handle in Settings → Payment Page. If you haven't set a handle, your business name is used by default.
## Crypto Wallet Address Links
Besides query-parameter links to your main payment page, PayRequest also generates dedicated **path-based links** for sharing a connected crypto wallet address directly — useful for X/social giveaways, tip jars, or quick one-off requests.
```
https://payrequest.me/{your-handle}/sol
https://payrequest.me/{your-handle}/btc
https://payrequest.me/{your-handle}/eth
https://payrequest.me/{your-handle}/10usd/sol
```
These pages use the same branding (avatar, tagline, social links, accent color) as your main payment page, but show a QR code and a copy-to-clipboard address field instead of a payment form. See [Share Your Crypto Address](/payment-processing/share-wallet-address) for the full guide.
## Language Support
### Language Switcher (Interactive)
All payment pages now include a **language switcher dropdown** in the top-right corner, allowing customers to switch between languages with a single click.
**Features:**
* **21 languages available**: English 🇬🇧, Nederlands 🇳🇱, Deutsch 🇩🇪, Français 🇫🇷, Español 🇪🇸, Italiano 🇮🇹, Português 🇵🇹, Polski 🇵🇱, Svenska 🇸🇪, Dansk 🇩🇰, Norsk 🇳🇴, Suomi 🇫🇮, Ελληνικά 🇬🇷, Čeština 🇨🇿, Română 🇷🇴, Magyar 🇭🇺, Türkçe 🇹🇷, Русский 🇷🇺, 中文 🇨🇳, 日本語 🇯🇵, and Українська 🇺🇦
* Flag emoji indicators for easy recognition
* Preserves all URL parameters when switching (invoice numbers, product IDs, etc.)
* Automatically updates all text, buttons, and labels
**What customers see:**
* Fixed position button showing the current language flag
* Dropdown menu listing all 21 language options
* Instant language switching without losing payment context
The language switcher is especially useful for international businesses or when customers share payment links with others who prefer a different language.
### Language URL Parameter
You can also set the language via URL parameter using any of the 21 supported language codes:
| Parameter | Language | Example |
| - | - | - |
| `?lang=en` | English (default) | `https://payrequest.me/acme-corp?lang=en` |
| `?lang=nl` | Dutch | `https://payrequest.me/acme-corp?lang=nl` |
| `?lang=de` | German | `https://payrequest.me/acme-corp?lang=de` |
| `?lang=fr` | French | `https://payrequest.me/acme-corp?lang=fr` |
| `?lang=es` | Spanish | `https://payrequest.me/acme-corp?lang=es` |
Any of the 21 supported codes work the same way: `en`, `nl`, `de`, `fr`, `es`, `it`, `pt`, `pl`, `sv`, `da`, `no`, `fi`, `el`, `cs`, `ro`, `hu`, `tr`, `ru`, `zh`, `ja`, `uk`.
**Example:**
```
https://payrequest.me/acme-corp?invoice=1505&lang=nl
```
All payment page text, buttons, and labels will automatically translate based on the selected language. The language switcher dropdown will reflect the currently selected language and allow customers to change it if needed.
## Query Parameter Format (Recommended)
The query parameter format provides maximum flexibility and readability.
**Basic Structure:**
```
https://payrequest.me/{handle}?parameter=value¶meter2=value2
```
### Supported Parameters
| Parameter | Type | Description | Example |
| - | - | - | - |
| `product` | integer | Product ID to display | `?product=1814` |
| `amount` | decimal | Payment amount (EUR) | `?amount=25.50` |
| `method` | string | Pre-select payment method | `?method=ideal` |
| `name` | string | Customer name | `?name=John%20Doe` |
| `email` | string | Customer email | `?email=john@example.com` |
| `address` | string | Street address | `?address=Main%20Street%20123` |
| `city` | string | City name | `?city=Amsterdam` |
| `postal` | string | Postal/ZIP code | `?postal=1012AB` |
| `notes` | string | Payment notes | `?notes=Monthly%20subscription` |
| `lang` | string | Language (21 supported codes) | `?lang=nl` |
| `customfield_*` | string | Custom field value | `?customfield_size=large` |
| `disabled` | boolean | Lock custom fields (read-only) | `?disabled=true` |
When a `product` parameter is provided, the amount is automatically set to the product price (including setup fees and custom field markups) and cannot be changed by the customer.
## Common Use Cases
### 1. Product Payment Link
Direct customers to pay for a specific product:
```
https://payrequest.me/acme-corp?product=1814
```
**What happens:**
* Product details are displayed (name, description, image)
* Price is automatically set (including setup fees if applicable)
* Amount field is hidden (customer cannot change price)
* Recurring badge shown for subscription products
### 2. Pre-filled Customer Details
Send personalized payment links with customer information already filled in:
```
https://payrequest.me/acme-corp?product=1814&name=John%20Doe&email=john@example.com
```
**Benefits:**
* Faster checkout experience
* Reduced data entry errors
* Professional customer experience
Enable "Readonly dynamic fields" in Settings → Payment Page to prevent customers from editing pre-filled information.
### 3. Complete Payment Request
Create a fully pre-configured payment link:
```
https://payrequest.me/acme-corp?product=1814&name=John%20Doe&email=john@example.com&address=Main%20Street%20123&city=Amsterdam&postal=1097CR&lang=nl
```
**Includes:**
* Product information
* Customer details
* Address information
* Language preference (Dutch)
### 4. Custom Amount Payment
For flexible payment amounts without a specific product:
```
https://payrequest.me/acme-corp?amount=150.00&name=John%20Doe&email=john@example.com&method=ideal
```
**Use cases:**
* Donation requests
* Partial payments
* Flexible invoicing
* Service deposits
### 5. Custom Fields Integration
Pass additional information using custom fields:
```
https://payrequest.me/acme-corp?product=1814&customfield_productcode=PROD-2024&customfield_size=large&customfield_color=blue
```
**Custom field format:**
* Prefix: `customfield_`
* Field name: Any alphanumeric name
* Example: `customfield_reference`, `customfield_order_number`
**Display:**
Custom fields appear in the "Additional Information" section on the payment page and are stored with the order.
### 6. Per-Unit Pricing with Number Fields
For products with quantity-based pricing (like rental days or seats):
```
https://payrequest.me/acme-corp?product=1880&customfield_days=5&disabled=true
```
**How per-unit pricing works:**
1. Your product has a number field with "per unit markup" configured (e.g., €16/day)
2. Pass the quantity via URL: `customfield_days=5`
3. Total markup is calculated automatically: 5 × €16 = €80
**Price breakdown displayed:**
* Base product price: €100.00
* Days (5 × €16.00): +€80.00
* **Total: €180.00**
Add `&disabled=true` to lock the custom field values, preventing customers from changing quantities you've pre-set.
### 7. Locked Custom Fields
Pre-fill custom fields and prevent customers from changing them:
```
https://payrequest.me/acme-corp?product=1880&customfield_days=3&disabled=true
```
**Use cases:**
* Quotes with specific quantities
* Pre-configured packages
* Invoices with fixed specifications
**What happens:**
* Custom field inputs are grayed out
* Values are visible but cannot be changed
* Price is calculated based on pre-filled values
## Setup Fees Display
When linking to a product with a setup fee:
```
https://payrequest.me/acme-corp?product=1814
```
**Automatic display:**
* Product price: €34.50/month
* Setup fee: €100.00 (with custom name like "Borg" or "Installation")
* **Total Today:** €134.50
Setup fees are automatically included in the payment amount. The customer pays both the recurring price and setup fee in the first payment.
## Recurring Products & Mandates
For subscription products with recurring payments:
```
https://payrequest.me/acme-corp?product=1859
```
**Automatic behavior:**
1. Payment page shows "Recurring" badge
2. Customer pays first installment + setup fee
3. SEPA mandate is automatically created during payment
4. Future payments process automatically using the mandate
5. Subscription becomes active after successful mandate creation
This only works with payment methods that support mandates (iDEAL, SEPA Direct Debit, credit card).
## Payment Recovery
When a payment is interrupted (cancelled, failed, or browser closed), customers can return to complete their payment without losing their selections.
### How It Works
1. Customer fills in custom fields and starts payment
2. Payment is interrupted (any reason)
3. Customer receives link: `https://payrequest.me/yourhandle?invoice=1234`
4. **All custom field values are restored** from the original order
5. Customer can complete payment immediately
**Retained Information:**
* All custom field selections (dropdowns, numbers, toggles)
* Per-unit quantities and calculated markups
* Customer name and email
This only works when returning via the invoice link (`?invoice=`). If customers visit the product page directly, they'll need to re-enter their selections.
### Cancelled Invoices
If you've cancelled an invoice, customers will see a clear message and cannot make a payment:
* Red warning: "This invoice has been cancelled"
* Invoice items displayed with strikethrough
* Payment form is hidden
This prevents confusion and accidental payments on orders you've already cancelled.
## Read-Only Fields
Control whether customers can edit pre-filled information:
**Setting Location:** Settings → Payment Page → Options → "Readonly dynamic fields"
**When enabled:**
* Pre-filled fields are locked (grayed out)
* Customer cannot modify name, email, or other pre-filled data
* Ideal for personalized payment requests
**Example with read-only enabled:**
```
https://payrequest.me/acme-corp?product=1814&name=John%20Doe&email=john@example.com
```
→ Name and email fields are visible but cannot be changed
## Payment Page Settings
Configure payment page behavior in Settings → Payment Page:
### Display Options
| Setting | Description | Impact on Links |
| - | - | - |
| **Show customer login** | Display login prompt | Customers can log in to auto-fill their saved details |
| **Show order notes** | Display notes field | Customers can add custom notes to payments |
| **Readonly dynamic fields** | Lock pre-filled fields | URL parameters cannot be edited by customer |
| **Page active** | Enable/disable payment page | All payment page links return 404 when disabled |
### Amount Constraints
* **Minimum amount:** Enforce minimum payment value
* **Maximum amount:** Set upper limit for payments
* **Allow custom amount:** Let customers enter their own amount
When using `?product=` links, amount constraints are ignored as the product price is fixed.
## Advanced Integration Examples
### Email Campaign Links
Create personalized payment links for email campaigns:
```html theme={null}
Pay Now
```
### CRM Integration
Generate dynamic links from your CRM:
```javascript theme={null}
const paymentLink = `https://payrequest.me/yourhandle?` +
`product=${productId}` +
`&name=${encodeURIComponent(customer.name)}` +
`&email=${encodeURIComponent(customer.email)}` +
`&customfield_reference=${orderId}` +
`&lang=${customer.language}`;
```
### Invoice Links
Add direct payment links to your invoices:
```
https://payrequest.me/yourhandle?amount={{invoice_total}}&name={{customer_name}}&email={{customer_email}}¬es=Invoice%20{{invoice_number}}
```
## URL Encoding
Always encode special characters in URLs:
| Character | Encoded | Example |
| - | - | - |
| Space | `%20` | `John Doe` → `John%20Doe` |
| @ | `%40` | `user@example.com` → `user%40example.com` |
| & | `%26` | `Smith & Co` → `Smith%20%26%20Co` |
| # | `%23` | `Apt #5` → `Apt%20%23%5` |
Most programming languages have built-in URL encoding functions (`encodeURIComponent` in JavaScript, `urlencode` in PHP, `urllib.parse.quote` in Python).
## Security & Best Practices
### ✅ Do's
* **URL encode all parameters** to prevent formatting issues
* **Use HTTPS** for secure payment page access
* **Enable read-only fields** for personalized payment requests
* **Test links** before sending to customers
* **Use product links** for fixed-price items
* **Add language parameter** for international customers
### ❌ Don'ts
* **Don't include sensitive data** like passwords or credit card numbers
* **Don't rely on URL parameters for security** (use proper authentication instead)
* **Don't exceed URL length limits** (keep under 2000 characters)
* **Don't hardcode customer data** without proper consent
## Troubleshooting
### Link doesn't work
**Check:**
1. Payment page is active (Settings → Payment Page)
2. Product ID exists and belongs to your account
3. URL parameters are properly encoded
4. Handle is correct (case-sensitive)
### Pre-filled data not showing
**Causes:**
1. Parameter names must be exact (lowercase)
2. Special characters need URL encoding
3. Product parameter overrides amount parameter
### Customer can edit locked fields
**Solution:**
Enable "Readonly dynamic fields" in Settings → Payment Page → Options
### Wrong language displays
**Fix:**
Add `?lang=nl` or `?lang=en` parameter to URL. Default is English.
## Examples Library
### Basic Product Payment
```
https://payrequest.me/yourhandle?product=1814
```
### Dutch Product Payment
```
https://payrequest.me/yourhandle?product=1814&lang=nl
```
### Pre-filled Customer Data
```
https://payrequest.me/yourhandle?product=1814&name=John%20Doe&email=john@example.com
```
### Custom Amount with iDEAL
```
https://payrequest.me/yourhandle?amount=99.50&method=ideal&name=Jane%20Smith&email=jane@example.com
```
### Complete Address Information
```
https://payrequest.me/yourhandle?product=1814&name=John%20Doe&email=john@example.com&address=Main%20Street%20123&city=Amsterdam&postal=1012AB
```
### Subscription with Custom Fields
```
https://payrequest.me/yourhandle?product=1859&name=Business%20Corp&email=billing@business.com&customfield_company_id=BC-2024&lang=nl
```
### Per-Unit Pricing (Rental Days)
```
https://payrequest.me/yourhandle?product=1880&customfield_days=3&disabled=true
```
### Locked Custom Fields Quote
```
https://payrequest.me/yourhandle?product=1880&customfield_size=large&customfield_quantity=10&disabled=true&name=Customer%20Name&email=customer@example.com
```
### Payment Recovery Link
```
https://payrequest.me/yourhandle?invoice=2358
```
## Need Help?
Configure accepted payment methods
Create products with dynamic pricing
Manage recurring subscriptions
Add custom fields to products
Branded wallet address links with QR code and copy button
# QR Code Payments
Source: https://docs.payreque.st/payment-processing/qr-code-payments
Accept payments via QR codes on flyers, receipts, table tents, and signage
## Overview
Every Smart Link automatically generates a QR code that customers can scan to make a payment. QR codes are perfect for physical locations, printed materials, and anywhere you want to offer contactless payments.
## How It Works
1. **Create a Smart Link** with a fixed amount or product
2. **Open the smart link detail page** and click **Share**
3. **Download or share the QR code** — it encodes the smart link URL
4. **Customer scans** the QR code with their phone camera
5. **Payment page opens** with the correct amount pre-filled
QR codes are generated automatically for every smart link. No additional setup required.
## Getting Your QR Code
### From Smart Link Detail Page
1. Navigate to **Payment Page** → **Smart Links**
2. Click on any smart link to open the detail page
3. Click the **Share** button
4. The QR code is displayed in the share modal
5. Right-click the QR code to save (200x200px PNG)
### Sharing Options
The share modal provides:
* **QR Code Image** — Right-click to save
* **Copy URL** — Copy the smart link URL to clipboard
## Use Cases
### Restaurant Table Payments
Place QR codes on table tents or menus:
```
Smart Link: Table Payment
Amount: Variable (let customer enter)
Path: pay
QR Code: Printed on table tent
```
### Invoice Supplements
Add QR code to printed invoices for easy mobile payment:
```
Smart Link: Invoice Payment
Amount: €250.00
Path: inv-2025-001
QR Code: Printed on invoice footer
```
### Retail Deposits
Display QR codes at the register for equipment deposits:
```
Smart Link: Equipment Deposit (Security Deposit product)
Amount: €500.00
Path: equipment-deposit
QR Code: Laminated card at service desk
```
### Event Entrance Fees
Print QR codes on tickets or event posters:
```
Smart Link: Workshop Entry
Amount: €35.00
Path: workshop-march
QR Code: Event poster, email invitation
```
## Print Guidelines
**Minimum Size:** 2cm x 2cm (0.8 x 0.8 inches)
**Best Practices:**
* Use high contrast (black QR on white background)
* Leave white space (quiet zone) around the QR code
* Test the printed QR code before distributing
* Include a short text label below the code (e.g., "Scan to pay")
**Recommended Sizes by Use:**
| Format | Suggested Size |
| - | - |
| Business card | 2cm x 2cm |
| Table tent | 4cm x 4cm |
| Flyer / A5 | 5cm x 5cm |
| Poster / A3 | 8cm x 8cm |
| Banner | 10cm+ x 10cm+ |
Always test QR codes after printing. Some printers may distort the code at very small sizes. Test with at least 3 different phone cameras.
## Tracking QR Code Payments
All payments through QR codes are tracked via the Smart Link analytics:
* **Views**: Each QR scan counts as a view
* **Payments**: Completed payments through the link
* **Conversion Rate**: Views vs. payments percentage
* **Revenue**: Total collected through this QR code
This lets you measure the effectiveness of physical QR code placements.
## Need Help?
Full smart link documentation
QR codes for deposit collection
# Saved Payment Methods
Source: https://docs.payreque.st/payment-processing/saved-payment-methods
Enable customers to reuse SEPA Direct Debit mandates for faster invoice payments
## Overview
Saved Payment Methods allow your customers to pay invoices quickly using previously authorized SEPA Direct Debit mandates. Instead of creating a new payment method each time, customers can select from their existing mandates, making repeat payments faster and more convenient.
This feature is perfect for recurring customers, subscriptions, and businesses that send frequent invoices to the same clients. It reduces friction and increases payment success rates.
## How It Works
### For Customers
1. **First Payment**: Customer pays an invoice via SEPA Direct Debit
2. **Mandate Created**: Mollie automatically creates and stores a mandate
3. **Future Payments**: Customer sees "Saved Payment Methods" option on invoices
4. **Quick Payment**: Select saved mandate → Confirm → Payment processed instantly
### For Business Owners
The system works automatically:
* No configuration required
* Mandates are created during first SEPA payment
* Saved methods appear automatically for returning customers
* Full transaction history and audit trail maintained
Saved payment methods only apply to **SEPA Direct Debit** mandates. Credit card and other payment methods do not support saved credentials in the same way.
## Payment Flow
### Step 1: Customer Receives Invoice
When a customer views an unpaid invoice in their portal, they see two payment options:
* **Pay with New Method**: Standard payment flow with Mollie checkout
* **Pay with Saved Method**: Quick payment using existing mandate
### Step 2: Selecting a Saved Method
If the customer has active SEPA mandates:
1. Click **"Pay with Saved Payment Method"** button
2. Modal appears showing all available mandates
3. Each mandate displays:
* Mandate ID (e.g., `mdt_abc123xyz`)
* Bank account details (masked: `NL**ABNA0123456789`)
* Creation date
* Status (Active/Pending/Expired)
### Step 3: Confirming Payment
1. Customer selects a mandate from the list
2. Clicks **"Confirm Payment"**
3. System creates payment using selected mandate
4. Invoice status updates to "Pending" immediately
5. Payment processes through Mollie
### Step 4: Payment Confirmation
**Successful Payment:**
* Invoice marked as "Paid"
* Transaction recorded in payment history
* Email notification sent (if configured)
* Customer redirected to invoice overview
**Failed Payment:**
* Error message displayed
* Invoice remains "Open" or "Pending"
* Customer can retry with different mandate or new payment method
## Customer Experience
### Customer Portal Interface
**Invoice Detail Page** (`/shop/{handle}/portal/invoices/{id}`):
**Available** (Blue)
* Default state
* Clickable and ready
* Shows "Pay with Saved Payment Method"
**Processing** (Gray)
* Payment in progress
* Button disabled
* Shows "Processing..."
**Completed** (Green)
* Payment succeeded
* Invoice marked as paid
* Button hidden
**Modal Contents:**
* List of active mandates
* Mandate details (ID, bank, date)
* "Cancel" button to close
* "Confirm Payment" button
**Real-time Updates:**
* Loading states during fetch
* Error messages inline
* Success confirmation
### Mobile-Friendly Design
The saved payment method interface is fully responsive:
* Touch-friendly buttons (minimum 44px tap target)
* Modal adapts to screen size
* Clear visual feedback for all actions
* Works on iOS, Android, and desktop browsers
## Mandate Management
### What is a Mandate?
A **SEPA mandate** is an authorization from a customer allowing you to automatically debit their bank account. It's created during the first SEPA Direct Debit payment and can be reused for future payments.
Mandates are regulated by SEPA (Single Euro Payments Area) regulations and must comply with EU banking standards.
### Mandate Statuses
| Status | Description | Can Use for Payment? |
| - | - | - |
| **Valid** | Active and ready to use | ✅ Yes |
| **Pending** | Awaiting bank verification | ❌ No (use after verification) |
| **Expired** | No longer valid | ❌ No |
| **Canceled** | Revoked by customer or business | ❌ No |
### How Mandates Are Created
**Automatic Creation via Mollie:**
1. Customer selects SEPA Direct Debit at checkout
2. Mollie redirects to bank for authorization
3. Customer authorizes direct debit
4. Mollie creates mandate and links to customer
5. Mandate becomes available for future payments
**When are Mandates Created?**
* First SEPA payment for subscription
* SEPA invoice payment
* SEPA order payment in shop
* Manual SEPA setup (via Mollie dashboard)
### Viewing Active Mandates
**For Business Owners:**
Navigate to **Settings** → **Payment Providers** → **Mollie** → **Mandates**
View all mandates including:
* Customer name and email
* Mandate ID
* Bank account (masked)
* Status and creation date
* Linked subscriptions/invoices
**For Customers:**
Mandates appear automatically when viewing unpaid invoices in the customer portal. No separate mandate management page needed.
## Technical Details
### System Architecture
**Key Components:**
* **ShopCustomerInvoiceDetail Component**: Livewire component handling UI and payment processing
* **MollieService**: Handles API communication with Mollie
* **Mandate Loading**: Fetches active mandates via Mollie API
* **Payment Creation**: Creates payments using mandate ID
* **Duplicate Prevention**: Ensures no concurrent payments for same invoice
### Payment Processing Flow
```mermaid theme={null}
sequenceDiagram
Customer->>Portal: Clicks "Pay with Saved Method"
Portal->>MollieService: loadAvailableMandates()
MollieService->>Mollie API: GET /mandates
Mollie API-->>MollieService: Returns active mandates
MollieService-->>Portal: Display mandate list
Customer->>Portal: Selects mandate & confirms
Portal->>MollieService: payWithSavedMethod(mandateId)
MollieService->>Mollie API: POST /payments (with mandateId)
Mollie API-->>MollieService: Payment created
MollieService->>Database: Update invoice status
Database-->>Portal: Payment pending
Portal-->>Customer: Success confirmation
```
### API Integration
PayRequest integrates with Mollie's Customers API to manage mandates:
**Endpoints Used:**
* `GET /v2/customers/{customerId}/mandates` - Fetch customer mandates
* `POST /v2/payments` - Create payment with mandate ID
* `GET /v2/mandates/{mandateId}` - Verify mandate status
**Authentication:**
* OAuth 2.0 access tokens (auto-refreshed)
* API keys stored encrypted in database
* Per-business provider credentials
### Security Features
* Prevents multiple simultaneous payments
* Checks invoice payment status before creating payment
* Validates mandate belongs to customer
* Ensures mandate is active and valid
* Comprehensive error catching
* User-friendly error messages
* Automatic retry suggestions
* Logs all failed attempts
* All payments logged in transactions table
* Activity log tracks payment attempts
* Mandate usage tracked per invoice
* Full transaction history maintained
* Bank account numbers masked in UI
* Mandate IDs encrypted in database
* GDPR-compliant data handling
* Secure communication with Mollie
## Use Cases
### 1. Recurring Service Providers
**Scenario:** Monthly consulting services with variable amounts
**Benefit:**
* Customers pay new invoices with one click
* No need to re-enter bank details each month
* Faster payment processing
* Reduced payment failures
**Example:**
```
Business: Web Development Agency
Customer: SaaS Startup
Invoice: €2,500 for March development work
Payment: Customer uses saved mandate from previous month
Result: Payment processed same day
```
### 2. Subscription Businesses
**Scenario:** Annual subscriptions with add-on purchases
**Benefit:**
* Main subscription uses mandate automatically
* Add-on invoices can reuse same mandate
* Consistent payment method across all charges
* Higher payment success rate
**Example:**
```
Business: SaaS Platform (€20/month)
Customer: Small Business
Invoice: €50 for additional user licenses
Payment: Uses subscription mandate
Result: Instant payment confirmation
```
### 3. Service Businesses with Deposits
**Scenario:** Project-based work with upfront deposits
**Benefit:**
* Initial deposit creates mandate
* Final invoice uses same mandate
* No payment friction at project completion
* Professional client experience
**Example:**
```
Business: Design Studio
Customer: E-commerce Company
Invoice 1: €1,000 deposit (creates mandate)
Invoice 2: €4,000 final payment (uses saved mandate)
Result: Smooth payment experience
```
## Troubleshooting
### Customer Can't See Saved Payment Methods
**Possible Causes:**
1. **No Active Mandates**
* Customer has never paid via SEPA
* Previous mandates expired or canceled
* Mandates belong to different Mollie customer
2. **Wrong Customer Account**
* Customer logged into wrong portal
* Email mismatch between PayRequest and Mollie
* Multiple customer accounts exist
3. **Mollie Connection Issue**
* Mollie provider inactive
* OAuth token expired (auto-refresh failed)
* API credentials invalid
**Solutions:**
1. Log into Mollie dashboard
2. Navigate to Customers
3. Search for customer email
4. Check Mandates tab
5. Verify status is "Valid"
1. Go to Settings → Payment Providers → Mollie
2. Ensure "Sync Customers" is enabled
3. Click "Test Connection" to verify
4. Check customer record in PayRequest dashboard
5. Verify `mollie_customer_id` field is populated
1. Navigate to Settings → App Store → Mollie
2. Click "Test Connection"
3. If failed, click "Reconnect"
4. Complete OAuth flow
5. Retry payment
### Payment Fails with Saved Mandate
**Common Error Messages:**
**"Mandate is no longer valid"**
* Mandate expired or revoked by bank
* Customer needs to create new mandate
* Solution: Pay with new payment method
**"Insufficient funds"**
* Customer's bank account balance too low
* SEPA direct debit declined by bank
* Solution: Customer should check bank account
**"Payment already exists for this invoice"**
* Duplicate payment attempted
* System prevented double-charging
* Solution: Refresh page, check invoice status
**"Unable to create payment"**
* Mollie API error or timeout
* Temporary service disruption
* Solution: Wait 5 minutes and retry
### Mandate Shows as "Pending"
**What it means:**
* Bank hasn't confirmed authorization yet
* Usually takes 1-3 business days
* Customer can use mandate after confirmation
**Next steps:**
* Wait for bank verification
* Use alternative payment method meanwhile
* Check Mollie dashboard for status updates
Never manually mark invoices as paid while using saved payment methods. Always wait for Mollie webhook confirmation to ensure payment actually succeeded.
## Best Practices
### For Business Owners
Turn on Mollie customer sync to automatically link customers between PayRequest and Mollie. This ensures mandates appear correctly.
Use Mollie test mode to verify saved payment methods work correctly before processing real payments.
Regularly check mandate statuses in Mollie dashboard. Replace expired mandates before they cause payment failures.
Inform customers about saved payment methods in onboarding emails. Explain the convenience and security benefits.
### For Customers
* **Keep bank details current**: Update mandate if you change banks
* **Monitor email notifications**: Check for payment confirmations
* **Contact business if issues**: Don't repeatedly retry failed payments
* **Understand processing time**: SEPA payments take 1-3 business days
## Security & Compliance
### SEPA Regulations
PayRequest complies with SEPA mandate regulations:
* ✅ **Pre-notification**: Customers receive advance notice of charges
* ✅ **Mandate Reference**: Unique ID for each authorization
* ✅ **Revocation Rights**: Customers can cancel mandates anytime
* ✅ **Dispute Process**: SEPA chargeback rights preserved
### Data Protection
**Data Storage:**
* Mandate IDs are provider-issued references, not raw payment credentials — the full card/IBAN number is never stored by PayRequest
* Bank account numbers masked in all interfaces
* Connected provider API credentials (Mollie, Stripe, PayPal, Payoneer) are stored encrypted
**Access Control:**
* Only customer can use their own mandates
* Business owners see aggregated data only
* Multi-tenant isolation enforced
**Audit Logging:**
* All payment attempts logged
* Mandate usage tracked
* Failed payments recorded with reasons
### PCI Compliance
PayRequest **never stores** sensitive bank account details:
* Bank data stays with Mollie (PCI-DSS Level 1 certified)
* Only mandate IDs stored in PayRequest
* No direct access to customer bank accounts
* All payment processing handled by Mollie
By using Mollie mandates, PayRequest maintains PCI compliance without needing to store sensitive payment information.
## Frequently Asked Questions
Yes! Subscriptions automatically create and use mandates for recurring payments. The same mandate can be used for both subscription charges and one-off invoice payments.
The mandate will no longer appear in saved payment methods. The customer will need to create a new mandate by making a new SEPA payment, or use a different payment method.
SEPA mandates remain valid indefinitely unless:
* Customer revokes the mandate
* Bank account is closed
* 36 months pass without any payments (dormancy)
* Business manually cancels the mandate
No. Mandates must be created through the standard SEPA Direct Debit payment flow via Mollie. This ensures proper authorization and compliance with SEPA regulations.
Currently, only SEPA Direct Debit mandates support saved payment methods. Credit cards, iDEAL, and other payment methods do not offer saved credentials in the same way.
Yes! Customers can have multiple mandates (e.g., personal and business bank accounts). They can choose which mandate to use for each payment.
**Subscriptions** are recurring payments that automatically charge on schedule. **Saved mandates** allow one-click manual payments on individual invoices. Both use SEPA mandates but serve different purposes.
## Related Documentation
Learn more about mandate management
Set up Mollie for your business
Configure customer portal settings
Create and manage invoices
Set up recurring billing
Manage payment provider integrations
***
**Need Help?** If you're experiencing issues with saved payment methods, contact [support@payrequest.io](mailto:support@payrequest.io) with the invoice ID and customer email for assistance.
# Security Deposits
Source: https://docs.payreque.st/payment-processing/security-deposits
Collect authorization holds on credit cards for hotels, car rentals, equipment, and Airbnb. Capture or release funds after inspection.
## Overview
Security Deposits let you place a temporary hold on a customer's credit card without actually charging them. The amount is reserved (authorized) but not deducted. After the service is completed — a hotel stay, car rental return, or equipment inspection — you can either **capture** (charge) all or part of the hold, or **release** it back to the customer.
Security Deposits are perfect for any business that needs a guarantee before delivering a service: hotels, Airbnb hosts, car rental companies, equipment rental, event venues, and more.
## How It Works
Security Deposits use your connected payment provider, such as Stripe, Mollie, or PayPal, to create authorization holds on supported cards:
1. **Customer pays** → Credit card amount is temporarily held (not charged)
2. **You inspect** → Check the property, vehicle, or equipment after use
3. **You decide** → Capture the hold (charge for damages) or release it (no charge)
```
Customer authorizes €500 deposit
↓
Hotel stay / Rental period
↓
Inspection after checkout
↓
├─ No damage → Release full €500 (customer gets money back)
├─ Minor damage → Capture €75 (charge only what's needed)
└─ Major damage → Capture full €500
```
Security deposits only work with **credit card** payments. iDEAL, SEPA Direct Debit, bank transfer, and other payment methods do not support authorization holds. Customers will only see the credit card payment option.
## Key Features
* **Authorization Hold**: Amount reserved on card, not charged
* **Full or Partial Capture**: Charge the exact amount needed for damages
* **Release Hold**: Return the full amount with one click
* **Hold Duration**: Configurable from 1 to 28 days (the bank's window is the hard ceiling — see [hold durations per PSP](/payment-processing/deposit-hold-duration))
* **Customer Status Page**: Branded page where customers can track their deposit
* **Progress Tracking**: Visual countdown showing remaining hold days
* **Capture History**: Full audit trail of all captures
* **Email Notifications**: Automatic confirmation when deposit is authorized
## Creating a Deposit Product
### Step 1: Create a New Product
Navigate to **Products** in your dashboard and click **New Product**.
1. In the product type step, select **Security Deposit**
2. Give your product a descriptive name (e.g., "Airbnb Deposit", "Car Rental Borg")
### Step 2: Configure Deposit Settings
In the pricing step, configure the deposit-specific settings:
**Hold Duration** (Required)
* How many days the authorization hold remains active
* Options: 1 to 28 days
* After this period, unreleased holds automatically expire
* Recommended: 7 days for short stays, 14-28 days for longer rentals
**Allow Partial Capture** (Optional)
* Enable to charge only part of the deposit
* Example: €500 deposit, charge €75 for a broken item
* When disabled, you can only capture the full amount
**Deposit Instructions** (Optional)
* Custom instructions shown to customers
* Explain what the deposit covers
* Example: "This deposit covers potential damages during your stay"
The deposit amount is set as the regular product price. Set it to the maximum amount you want to hold (e.g., €500 for a hotel deposit).
### Step 3: Save and Share
After saving your deposit product, you can share it via:
* **Smart Links** (recommended) — Create a branded payment link
* **Payment Page** — Send customers directly to your payment page
## Using Deposits with Smart Links
The recommended way to collect security deposits is through **Smart Links**. This gives you a branded URL, analytics tracking, and a centralized management interface.
You can also open **Security Deposits → Create Deposit Link** in the dashboard. A deposit collected through a payment link is managed in the same Security Deposits list, even when it has no linked product.
### Creating a Deposit Smart Link
1. Go to **Payment Page** → **Smart Links** tab
2. Click **Create Smart Link**
3. Select **Product Link** as the type
4. Choose your deposit product
5. Give it a descriptive name (e.g., "Airbnb Borg 2025")
6. Optionally add a description explaining the deposit
7. Click **Create**
### Managing Deposits in Smart Links
All deposits collected through a smart link appear in the **Deposits tab** on the smart link detail page. For each deposit, you can see:
**Deposit Information:**
* Customer name and email
* Amount held
* Authorization status with colored badge
* Authorization date
* Mollie payment ID
* Customer-facing status page URL
**Hold Duration Progress:**
* Visual progress bar showing elapsed vs. remaining time
* Days remaining counter
* Start and end dates
* Turns red when nearing expiration (2 days or less)
**Capture History:**
* Table of all captures with amounts
* Capture status (Succeeded/Failed)
* Timestamps and descriptions
## Find a Deposit and Capture an Amount
Sign in to the business account that collected the deposit and open [Security Deposits](https://payrequest.app/deposits) in the dashboard sidebar. You do not need to open Customers first.
Search by customer name, email, or booking reference. Click the **underlined customer name**, or **View** in the Actions column on the right. On a narrow screen, scroll the table horizontally to reach Actions.
**Funds reserved** means the card authorization has been confirmed. Check the capture deadline. A waiting, processing, failed, or expired authorization cannot be captured.
At the top of the detail page, select **Capture Full Amount** or **Partial Capture**. Partial Capture appears when partial capture is enabled in the deposit's product or payment-link settings. Enter the amount to charge and optionally describe the reason.
For Stripe deposits, the confirmation shows the amount charged, the amount released, the PayRequest platform fee, and the notice about separate Stripe fees. Opening this window does not charge the customer. The final **Capture** button charges the displayed amount.
### One final capture with Stripe
The current Stripe deposit flow supports **one capture**, whether full or partial. When you capture part of a deposit, Stripe releases the unused amount. You cannot make a second capture from that authorization. Decide the total amount you need before confirming.
For example, from a **€350** Stripe deposit:
| Action | Charged | Released | Available for another capture |
| - | - | - | - |
| Capture €150 | €150 | €200 | €0 |
| Capture the full €350 | €350 | €0 | €0 |
After a successful partial Stripe capture, the deposit is marked **Captured**. The detail page explains the charged and released amounts, the Captures tab records the charge, and the capture buttons disappear. Captured means the capture is complete; it does not necessarily mean the original deposit was charged in full.
Stripe Multicapture is **not enabled in PayRequest**. It would require Stripe eligibility and approval for the merchant's business and use case, as well as integration support. It cannot restore funds already released from an existing deposit. Other providers have their own capture restrictions; do not assume that enabling partial capture also enables multiple captures.
### Fees on Stripe deposit captures
PayRequest charges **0% platform fees on Stripe security-deposit captures**. Stripe processing fees remain separate and are deducted from the captured amount. Their exact amount depends on the card and your Stripe pricing.
If you capture **€100**, the PayRequest platform fee is **€0**. Your net payout is €100 minus Stripe's fees. The capture window does not promise a net payout or automatically increase the charge to cover processing costs. Your Business subscription price is separate from these payment-processing fees.
### Releasing a Deposit
When no charges are needed (e.g., property returned in perfect condition):
1. Open the deposit detail page and click **Release Hold**
2. Confirm the release action
3. The hold is removed and funds become available to the customer
Releasing a deposit cannot be undone. Once released, the authorization hold is permanently voided and you cannot capture any amount from it.
## Customer Status Page
Every deposit has a unique, branded status page that customers can visit to check their deposit status. The URL is automatically generated and looks like:
```
https://payrequest.me/[your-handle]/deposit/[token]
```
### What Customers See
The status page matches your payment page branding (avatar, business name, tagline) and shows:
* **Status Badge** — Color-coded indicator in the top-right corner (Hold Active, Partially Charged, Released, etc.)
* **Smart Link Title & Description** — Your custom title and description from the smart link
* **Amount** — The held amount with a status-appropriate icon
* **Details** — Booking reference, authorization date, hold expiry with countdown
* **Hold Duration Progress Bar** — Visual indicator of remaining hold time
* **Capture History** — All captures with amounts, descriptions, and timestamps
* **Info Callout** — Status-specific explanation of what happens next
The status page updates automatically every 15 seconds. Customers don't need to refresh to see status changes.
### Status States
| Status | Badge Color | Description |
| - | - | - |
| Awaiting Authorization | Amber | A successful card authorization has not yet been confirmed |
| Hold Active | Blue | Amount held on card, awaiting capture or release |
| Partially Charged | Indigo | Part of the hold has been captured |
| Deposit Charged | Amber | Capture completed; check the actual captured amount |
| Deposit Released | Green | Hold released, no charge |
| Hold Expired | Red | Authorization hold expired |
## Dashboard Statuses and Next Steps
The dashboard uses clear authorization labels instead of a single Pending label. Use the matching filters in the Security Deposits list to find deposits that need attention.
| Dashboard status | Meaning | What to do |
| - | - | - |
| **Waiting for customer** | No successful authorization has been confirmed. The customer may still need to enter card details or finish their bank verification. | Ask the customer to complete the authorization. |
| **Processing authorization** | The provider confirms it is processing the authorization; the reservation is not confirmed yet. | Wait for confirmation. Do not ask the customer to pay again yet. |
| **Authorization attempt expired** | The provider confirms that the checkout attempt expired without a confirmed hold. | Ask the customer to authorize again through a fresh checkout. |
| **Funds reserved** | The card authorization is confirmed and the amount is held. | Capture or release before the displayed deadline. |
| **Captured** | The capture has completed. A Stripe partial capture also closes the authorization and releases the unused amount. | Review the charged and released amounts and capture history. |
| **Partially Captured** | A provider-specific partial capture is recorded. This does not guarantee another capture is possible. | Check the remaining capturable amount and available actions. |
| **Released** | The remaining reservation has been released. | No further capture is available. |
| **Expired** | A previously reserved hold has reached its expiry. | A new authorization is required to reserve funds again. |
| **Failed** | The authorization or payment attempt failed. | Check the deposit details before asking the customer to retry. |
**Authorization attempt expired** and **Expired** are different: the first means the checkout attempt never produced a confirmed hold; the second means an existing hold expired. Creating or opening a link alone does not reserve money. Stripe attempt status is updated from provider-confirmed information, not simply from the age of the deposit.
The [API](/api/security-deposits) retains its existing machine-readable status values. Dashboard labels do not introduce new API status values.
## Use Cases
### Hotel / Airbnb Deposit
```
Product: Room Deposit
Amount: €250
Hold Duration: 14 days
Partial Capture: Enabled
Scenario:
1. Guest authorizes €250 at check-in
2. Guest checks out after 5 nights
3. Inspection reveals a stained carpet
4. Host captures €60 for cleaning fee
5. With Stripe, the remaining €190 is released automatically when the capture completes
```
### Car Rental Deposit
```
Product: Vehicle Deposit
Amount: €1,000
Hold Duration: 7 days
Partial Capture: Enabled
Scenario:
1. Customer authorizes €1,000 when picking up the car
2. Customer returns car after 3 days
3. Inspection shows a scratch on the bumper
4. Agency captures €350 for repair
5. Remaining €650 is released
```
### Equipment Rental
```
Product: Camera Equipment Deposit
Amount: €500
Hold Duration: 3 days
Partial Capture: Disabled
Scenario:
1. Customer authorizes €500 for a camera rental
2. Customer returns equipment in perfect condition
3. Business releases the full €500 hold
```
### Event Venue Deposit
```
Product: Venue Deposit
Amount: €2,000
Hold Duration: 7 days
Partial Capture: Enabled
Scenario:
1. Client authorizes €2,000 for venue rental
2. Event concludes, venue inspection done
3. Minor cleanup needed beyond agreement
4. Venue captures €150 for extra cleaning
5. Remaining €1,850 is released
```
## Email Notifications
When a customer's deposit is authorized, they automatically receive a confirmation email containing:
* Business name and branding
* Deposit amount
* Hold duration
* What to expect next
* Link to the deposit status page
## Best Practices
### Setting Hold Duration
* **Short stays** (1-2 nights): 7 days
* **Weekly rentals**: 14 days
* **Monthly rentals**: 28 days
* **Equipment rental**: 3-7 days depending on rental period
* Always add a few buffer days beyond the expected return date
### Communication
* Use the **Deposit Instructions** field to clearly explain what the deposit covers
* Add a descriptive **Smart Link description** so customers understand the purpose
* When capturing, always add a description explaining the charge reason
### Amount Guidelines
* Set deposits proportional to potential damage costs
* Don't set deposits unreasonably high — it ties up customer funds
* Consider your industry standards and customer expectations
## Frequently Asked Questions
Security deposits require a payment method that supports authorization holds. The deposit checkout uses supported cards; payment methods such as iDEAL and SEPA do not provide this card-authorization flow.
The authorization hold automatically expires after the configured hold duration. The customer's funds are released by their bank. You cannot capture an expired hold — the deposit status changes to "Expired".
No. You can only capture up to the original authorized amount. If damage costs exceed the deposit, you'll need to invoice the customer separately for the difference.
This depends on the customer's bank. Most banks release held funds within 1-3 business days after release. Some banks may take up to 7 business days.
Not with the current Stripe deposit flow. A €150 capture from a €350 deposit releases the remaining €200, so you cannot capture another €50 later. Partial capture means choosing a smaller amount for the final capture, not splitting the authorization into multiple charges. Other providers have their own restrictions.
Open Security Deposits in the dashboard, then click the underlined customer name or View. Capture buttons appear on the deposit detail page when there is a confirmed, unexpired reservation. A waiting, processing, expired, released, or already finalized Stripe deposit cannot be captured. Partial Capture also requires partial capture to be enabled in the deposit settings.
The PayRequest platform fee for a Stripe security-deposit capture is €0 (0%). Stripe's own processing fees still apply, so the net payout depends on the card and your Stripe pricing.
The capture amount must be greater than zero. There is no other minimum — you can capture as little as €0.01 if needed.
Yes. Every deposit has a unique status page URL that customers can visit to see the current status, amount held, hold duration progress, and capture history. The URL is visible in the smart link deposits tab.
You can configure hold durations from 1 to 28 days on the product. The actual maximum the bank enforces depends on the PSP and card brand — anywhere from 7 days (Visa via Stripe blended pricing) to 180 days (Vipps via Mollie). See [Deposit Hold Duration](/payment-processing/deposit-hold-duration) for the full per-PSP and per-network breakdown.
Free and Premium include 3 new security deposits per calendar month, with at most 1 active deposit at a time. Business (€20/month) and Growth include unlimited security deposits. Payment-provider fees remain separate. Existing eligible Premium subscriptions retain unlimited access while that same subscription remains active. These limits apply to creating new deposits; you can still manage, capture, and release existing deposits.
## Need Help?
Create branded payment links for deposits
Learn about all product types
Understanding payment methods
Managing payment disputes
# Setting Up Payment Providers
Source: https://docs.payreque.st/payment-processing/setting-up-payment-providers
Connect Mollie, Stripe, PayPal, or Payoneer to start accepting payments through PayRequest
# Setting Up Payment Providers
PayRequest works with four payment providers: **Mollie**, **Stripe**, **PayPal**, and **Payoneer**. You only need one to get started, but you can connect all four and let your customers pick their preferred method.
Each provider has its own connect flow and runs through your own merchant account. PayRequest never holds your money — payments land directly in your provider's account, and you withdraw on your own schedule.
## Which Provider Should I Pick?
There's no wrong answer — most businesses start with one and add a second later as customer demand changes.
Best for **European invoicing** and **subscriptions**. Strong on iDEAL, Bancontact, SEPA, and recurring billing.
Best for **payment links** with global reach. Auto-localizes prices to the buyer's currency in 150+ countries.
Best for **international payment links**. Adds Pay Later and Venmo where eligible — many buyers prefer the familiar PayPal checkout.
Best for **creators with global audiences**. Supports 150+ currencies and local payment methods across Asia, LatAm, Africa, and the Middle East.
**You can connect all four.** The payment page picks the right one for each transaction, and your customers see whichever methods you've enabled.
## What Each Provider Supports
| Capability | Mollie | Stripe | PayPal |
| - | :-: | :-: | :-: |
| Payment links | ✓ | ✓ | ✓ |
| Invoices | ✓ | — | — |
| Subscriptions | ✓ | — | — |
| Customer-currency display | — | ✓ | — |
| Pay Later / BNPL | Klarna | Klarna, Afterpay | Pay Later |
| Refunds | ✓ | ✓ | ✓ |
**Stripe and PayPal currently power payment links only.** Invoices, subscriptions, and customer billing flows continue to use Mollie. We're rolling out broader Stripe and PayPal support in stages.
## How to Connect a Provider
The fastest way is through the onboarding wizard the first time you sign in. After that, you can add or swap providers any time from the Provider Settings page.
Click your avatar in the top-right and choose **Provider Settings**, or visit `/provider-settings` directly.
You'll see a card for each available provider. Click **Connect** on the one you want.
PayRequest sends you to Mollie, Stripe, or PayPal to log in (or create an account) and grant permission. You stay on the provider's own pages — we never see your password.
Once you authorize, you're returned to PayRequest with the connection live. You'll see a green confirmation banner with the connected account's name.
## Connecting Multiple Providers
You can have all three connected at the same time. Each one shows up as its own card in Provider Settings with its own enable/disable switch. PayRequest applies a simple priority: when a customer pays an invoice or subscription, it goes through Mollie. When they pay through a payment link, they see whichever of Stripe and PayPal you've enabled (or both, side by side).
If you disconnect a provider while subscriptions are active, those subscriptions will stop charging at the next renewal. Make sure to migrate active subscriptions before disconnecting.
## Setting a Default Gateway
When you have more than one provider connected, you can mark one as your **default** to keep things tidy. The default is the provider PayRequest reaches for first when there's no explicit choice (for example, internal invoice flows and automatic routing).
Navigate to **Settings → Providers** from the dashboard.
Find the card for the provider you want as default. It must be **Active** — you can't set an inactive provider as default.
Click the star **Set as default** button in the top-right of the provider card. The button only appears on active, non-default providers.
A blue **Default** badge appears next to the active status, and the previous default (if any) is automatically demoted. Only one provider can be the default at a time.
If you mostly invoice European customers, set **Mollie** as default. If you mostly run global payment links, set **Stripe**. You can change the default at any time without breaking existing transactions.
Setting a default doesn't disable the other providers — customers can still pay through any active gateway on the payment page. The default just decides which provider PayRequest picks when it has to choose for you.
## Provider-Specific Guides
Configure iDEAL, Bancontact, SEPA, and recurring billing for European customers.
Accept cards, Apple Pay, Google Pay, Klarna, and more — with auto-localized pricing.
Add PayPal, Pay Later, and Venmo to your payment links.
Reach customers in 150+ countries across Asia, LatAm, Africa, and the Middle East.
## Frequently Asked Questions
Free-plan accounts pay a **2% platform fee** that PayRequest takes from each transaction. Paid plans (Freelancer and Business) don't pay any platform fee — you only pay your provider's standard processing fees. The provider's fees go directly to Mollie, Stripe, or PayPal — PayRequest never touches them.
Straight to your own merchant account. Mollie deposits into your bank account, Stripe and PayPal hold the balance until you withdraw it. PayRequest is just the storefront and accounting layer — we don't act as a marketplace or payment aggregator.
Yes. The connect flow links your existing account — you don't need to create a new one. If you don't have an account yet, the provider will offer to create one during the connect flow.
Yes. Disconnect the old one in Provider Settings and connect a new one. Existing transactions stay searchable in your dashboard regardless of which provider is currently active.
## Next Steps
See every payment method PayRequest supports across all three providers.
Generate a shareable link or QR code your customers can pay through.
# Share Your Crypto Address
Source: https://docs.payreque.st/payment-processing/share-wallet-address
Get a branded link with your wallet address, QR code, and copy button — perfect for X giveaways, donations, and tip jars
# Share Your Crypto Address
Every connected crypto wallet automatically gets its own shareable link on your `payrequest.me` page — a clean, branded card with a QR code and a one-tap **copy address** button. Drop the link anywhere you'd normally paste a wallet address: X/Twitter giveaways, Discord, a tip jar, or a "buy me a coffee" post.
No setup needed beyond connecting the wallet itself (Provider Settings or Business Details). Once a wallet address is saved, its share link works immediately.
## Your Address Links
| Asset | Link | Requires |
| - | - | - |
| Solana (SOL) | `payrequest.me/{yourname}/sol` | `solana_wallet_address` connected |
| Bitcoin (BTC) | `payrequest.me/{yourname}/btc` | BTC address set in Business Details |
| Base / Ethereum (ETH) | `payrequest.me/{yourname}/eth` | EVM wallet connected |
Replace `{yourname}` with your PayRequest handle — the same one used in your main payment page URL (`payrequest.me/{yourname}`).
Don't have a wallet connected for an asset yet? Visiting that link returns a friendly "not configured" message instead of an error — connect the wallet first, then the link goes live instantly.
## What Visitors See
The address page uses the **same branding as your main payment page**:
* Your avatar, name, and tagline (or logo + business name)
* Your social links (X, LinkedIn, GitHub, website)
* Your accent color and page theme (Solana / Crypto Native, if set)
* A QR code for the address
* The address itself in a copy-to-clipboard field
* The "Secure · Encrypted · Powered by PayRequest" trust footer
Visitors can scan the QR code with any wallet app, or tap the copy icon to grab the address as text — no account or login required.
## Requesting a Specific Amount
You can also pre-fill an amount by adding it to the link:
```
payrequest.me/{yourname}/10usd/sol
payrequest.me/{yourname}/25eur/btc
payrequest.me/{yourname}/5gbp/eth
```
This shows the same branded card, plus the equivalent amount in crypto (converted at the current exchange rate) and a countdown showing when the rate will refresh. Useful for invoicing a specific person a round amount without creating a full invoice.
Supported fiat codes are `usd`, `eur`, and `gbp`. The amount is informational only — the page does not verify or track payments. For payments you need confirmed and reconciled automatically, use your full [payment page](/payment-processing/payment-methods-overview) or [Smart Links](/payment-processing/smart-links) instead.
## Use Cases
Drop your `/sol` link in a giveaway post — entrants get a clean page with your address and a QR code, with your branding front and center.
Add the link to your bio or stream overlay so people can quickly tip you in BTC, SOL, or USDC on Base.
Send a friend or client `payrequest.me/{yourname}/25eur/sol` instead of typing out an address and amount in chat.
Print the QR code on a flyer, business card, or table tent for in-person crypto tips and donations.
## Frequently Asked Questions
No. As soon as a wallet address is saved on your account (Solana, Base/ETH, or BTC), its share link is live at `payrequest.me/{yourname}/{asset}`.
No. It's a static "here's my address" page — a QR code and a copy button. To accept and automatically reconcile payments, use your [payment page](/payment-processing/payment-methods-overview) or a [Smart Link](/payment-processing/smart-links).
Yes — it inherits your PayRequest Page styling: avatar, tagline, social links, accent color, and [crypto page theme](/shop-and-checkout/crypto-page-themes) all carry over automatically.
The link returns a "this merchant has not configured a wallet" message. Connect the wallet in Provider Settings or Business Details and the link starts working right away.
## Next Steps
Accept full checkout payments via Solana Pay QR codes.
Give your page a Solana or Crypto Native look.
Connect a Base/EVM wallet to receive USDC.
Create shareable payment links with fixed amounts.
# Smart Links
Source: https://docs.payreque.st/payment-processing/smart-links
Create branded payment links, request another payment from an existing customer, and manage payment status, sharing, and reminders
## Overview
Smart Links are reusable, branded payment URLs designed for marketing campaigns, social media sharing, and QR code payments. Unlike dynamic payment page links that need to be generated each time, Smart Links provide a permanent, memorable URL that you can share anywhere.
Smart Links are perfect for social media campaigns, QR codes on flyers, email signatures, or any situation where you want a clean, memorable payment URL with analytics tracking.
## Key Features
* **Pretty URLs**: `https://payrequest.me/[businessname]/[path]`
* **Embed Button Snippet**: Copy a styled HTML button (Blue / Dark / Outline) and paste it on any website or WordPress page
* **QR Code Generation**: Automatic QR code for every smart link
* **Analytics Tracking**: View counts, payment counts, revenue, and conversion rates
* **Four Link Types**: Product checkout, fixed amount, security deposit, or invoice bundle
* **Payment Limits**: One-time, multiple, or unlimited payment options
* **SMS & Email Delivery**: Send links directly to customers via SMS or email
* **Payment Reminders**: Automatic follow-up reminders for unpaid links
* **Tag Support**: Organize smart links with tags for easy management
* **Repeat Customer Payments**: Start an editable one-time Amount Link from a customer's previous payment without creating a product
* **Payment Status Filters**: Find links with paid transactions or no linked payments, and search by customer
* **Active/Inactive Toggle**: Quickly enable or disable links
* **After-Payment Actions**: Redirect customers or update tags after successful payment
* **Access Code Protection**: Require a code before visitors can pay, ideal for links shared publicly but meant for a specific audience
* **Renewable Timed Access**: Sell a fixed number of access days through the same reusable Amount Link
* **Telegram Delivery**: Give each paying customer a personal invite to a private group or channel
## Accessing Smart Links
Navigate to **Payment Page** in your dashboard sidebar, then click the **Smart Links** tab.
Smart Links are available for all PayRequest accounts. The feature integrates seamlessly with your existing payment page setup.
## URL Structure
Every smart link follows this format:
```
https://payrequest.me/[your-handle]/[path]
```
**Example:**
```
https://payrequest.me/acme-corp/summer-sale
```
* **`[your-handle]`**: Your payment page handle or business name
* **`[path]`**: Custom URL path (auto-generated from link name)
The path is automatically generated from your link name, but you can customize it when editing the smart link.
## Creating a Smart Link
### Step 1: Choose Link Type
When creating a new smart link, first select the type:
**Product Link**
* Links directly to a specific product
* Redirects to your shop's product page
* Best for: Product promotions, catalog links, shop items
**Amount Link**
* Fixed payment amount
* Renders directly on payment page (keeps smart link URL visible)
* Best for: Donations, event tickets, service fees
**Deposit Link** (Product Link with a Deposit product)
* When you select a Security Deposit product, the smart link becomes a deposit link
* Customers pay via credit card authorization hold (amount is held, not charged)
* Deposits tab appears on the smart link detail page for capture/release management
* Best for: Hotel deposits, car rental holds, equipment guarantees
**Invoice Bundle Link**
* Bundles multiple open invoices into a single, one-click payment link
* Customer sees all invoices with invoice numbers, amounts, and due dates — plus a total
* One Mollie payment covers all selected invoices; all invoices are marked paid automatically when payment succeeds
* Best for: Collecting multiple overdue invoices in one go, end-of-month payment consolidation
Choose "Amount Link" for marketing campaigns where you want the branded URL to remain visible during checkout. For security deposits, create a [Deposit product](/payment-processing/security-deposits) and use a Product Link. For collecting multiple outstanding invoices from a single customer at once, use an Invoice Bundle Link.
### Step 2: Configure Link Details
**Required Fields:**
* **Name**: Descriptive name for the link (e.g., "Summer Sale Promotion")
* **Type**: Product, Amount, or Invoice Bundle
* **Product** (for product links): Select from your product catalog
* **Amount & Currency** (for amount links): Set fixed payment amount
* **Customer + Invoices** (for invoice bundle links): Select the customer, then tick the open invoices to include — the total is calculated automatically
**Optional Fields:**
* **Description**: Public description shown to customers (supports rich text — this is displayed on the payment page and in the email)
* **Tags**: Organize links by campaign, category, or purpose
Invoice Bundle links require selecting a **customer** first. Only invoices with status **open**, **sent**, or **overdue** are shown for selection — already-paid invoices are excluded automatically.
### Step 3: Set Payment Limit (Optional)
Control how many times your smart link can be used for payments:
**Unlimited** (Default)
* Link stays active indefinitely
* Accepts unlimited payments
* Best for: Ongoing campaigns, permanent donation links
**One-time**
* Link automatically disables after the first successful payment
* Prevents multiple uses
* Best for: Individual invoices, one-time offers, exclusive deals
**Multiple times**
* Set a custom limit (1-1000 payments)
* Link disables when limit is reached
* Shows remaining payment count in analytics
* Best for: Limited inventory, early bird tickets, capacity-limited events
Payment limits are perfect for scarcity marketing. Show "Only 50 spots left!" and the link automatically disables at the limit.
**How it works:**
1. Select payment limit type when creating the link
2. For "Multiple times", enter the maximum number of payments (1-1000)
3. Smart link tracks successful payments automatically
4. When limit is reached, customers see "Payment limit reached" message
5. You can view remaining payments in the analytics dashboard
Payment limits only count successful (paid) transactions. Failed or pending payments don't count toward the limit.
### Step 3b: Protect with an Access Code (Optional)
Require visitors to enter a code before they can see and use the payment page. This is useful when a link is shared in a public or semi-public place (a newsletter, a social post, a community channel) but should only work for a specific group of people.
**How to enable it:**
1. While creating or editing the smart link, check **Protect with access code**
2. Enter a code, or click **Generate** to get a random 6-character code
3. Save the smart link
**What customers see:**
* Opening the URL shows a branded "Access code required" page asking for the code
* After entering the correct code once, the link works normally for the rest of that browser session
* An incorrect code shows an error message; repeated wrong attempts are temporarily rate-limited
Use access codes for invite-only pre-orders, community discounts, B2B pricing shared with a specific client, or any "amount" or "deposit" link you don't want to be fully public even though the URL itself isn't secret.
The code is stored securely (hashed) and is never shown again after saving — when editing a protected link, leave the access code field blank to keep the existing code, or type a new one to replace it.
Access code protection adds friction for legitimate customers too. For one-off payment requests sent directly to a single customer, the link itself is already private — an access code is usually unnecessary there.
### Step 3c: Grant Renewable Timed Access (Optional)
An Amount Link can grant a customer access for a fixed number of days after a successful payment. This is useful for paid signal groups, coaching communities, premium newsletters, temporary support access, and other offers where customers renew by paying again.
1. Create or edit an **Amount Link**
2. Enable **Grant time-limited access after payment**
3. Enter the number of access days, such as `30`
4. Optionally select a connected **Telegram community**
5. Keep the payment limit set to **Unlimited** when customers should be able to renew
6. Save and share the Smart Link
The public URL remains the same for every buyer and every renewal. PayRequest records access separately for each customer:
* A first payment starts access from the payment time
* A renewal made while access is active adds the new period to the existing expiry date
* A renewal made after access expired starts a new period from the new payment time
* Repeated payment notifications cannot accidentally add the same period twice
For example, a customer with access through June 30 who pays again for a 30-day link receives access through July 30. Other customers using that same Smart Link retain their own independent access dates.
Timed-access fulfillment is currently available for **PayPal Amount Links**. Do not promise automatic access delivery for another payment provider until that provider is listed here as supported.
#### Deliver Access Through Telegram
PayRequest treats Telegram as an optional delivery destination, not as a separate product type. The same timed-access link can therefore represent trading signals, a membership, a course community, or another paid service.
Open `@payrequestme_bot` in a private chat and send `/start`. Follow the secure connection link to sign in to your PayRequest account.
Add `@payrequestme_bot` as an administrator of the private Telegram group or channel. The community is then registered automatically with the PayRequest account connected to your bot chat.
Return to the Amount Link create or edit screen, enable timed access, and choose the community under **Telegram community**.
After payment, the customer sees a personal Telegram join button on the PayRequest success page.
Each invitation is valid for 24 hours and can be used by one person. PayRequest links the joined Telegram member to that customer's access period. When access expires, the bot removes the member automatically; after a renewal, the customer can receive a new invitation.
The bot must remain an administrator with permission to create invite links and manage members. Removing the bot or its administrator permissions stops automatic invitations and expiration handling.
Connect and select the Telegram community before taking payments. Existing access grants do not automatically receive an invitation when a community is linked later.
### Step 4: Send to Customer (Optional)
Send the smart link directly to a customer via email or SMS:
**Delivery Options:**
1. **Select Customer**: Choose from your customer list
2. **Choose Delivery Method**:
* **Email**: Send to customer's email address
* **SMS**: Send to customer's phone number (requires valid international format)
* **Both**: Send via both email and SMS simultaneously
**Email Delivery:**
* Uses your configured email template
* Includes smart link URL
* Professional branded message
* Sent immediately upon creation
**SMS Delivery:**
* Requires valid phone number (international format: +31612345678)
* Costs 1 SMS credit per message — every account starts with 1 free credit and earns 1 new credit for every payment received
* Personalized message with customer name
* Includes the payment link
* Sent from your business name
SMS delivery requires the customer to have a valid phone number in international format (starting with country code). Invalid numbers will disable the SMS option, and so will an empty SMS credit balance.
Curious how SMS credits work? See the dedicated [SMS Payment Links](/payment-processing/sms-payment-links) guide.
**Tracking:**
* Delivery status shown on smart link detail page
* Timestamp of when link was sent
* Delivery method badges (Email/SMS)
Combine SMS and email delivery for important payment requests to ensure customers receive the link through their preferred channel.
### Step 4b: Enable Payment Reminders (Optional)
Automatically send follow-up reminders to customers who haven't paid yet. This feature appears when you select a delivery method (Email or SMS).
**Enabling Reminders:**
1. Select a customer and delivery method (Step 4)
2. Check **Enable Payment Reminders**
3. Configure reminder settings
**Reminder Frequency Options:**
* **Daily**: Send a reminder every day
* **Every 2 days**: Send reminder every other day
* **Every 3 days**: Send reminder every third day
* **Weekly**: Send one reminder per week
* **Monthly**: Send one reminder per month
**Maximum Reminders:**
* Set how many reminders to send (1-50)
* Use the slider or input field to select
* Reminders stop automatically when limit is reached
* Reminders also stop when payment is completed
Payment reminders use the same delivery method(s) you selected for the initial send. If you chose Email + SMS, reminders will be sent via both channels.
**How Reminders Work:**
1. Initial smart link is sent to customer
2. If no payment received, first reminder sent based on frequency
3. Reminders continue until:
* Customer completes payment, OR
* Maximum reminder limit is reached
**Example Configuration:**
```
Delivery Method: Email + SMS
Reminder Frequency: Every 2 days
Maximum Reminders: 5
Timeline:
Day 0: Initial link sent
Day 2: Reminder 1 (if unpaid)
Day 4: Reminder 2 (if unpaid)
Day 6: Reminder 3 (if unpaid)
Day 8: Reminder 4 (if unpaid)
Day 10: Reminder 5 (final reminder)
```
For urgent invoices, use "Daily" frequency with 3-5 reminders. For less urgent requests, use "Weekly" or "Monthly" with more reminders.
**Tracking Reminders:**
When editing a smart link with reminders enabled, you'll see:
* Number of reminders sent vs. limit
* Next scheduled reminder date
* Reminder status
Reminders are only available when sending to a specific customer via delivery methods. They cannot be enabled for links shared publicly without a customer association.
### Step 5: Save and Share
After creating your smart link:
1. Copy the generated URL
2. Download the QR code
3. Share via social media, email, or print materials
## Use Cases
### 1. Marketing Campaign
Create an amount link for a limited-time promotion:
```
https://payrequest.me/fitnessstudio/early-bird-2025
```
**Setup:**
* **Type**: Amount Link
* **Name**: Early Bird Registration 2025
* **Amount**: €49.00
* **Description**: Special early bird discount - Register before December 31st!
**Where to share:**
* Social media posts
* Email newsletters
* WhatsApp messages
* Website banners
### 2. Event Registration
Fixed-price event ticket payment:
```
https://payrequest.me/techconference/ticket
```
**Benefits:**
* Clean, memorable URL
* Track registrations in real-time
* See conversion rate from social media
* QR code for physical posters
### 3. Donation Link
Permanent donation link for non-profit:
```
https://payrequest.me/charity/donate
```
**Features:**
* Fixed suggested amount (customers can change if payment page allows)
* Track total donations
* Calculate average donation size
* Share QR code in physical locations
### 4. Product Promotion
Direct link to specific product with tracking:
```
https://payrequest.me/webshop/premium-bundle
```
**Advantages:**
* Shorter than dynamic product links
* Track which campaigns drive sales
* Measure conversion from different channels
* Professional branded URL
### 5. QR Code Payments
Print QR code on invoices, receipts, or signage:
**Use cases:**
* Restaurant table payments
* Service provider invoices
* Retail store deposits
* Event entrance fees
### 6. Limited Early Bird Campaign with SMS
Create scarcity with payment limits and instant SMS delivery:
```
https://payrequest.me/gym/early-bird-50
```
**Setup:**
* **Type**: Amount Link
* **Amount**: €39.00 (normal price €59)
* **Payment Limit**: Multiple times - 50 payments
* **Delivery**: Send to existing customers via SMS
* **Message**: "🎉 Early bird special! Only 50 spots at €39. Link: \[URL]"
**Benefits:**
* Creates urgency with visible limit counter
* Instant SMS delivery to customer database
* Automatic deactivation at 50 payments
* Track conversion rate by delivery method
* Shows "X payments remaining" in real-time
**Marketing Strategy:**
1. Send initial batch via SMS to VIP customers
2. Share link on social media once SMS customers claim spots
3. Monitor analytics to see SMS vs social media conversion
4. Link automatically closes when limit reached
### 7. Invoice Bundle — Collect Multiple Overdue Invoices
Send a client a single link covering all their outstanding invoices:
```
https://payrequest.me/hostingwalk/openstaande-facturen-maart
```
**Setup:**
* **Type**: Invoice Bundle Link
* **Customer**: Select the customer (e.g., Acme BV)
* **Invoices**: Tick all open/overdue invoices (e.g., INV-2025-041, INV-2025-042, INV-2025-043)
* **Total**: Calculated automatically (€ 1.850,00)
* **Delivery**: Email + SMS
* **Description**: Optional message explaining the situation
**What the customer sees:**
* A dark-themed payment page listing all their open invoices with invoice numbers, amounts, and due dates
* An "Overdue" badge on invoices past their due date
* A clear total and a single **Pay** button
* After payment, a confirmation page with processing status
**After payment:**
* All bundled invoices are automatically marked **paid** in PayRequest
* Each invoice records the Mollie payment ID for audit trail
* The smart link's analytics increment (views + payments)
Add a description like "Your hosting has been suspended. Please settle all outstanding invoices below to restore service." — it appears above the invoice list on the payment page and in the email.
## Analytics Dashboard
Every smart link tracks comprehensive analytics:
### Key Metrics
**Views**
* Total number of link visits
* Tracks every time someone opens the URL
* Blue icon with eye symbol
* **Detailed view tracking**: IP address (masked), browser/OS, referer, timestamp
**Payments**
* Successful payments through this link
* Green icon with credit card symbol
* Shows conversion percentage: `(payments / views) × 100`
**Revenue**
* Total amount collected via this smart link
* Purple icon with euro symbol
* Shows average payment value: `revenue / payments`
### Payment Limit Tracking
For smart links with payment limits, the detail page shows:
**Remaining Payments Badge:**
* Color-coded status indicator
* Green: 4+ payments remaining
* Orange: 1-3 payments remaining
* Red: Limit reached
**Payment Limit Card:**
* Current limit type (One-time, Multiple, Unlimited)
* Total limit (for multiple payment links)
* Remaining payment count
* Percentage of limit used
When a payment limit is reached, the smart link automatically becomes inactive and displays a "Payment limit reached" message to customers.
### Delivery Information
If you sent the smart link to a customer, the detail page displays:
**Delivery Card:**
* Delivery methods used (Email/SMS badges)
* Timestamp of when link was sent
* Relative time (e.g., "2 hours ago")
### Activity Log (Tabbed Interface)
The smart link detail page shows a comprehensive activity dashboard with four tabs:
#### All Tab
Overview of all activity combined, sorted by date (newest first):
* Payment events
* View events
* Link sent events
* Reminder events
#### Views Tab
Detailed view analytics with pagination (10 per page):
**Information tracked per view:**
* Timestamp (e.g., "Dec 14, 2025 17:47")
* Browser & OS (e.g., "Chrome / Mac", "Safari / iOS")
* IP address (masked for privacy: "192.168.1.xxx")
* Referer URL (where visitor came from)
* Relative time (e.g., "2 hours ago")
Detailed view tracking records every visit with analytics data. IP addresses are automatically masked (last octet hidden) for visitor privacy.
#### Payments Tab
All payments through this smart link with pagination:
* Customer name
* Payment date and time
* Invoice number (if applicable)
* Amount paid
* Payment status badge
#### Reminders Tab
Reminder status and history:
**Settings Summary:**
* Frequency (Daily, Every 2 days, etc.)
* Sent count vs. limit (e.g., "1 / 3")
* Remaining reminders
**Reminder Events:**
* Sent reminders with timestamp
* Scheduled reminders showing "Upcoming" status
**Activity Timeline Features:**
* Tab-based organization for easy navigation
* Pagination for large datasets
* All events sorted by date (newest first)
* Different colored icons for quick identification
* Amount displayed for payment events
* Status badges for each activity type
Activity data updates in real-time. New payments, views, and reminders appear immediately across all tabs.
## Managing Smart Links
### Payment Links Overview
The **Payment Links** overview shows each request's name, linked customer, requested amount, payment status, last activity, revenue, and active/inactive switch.
| Column | What it shows |
| - | - |
| Name | Link name and URL path, with any assigned tags |
| Customer | Linked customer, with a shortcut to their profile; otherwise **No customer linked** |
| Requested amount | Amount and currency for Amount Links; other link types show **See checkout** |
| Payment status | **Paid** when the link has a positive paid transaction, or **No linked payments yet**; also shows the latest payment date and any expiry date |
| Last activity | Latest linked payment date, otherwise the recorded last-used or sent date |
| Revenue | Positive paid amounts linked to this request in the link's currency, with a payment count |
Use **All payment statuses**, **Paid**, or **No linked payments yet** to filter the list. Search by customer name, company, link name, description, or path. Type and tag filters can narrow the results further; **Clear** removes the filters.
Payment status, payment count, and revenue in this overview come from recorded paid transactions. Revenue is shown in the link's currency; different currencies are not added together. **Paid** means the link has received a payment, not that an unlimited reusable link is closed.
#### Payments Without a Link Connection
Some historical payments or payments collected directly through your PayRequest Page are not connected to a specific Smart Link. They remain in the customer's payment history but do not count toward that link's status or revenue. A matching description alone does not connect a payment to a link.
**No linked payments yet** therefore means no positive paid transaction is connected to this request. It does not prove that the customer has never paid you. Check their payment history before following up.
#### Quick Actions
* **Copy payment link** copies the checkout URL. A **Copied** confirmation appears when copying succeeds. If your browser blocks clipboard access, open the link details to copy it there.
* **Request again** appears on Amount Links with a linked customer and an eligible linked payment. It opens a new editable request using a previous payment associated with that link and customer.
* **Set up reminders** appears for active, unexpired links with a linked customer and no linked paid transactions. It opens the existing reminder settings; opening them does not send a message.
* **View**, **Edit**, **Duplicate**, and **Delete** remain available.
From a [customer profile](/customer-management/customer-profiles#request-payment-again), **View unpaid payment requests** opens this overview with that customer's filter and **No linked payments yet** selected. You can also choose one of the customer's five most recent eligible payments to request another payment.
### Editing Smart Links
Click **Edit** on any smart link to modify:
**Editable after creation:**
* Path (URL slug)
* Description
* Internal notes (private)
* Tags
* After-payment redirect URL
* Active/inactive status
* Access code protection (on/off and the code itself)
**Cannot change:**
* Type (product vs amount)
* The smart link will keep its analytics history
### Duplicating Links
Create a copy of an existing smart link:
1. Find the link in the **Payment Links** overview.
2. Click **Duplicate** in its actions.
3. Modify the duplicated link as needed.
To ask an existing customer for another payment, use **Request payment again** on their profile instead. That opens a draft based on a paid transaction; duplicating a link creates a copy of the existing link configuration.
**Use cases:**
* Create similar campaigns for different time periods
* Test different amounts with same description
* Duplicate successful campaigns
### Deactivating Links
Toggle a smart link active/inactive:
**When inactive:**
* URL returns 404 error
* Link no longer accepts payments
* Analytics history is preserved
* Can be reactivated anytime
**Use cases:**
* End limited-time campaigns
* Pause seasonal promotions
* Disable outdated links
## QR Code Integration
Every smart link automatically generates a QR code.
### Downloading QR Codes
1. Open smart link detail page
2. Right-click QR code image
3. Save image (200x200px PNG)
### QR Code Best Practices
**Print Quality:**
* Use vector format for large prints
* Minimum size: 2cm × 2cm
* Ensure high contrast (black on white)
**Placement Ideas:**
* Business cards
* Flyers and posters
* Table tents
* Product packaging
* Email signatures
* Invoice footers
Always test QR codes after printing to ensure they scan correctly on different devices.
## After-Payment Actions
Configure what happens after customers complete payment. Smart Links support three types of after-payment actions that can be combined:
### 1. Redirect Option
**Setting Location:** Smart Link Edit → After Payment Actions → Redirect Action
**Redirect URL:**
Enter a full URL to redirect customers after successful payment.
**Common redirect destinations:**
* Thank you page: `https://yourdomain.com/thank-you`
* Discount code page: `https://yourdomain.com/special-offer`
* Download link: `https://yourdomain.com/download/guide.pdf`
* Member portal: `https://yourdomain.com/welcome`
**Example:**
```
After payment redirect: https://fitnessstudio.com/welcome?promo=early-bird
```
Use redirect URLs to provide immediate value: discount codes, exclusive content, or onboarding instructions.
### 2. Apply Tag to Customer
Automatically add a tag to the customer when they complete payment through this smart link.
**Setting Location:** Smart Link Create/Edit → After Payment Actions → Apply Tag to Customer
This option only appears when you select a customer in "Send smart payment link to customer". Customer tags are designed for targeted customer-specific smart links.
**How it works:**
1. Select a customer to send the smart link to
2. Choose a Customer-type tag from the "Apply Tag to Customer" dropdown
3. When the customer completes payment, the tag is automatically added to their profile
**Use cases:**
| Scenario | Tag to Apply | Result |
| - | - | - |
| Promotion payment | "2025 Promo Buyer" | Track who bought via promotions |
| VIP upgrade offer | "VIP Customer" | Auto-upgrade customer status |
| Loyalty program | "Loyalty Member" | Enroll in loyalty program |
| Course purchase | "Course Participant" | Grant course access |
| Event registration | "Event Attendee 2025" | Track event participants |
**Example Workflow:**
```
Smart Link: Early Bird Conference Ticket
Customer: john@company.com
Apply Tag: "Conference 2025 Attendee"
→ John pays via the smart link
→ "Conference 2025 Attendee" tag automatically added to his profile
→ Filter all attendees by this tag for event communications
```
Combine "Apply Tag" with email automations to trigger welcome sequences when customers receive specific tags.
### 3. Remove Tag from Customer
Automatically remove a tag from the customer when they complete payment. The dropdown shows only tags that the customer currently has.
**Setting Location:** Smart Link Create/Edit → After Payment Actions → Remove Tag from Customer
The "Remove Tag" dropdown dynamically shows:
* Tags the customer currently has
* Plus: any tag selected in "Apply Tag" (since it will be added)
If the customer has no tags, you'll see "This customer has no tags to remove".
**How it works:**
1. Select a customer to send the smart link to
2. Choose a tag from "Remove Tag from Customer" (shows only customer's existing tags)
3. When payment completes, the tag is automatically removed from their profile
**Use cases:**
| Scenario | Tag to Remove | Result |
| - | - | - |
| Payment reminder | "Overdue Payment" | Clear overdue status |
| Trial conversion | "Trial User" | Remove trial status |
| Upgrade payment | "Basic Plan" | Remove old plan tag |
| Renewal | "Renewal Due" | Clear renewal reminder |
| Debt collection | "Payment Pending" | Mark as paid |
**Example Workflow:**
```
Smart Link: Outstanding Invoice Payment
Customer: sarah@business.nl
Remove Tag: "Overdue Payment"
Apply Tag: "Paid Customer"
→ Sarah pays her overdue invoice via the smart link
→ "Overdue Payment" tag automatically removed
→ "Paid Customer" tag automatically added
→ Customer status updated in one action
```
The "Remove Tag" dropdown only shows tags the customer actually has. If you don't see a tag, the customer doesn't have it assigned.
### Combining All Three Actions
You can use all three after-payment actions together for powerful automation:
**Complete Example:**
```
Smart Link: VIP Membership Upgrade
Customer: existing-customer@email.com
Redirect: https://yourdomain.com/vip-welcome
Apply Tag: "VIP Member"
Remove Tag: "Standard Member"
Result after payment:
✅ Customer redirected to VIP welcome page
✅ "VIP Member" tag added to profile
✅ "Standard Member" tag removed from profile
```
This combination is perfect for upgrade flows, trial conversions, and membership tier changes where you need to update customer status and provide immediate next steps.
## Tags and Organization
Organize smart links using the tag system. Smart Links support two types of tags:
1. **Smart Link Tags**: Organize your smart links by campaign, channel, or purpose
2. **Customer Tags**: Automatically applied/removed from customers after payment (see After-Payment Actions)
### Creating Tags Inline
When creating or editing a smart link, you can create new tags directly without leaving the form:
1. Scroll to the **Smart Link Tags** section
2. Click **Create New Tag**
3. Enter a tag name
4. Select a color from the color picker
5. Click **Create Tag**
The new tag is immediately available and selected.
Inline tag creation saves time when setting up campaigns. No need to navigate to the Tags page first.
### Managing Tags on Smart Links
From the smart link detail page:
1. Click the **pencil icon** next to "Tags" in the sidebar
2. The tag management modal opens
3. Select or deselect tags using the searchable dropdown
4. Create new tags inline if needed
5. Click **Save Tags**
### Tag Use Cases
**By Campaign:**
* "Summer 2025"
* "Black Friday"
* "Newsletter Campaign"
**By Channel:**
* "Social Media"
* "Email"
* "Print Materials"
**By Purpose:**
* "Donations"
* "Event Tickets"
* "Product Sales"
### Filtering by Tags
In the Smart Links list:
1. Click **Tag Filter** dropdown
2. Select one or more tags
3. View only matching smart links
## Technical Details
### URL Routing
Smart links use intelligent routing:
1. **Amount routes** match numeric values: `/[handle]/12.50`
2. **Smart link routes** match alphabetic paths: `/[handle]/campaign-name`
3. **Default payment page**: `/[handle]`
Smart link paths must start with a letter (not a number) to avoid conflicts with amount-based payment links.
### Payment Page Customization
When accessed via smart link, the payment page shows:
**Custom Content:**
* **Title**: Smart link name (instead of payment page title)
* **Description**: Smart link description (instead of default)
* **Amount**: Pre-filled and disabled (amount links only)
**Hidden Elements:**
* Minimum/maximum amount text
* Amount field editing (for amount links)
### Session Tracking
Smart links use session-based tracking:
**Data stored:**
* Smart link ID
* Link name and description
* Fixed amount (for amount links)
* Original path
**Payment attribution:**
* Session persists through checkout
* Payment webhook links transaction to smart link
* Analytics update automatically
## Advanced Integration
### Email Campaign Integration
Include smart links in marketing emails:
```html theme={null}
Claim Your Discount - Pay Now
```
**Benefits:**
* Track email campaign conversion
* Shorter, cleaner URLs than dynamic links
* Professional branding
### Social Media Campaigns
Share smart links on social platforms:
**Twitter/X:**
```
Early bird discount ends midnight!
🎟️ Get your ticket: payrequest.me/event/ticket-2025
```
**Instagram Bio:**
```
💳 Pay tuition: payrequest.me/school/tuition
```
**Facebook Post:**
```
Donate to our cause: payrequest.me/charity/donate
Track: Total donations and supporter count via analytics
```
### Embed Button on Your Website
Every Smart Link includes a ready-to-paste **payment button snippet** so you can drop a styled "Pay" button onto your own website, blog, landing page, or WordPress post — without writing any code yourself.
The embedded button is a simple link, not an iframe or popup. Customers click and are taken to your branded PayRequest checkout. It works in **any** website builder: WordPress, Squarespace, Wix, Webflow, plain HTML, or even an email signature.
#### How to Get the Snippet
Go to **Payment Page → Smart Links** and click the link you want to embed.
Press the **Share** button at the top right. The share dialog opens with the URL, QR code, and embed options.
Choose between three styles in the **Embed button on your website** section:
* **Blue** — PayRequest's default primary button, works on most sites
* **Dark** — Black button, ideal for light backgrounds
* **Outline** — Minimal transparent button with a border, blends into any design
Click **Copy snippet**. The full HTML is now on your clipboard.
Paste the snippet into any HTML block — WordPress' **Custom HTML** Gutenberg block, a Squarespace **Code** block, or directly in your theme files. The button appears instantly with the correct styling.
#### What the Snippet Looks Like
```html theme={null}
Pay €4.50
```
The first line loads the PayRequest button stylesheet (one-time include — paste it once and reuse the button as often as you like). The second line is the actual button.
The button label defaults to the Smart Link's amount (e.g. **Pay €4.50**) or its name. You can edit the text inside the snippet after pasting — change it to "Buy now", "Donate", "Subscribe", or any language you prefer.
#### WordPress
1. Edit the post or page where you want the button
2. Add a **Custom HTML** block (Gutenberg) or a **Code Snippet** widget (Classic editor)
3. Paste the snippet
4. Update/publish — the button appears with full styling
#### Style Variants
| Variant | Class | Best For |
| - | - | - |
| Blue | `pr-btn pr-btn--default` | Most sites, primary CTA |
| Dark | `pr-btn pr-btn--dark` | Light backgrounds, minimal designs |
| Outline | `pr-btn pr-btn--outline` | Already-styled pages, secondary CTAs |
You can also add the `pr-btn--secure` modifier (e.g. `class="pr-btn pr-btn--default pr-btn--secure"`) to prefix the button with a small lock icon — useful for emphasising the secure-checkout cue.
#### Tracking Still Works
Buttons embedded on third-party sites continue to feed your **Smart Link analytics**: every click increments the view count, and every successful payment increments revenue and conversion rate, exactly as it would on a direct payment URL.
### QR Code Embed
```html theme={null}
```
## Security Best Practices
### ✅ Do's
* **Use descriptive paths** that indicate the purpose
* **Monitor analytics** for unusual activity
* **Deactivate old campaigns** to prevent confusion
* **Test links** before launching campaigns
* **Use tags** to track campaign performance
* **Set after-payment redirects** for better customer experience
* **Use access codes** for links shared publicly that should only work for a specific audience
### ❌ Don'ts
* **Don't use paths** that could be guessed (avoid "test", "temp")
* **Don't share inactive links** (they'll return 404)
* **Don't change paths** during active campaigns (breaks existing shares)
* **Don't delete links** with important analytics history
* **Don't use generic names** like "link1", "payment2"
## Troubleshooting
### Smart Link Returns 404
**Causes:**
1. Link is inactive (check status badge)
2. Path was changed recently
3. Business handle doesn't match
4. Link was deleted
**Solutions:**
* Verify link is **Active** in smart links list
* Check path spelling (case-sensitive)
* Confirm business handle in Settings → Payment Page
### Analytics Not Updating
**Check:**
1. Payment completed successfully (check Transactions)
2. Customer paid within same session (session timeout = 2 hours)
3. Smart link ID appears in transaction details
**Manual verification:**
Navigate to transaction detail page and check "Smart Link" field.
### QR Code Not Scanning
**Fixes:**
1. Increase QR code size (minimum 2cm × 2cm for print)
2. Ensure high contrast (black QR on white background)
3. Test with multiple QR scanner apps
4. Regenerate QR code if image is corrupted
### Wrong Amount Showing
**For Amount Links:**
* Amount is fixed based on smart link configuration
* Edit smart link to change amount
* Clear browser cache and revisit URL
### Payment Page Shows Wrong Title
**Cause:** Session data not loading correctly
**Fix:**
1. Clear browser cookies
2. Open link in incognito/private mode
3. Verify smart link description is set
## Examples Library
### Donation Campaign
```
Name: Monthly Donor Program
Type: Amount Link
Amount: €10.00
Path: monthly-donation
URL: https://payrequest.me/charity/monthly-donation
```
### Event Ticket
```
Name: Tech Conference 2025
Type: Amount Link
Amount: €149.00
Path: techconf-2025
After Payment: https://techconf.com/thank-you
URL: https://payrequest.me/events/techconf-2025
```
### Product Promotion
```
Name: Premium Bundle Sale
Type: Product Link
Product: Premium Bundle (ID: 1814)
Path: premium-bundle
Tags: Summer Sale, Products
URL: https://payrequest.me/shop/premium-bundle
```
### Service Deposit
```
Name: Web Design Deposit
Type: Amount Link
Amount: €500.00
Path: design-deposit
Description: 50% deposit for web design project
URL: https://payrequest.me/agency/design-deposit
```
### Security Deposit (Authorization Hold)
```
Name: Airbnb Deposit March 2025
Type: Product Link (Deposit product)
Product: Airbnb Borg (€500, 14-day hold)
Path: airbnb-borg-march
Description: Security deposit for your Airbnb stay
URL: https://payrequest.me/hosting/airbnb-borg-march
```
**How it works:**
* Customer pays with credit card → €500 is held (not charged)
* After checkout inspection → capture €75 for damages or release full amount
* Open **Security Deposits** in the dashboard to manage the hold. Click the underlined customer name or **View**, then choose **Capture Full Amount**, **Partial Capture** (if enabled), or **Release Hold** when funds are reserved.
* With Stripe, a partial capture is final: capturing €75 from €500 releases the other €425. You cannot capture another amount from the same authorization later.
* Customer gets a branded status page to track their deposit
See [Security Deposits →](/payment-processing/security-deposits) for full documentation.
### Limited Workshop with SMS Delivery
```
Name: Photography Workshop March 2025
Type: Amount Link
Amount: €89.00
Path: photo-workshop-march
Payment Limit: Multiple times - 20
Delivery: Select customer → Email + SMS
Tags: Workshops, March 2025
URL: https://payrequest.me/studio/photo-workshop-march
```
**Customer receives:**
* Email: Professional branded invitation with link
* SMS: "Hi John, your photography workshop link: payrequest.me/studio/photo-workshop-march"
**Dashboard shows:**
* Delivery: Email + SMS badges
* Sent at: Mar 1, 2025 10:30 AM
* Remaining: 15 of 20 payments left
* Analytics: 45 views, 5 payments, 11% conversion
### Invoice Bundle — Multiple Outstanding Invoices
```
Name: Open invoices Q1 2025
Type: Invoice Bundle Link
Customer: Acme BV
Invoices: INV-2025-041 (€450), INV-2025-042 (€750), INV-2025-043 (€650)
Total: €1,850.00 (calculated automatically)
Path: acme-open-q1
Delivery: Email + SMS
Description: Please settle all outstanding invoices below.
URL: https://payrequest.me/yourhandle/acme-open-q1
```
**After payment:**
* All three invoices automatically marked **paid** in PayRequest
* Each invoice records the Mollie payment ID
* Customer receives a confirmation page
## Frequently Asked Questions
**Smart Links** are permanent, reusable URLs with built-in analytics. They're designed for campaigns and marketing.
**Dynamic Payment Links** are generated on-demand with query parameters. They're better for personalized payment requests with customer data.
Yes! Edit the smart link and modify the "Path" field. However, this will break any existing links you've shared, so only change paths before launching campaigns.
Analytics are stored permanently for the lifetime of your smart link. Even if you deactivate a link, historical data remains accessible.
Currently, all smart links use the `payrequest.me` domain with your business handle. Custom domain support for smart links is planned for a future update.
Deleted smart links cannot be recovered. The URL will return a 404 error, and all analytics data is permanently lost. Consider deactivating instead of deleting.
No. Amount links display a disabled amount field. The payment amount is fixed and cannot be modified by customers. This ensures consistent pricing for campaigns.
Payment limits control how many successful payments a smart link can accept:
* **One-time**: Link disables after first payment
* **Multiple**: Set custom limit (1-1000), link disables when reached
* **Unlimited**: Default, accepts infinite payments
Only successful (paid) transactions count toward the limit. Failed or pending payments are not counted. When the limit is reached, customers see "Payment limit reached" and cannot complete payment.
Yes! When creating a smart link, you can select a customer and choose delivery methods:
* Email only
* SMS only (requires valid phone number with country code)
* Both email and SMS
SMS messages are sent via MessageBird and include a personalized message with the payment link. The customer must have a valid international phone number (e.g., +31612345678) for SMS delivery to be available.
When a smart link reaches its payment limit:
1. Link automatically becomes inactive
2. Customers see "Payment limit reached" error message
3. No more payments can be accepted
4. Analytics show "Limit reached" badge in red
5. You can reactivate by editing the link and increasing the limit
All existing analytics data is preserved when the limit is reached.
Yes! Edit the smart link and modify the payment limit settings. You can:
* Change from unlimited to limited (or vice versa)
* Increase or decrease the limit number
* Switch between one-time and multiple payments
However, existing payment counts remain. If a link already has 5 payments and you set the limit to 3, it will immediately be marked as "limit reached".
When you select a customer to send a smart link to, two additional options appear:
* **Apply Tag to Customer**: Adds a Customer-type tag to the customer's profile after payment
* **Remove Tag from Customer**: Removes an existing tag from the customer after payment
Both actions are optional and can be combined. For example, you can remove "Trial User" and add "Paid Customer" in one payment action.
The customer tag action fields only appear when you:
1. Select a customer in "Send smart payment link to customer"
2. The tag dropdowns then become visible
These features are designed for targeted, customer-specific payment links where you want to automate customer status updates.
The "Remove Tag from Customer" dropdown is smart - it only shows:
* Tags that the selected customer currently has
* Plus any tag you've selected in "Apply Tag" (since it will be added)
This prevents confusion and ensures you can only remove tags the customer actually has. If the customer has no tags, you'll see "This customer has no tags to remove".
Yes! You can create new tags directly from the smart link form:
1. Click "Create New Tag" in the Smart Link Tags section
2. Enter a name and choose a color
3. Click "Create Tag"
The new tag is immediately created and selected. This works for Smart Link tags during creation and editing, as well as in the tag management modal on the detail page.
Payment reminders automatically send follow-up messages to customers who haven't paid:
1. Enable reminders when sending a smart link to a customer
2. Choose frequency: Daily, Every 2 days, Every 3 days, Weekly, or Monthly
3. Set maximum reminders (1-50)
4. Reminders are sent via the same method(s) as the original link (Email/SMS)
Reminders automatically stop when the customer pays or when the maximum limit is reached.
Yes! Edit the smart link and modify the reminder settings:
* Enable or disable reminders
* Change the frequency
* Adjust the maximum reminder count
If reminders have already been sent, you'll see a status showing how many were sent and when the next one is scheduled.
Payment reminders only appear when:
1. You select a customer in "Send smart payment link to customer"
2. You select at least one delivery method (Email or SMS)
Reminders require a customer association because they need somewhere to send the follow-up messages. Public smart links without a customer cannot have reminders.
When a customer completes payment through the smart link:
* All scheduled reminders are automatically cancelled
* No more reminders will be sent
* The reminder status shows as complete
This prevents customers from receiving unnecessary payment reminders after they've already paid.
Every time someone opens your smart link, the following is recorded:
* **Timestamp**: Exact date and time of the visit
* **IP Address**: Visitor's IP (automatically masked for privacy: last octet hidden)
* **Browser/OS**: Detected from user agent (e.g., "Chrome / Windows", "Safari / iOS")
* **Referer**: The URL the visitor came from (if available)
This data helps you understand when and how people access your payment links. All IP addresses are masked to protect visitor privacy.
The activity section on the smart link detail page has four tabs:
* **All**: Combined view of all activity types (views, payments, reminders, sent events)
* **Views**: Paginated list of all detailed view records with IP, browser, and timestamp
* **Payments**: Paginated list of all payments with customer name, amount, and status
* **Reminders**: Reminder settings summary and sent/scheduled reminder events
Each tab updates in real-time as new activity occurs. Views and Payments tabs support pagination (10 items per page).
When you create a Product Link that points to a **Security Deposit** product, the smart link becomes a deposit link. This adds a **Deposits tab** to the detail page where you can:
* View all authorization holds from customers
* See hold duration progress bars
* Capture full or partial amounts
* Release holds back to customers
* View capture history
Deposit links only accept credit card payments (required for authorization holds). See [Security Deposits →](/payment-processing/security-deposits) for full details.
When you enable **Protect with access code** on a smart link, visitors must enter the correct code before the payment page is shown:
* You set the code (or click **Generate** for a random one) when creating or editing the link
* The code is stored securely (hashed) — it can't be retrieved later, only replaced
* Visitors see a branded "Access code required" page first; once they enter the correct code, the link works normally for the rest of that browser session
* Wrong codes are rate-limited to prevent brute-force guessing
This is different from making a link inactive or reaching a payment limit — a protected link is still fully active, it just requires the code first.
Access codes are hashed when saved, so PayRequest can't show you the original code. To set a new one, edit the smart link, make sure **Protect with access code** is checked, and type a new code in the field (or click **Generate**). Saving replaces the old code immediately — anyone with the old code will no longer be able to unlock the link.
An Invoice Bundle Link groups multiple open invoices for a single customer into one payment page. Instead of chasing the customer for each invoice individually, you create one smart link that shows all outstanding invoices and lets the customer pay the total in a single transaction.
When the payment is confirmed by Mollie, **all bundled invoices are automatically marked as paid** in PayRequest — no manual reconciliation needed.
Only invoices with status **open**, **sent**, or **overdue** appear in the invoice selector. Invoices that are already **paid** or in **chargeback** status are excluded automatically.
After payment succeeds, all selected invoices are marked paid and linked to the Mollie payment ID for full audit traceability.
No. An Invoice Bundle Link is always tied to a **single customer**. When you select a different customer while creating the link, the invoice selection resets. This ensures the payment page and email are correctly addressed to the right customer.
Yes. Edit the smart link, change the invoice selection, and save. The total amount on the payment page updates automatically. If you re-send the link via the delivery methods on the edit page, the customer receives an updated email with the new invoice list and total.
The customer sees a clean, dark-themed payment page with:
* Your business name and logo
* The smart link title and optional description
* A list of all open invoices (invoice number, amount, due date, overdue badge if applicable)
* The total amount due
* A single **Pay** button that initiates a Mollie checkout
If all invoices have already been paid by the time the customer opens the link, the page shows a green confirmation instead of the pay button.
## Need Help?
Collect authorization holds for rentals and services
Configure your payment page settings
Create products for product links
Organize with tags
Create and manage invoices to bundle into payment links
Send payment links directly via SMS
Drop a file and get a product + Smart Link in one step
# SMS Payment Links
Source: https://docs.payreque.st/payment-processing/sms-payment-links
Send payment links straight to your customer's phone via SMS, and learn how SMS credits work — 1 free credit to start, plus 1 new credit for every payment you receive
# SMS Payment Links
Email inboxes get crowded — text messages get read. With SMS delivery, your payment link lands directly in your customer's messages app, with your business name as the sender. It's the fastest way to get paid when you need a customer's attention right away.
SMS delivery is available on **every PayRequest account**, no paid plan required. Sending one SMS costs **1 SMS credit** — see [How SMS Credits Work](#how-sms-credits-work) below.
## Why Send Payment Links by SMS?
Text messages are typically read within minutes — much faster than email.
The SMS arrives with your business name as the sender, so customers know it's you.
The message contains your payment link — customers tap it and pay on their phone.
The credit system keeps SMS free to use while preventing abuse.
## How It Works
Go to **Payment Page → Smart Links** and create a new link, just like you normally would.
Under **Send smart payment link to customer**, pick the customer who should receive it. The customer needs a phone number in international format (for example `+31612345678`).
Tick the **SMS** option. You'll see the phone number it will be sent to, plus how many SMS credits you have left.
As soon as you save the smart link, the SMS goes out. Your customer receives a short personal message with the payment link.
You can select **Email and SMS together**. The email is always free — only the SMS uses a credit.
## How SMS Credits Work
To keep SMS fair and free for everyone, sending works with credits:
| | |
| - | - |
| **Starting balance** | Every account gets **1 free SMS credit** |
| **Earning credits** | You earn **1 new credit for every payment you receive** — any payment, through any payment method |
| **Cost per SMS** | Sending one payment link by SMS costs **1 credit** |
| **Email delivery** | Always free and unlimited |
So the more you get paid, the more SMS messages you can send. An active business never runs out — and if you do run low, the next incoming payment tops you up automatically.
If your SMS fails to send (for example because of a network issue), your credit is automatically refunded.
### What Happens When You're Out of Credits?
When your balance reaches zero, the **SMS option is temporarily disabled** in the smart link form, and a message explains how to earn more. You don't lose anything — your smart link still works, and you can:
* Send the link by **email** instead (always free)
* Copy the link and share it any way you like
* Receive any payment — your balance goes up by 1 credit immediately
## Frequently Asked Questions
Sending a text message costs real money per message, unlike email. The credit system lets us offer SMS to every account — free of charge — while making sure it's used for genuine payment requests and not spam.
Every successful payment you receive counts: card payments, iDEAL, bank transfers, PayPal, crypto — anything that lands as a paid transaction in your account earns 1 SMS credit.
No. Credits stay on your account until you use them.
Not at the moment — credits are earned through payments only. Since every payment earns a credit back, active businesses naturally keep a positive balance.
Two possible reasons: the selected customer has no valid phone number in international format (like `+31612345678`), or your SMS credit balance is zero. The form tells you which one applies.
Check that the phone number is correct and in international format. Note that some countries (notably the United States) have strict carrier rules that can block business SMS. If an SMS can't be delivered, your credit is refunded — you can always fall back on email delivery.
## Next Steps
Everything about creating reusable, branded payment links
Automatically follow up on unpaid links
Keep phone numbers and contact details up to date
See all the ways your customers can pay
# Solana Pay
Source: https://docs.payreque.st/payment-processing/solana-pay
Accept USDC payments via QR code — customers scan with any Solana Pay wallet. No checkout form, instant settlement, 2% fee.
# Solana Pay
**Solana Pay** is an open payment standard that lets customers pay you by scanning a QR code with their Solana wallet app. The wallet reads the QR, shows the exact USDC amount to pay, and the customer approves — no typing, no copy-pasting addresses, no checkout friction.
Solana Pay appears as a dedicated payment option on your checkout page alongside iDEAL, credit card, and bank transfer — once you connect your Solana wallet in Provider Settings.
## Why Use Solana Pay
The customer opens their wallet app, points the camera at the QR code, and taps approve. No address copy-paste, no manual amount entry — the wallet fills everything in automatically.
Phantom, Solflare, Backpack, Trust Wallet, Coinbase Wallet — any wallet that supports the Solana Pay standard works out of the box. No special setup needed for your customers.
Solana confirms in under a second. The USDC is in your wallet almost immediately after the customer approves.
Solana Pay is an open protocol — not owned by PayRequest or any single company. Any wallet that implements it can pay you, and competition keeps it free.
## How to Enable Solana Pay
You just need a Solana wallet address connected to your account. That's the address customers' payments will land in.
In your PayRequest dashboard, go to **Settings → Provider Settings**.
Scroll to **Solana Wallet (P2P)** and click **Connect Solana Wallet**. Approve in Phantom, Solflare, or any compatible wallet. Your address is saved.
From now on, a **Solana Pay** card shows up in the payment method selector on your checkout page, right alongside iDEAL and bank transfer. No extra configuration needed.
The same wallet connection powers both **Solana Pay** (QR checkout) and **P2P wallet payments** (the hero send button on your page). Connect once, get both.
## How It Works for Your Customer
When a customer selects **Solana Pay** on your checkout page:
The page shows a QR code with the exact USDC amount already encoded — converted from your invoice or product price at the current EUR/USD rate.
They open Phantom, Solflare, or any Solana Pay wallet and point the camera. The wallet displays: merchant name, amount in USDC, and a single **Confirm** button.
One tap in the wallet sends the USDC. The transaction is signed and broadcast to the Solana network.
Within 1–2 seconds the checkout page shows a green confirmation. The invoice is marked paid in your PayRequest dashboard.
On mobile devices, a **"Open in wallet app"** link appears below the QR code so customers can tap directly into their wallet without needing to scan.
## Supported Customer Wallets
Any wallet that supports the **Solana Pay standard** works — which includes all major Solana wallets:
| Wallet | Where to get it |
| - | - |
| **Phantom** | [phantom.app](https://phantom.app) — most popular, recommended for new users |
| **Solflare** | [solflare.com](https://solflare.com) — full-featured, hardware wallet support |
| **Backpack** | [backpack.app](https://backpack.app) |
| **Coinbase Wallet** | Available on iOS and Android |
| **Trust Wallet** | Available on iOS and Android |
If a customer doesn't have a wallet yet, **Phantom** is the easiest to get started with — it's available on iOS, Android, and as a browser extension for Chrome, Firefox, and Brave.
## Fees
PayRequest charges a **2% platform fee** on each Solana Pay transaction, automatically split at the time of payment:
| Example | Amount |
| - | - |
| Customer pays | **100 USDC** |
| You receive | **98 USDC** |
| PayRequest fee | 2 USDC |
The split is built into the transaction itself — there's no extra step or delay. The customer also pays a tiny Solana network fee (usually under \$0.001).
No. The 2% is the only charge. No monthly fee, no currency conversion cost, no chargeback risk.
## Solana Pay vs. Other Payment Methods
| | Solana Pay | USDC on Base | iDEAL / Card | Bank Transfer |
| - | - | - | - | - |
| **How customer pays** | Scan QR in wallet | WalletConnect | Online banking / card | Manual transfer |
| **Settlement time** | \~1 second | \~1 second | 1–3 days | 1–3 days |
| **Platform fee** | 2% | 2% | Varies | Free |
| **Chargeback risk** | None | None | Yes | No |
| **Works internationally** | Yes | Yes | Limited | SEPA only |
## Connect Wallet vs. Scan QR
When a customer chooses Solana Pay on your checkout, they see two tabs:
* **Scan QR Code** — The standard Solana Pay experience. Works with any Solana Pay wallet. Recommended.
* **Connect Wallet** — Connects directly via WalletConnect. Best for customers paying from a desktop browser wallet extension who don't want to use their phone camera.
Both tabs pay USDC to the same wallet and charge the same 2% fee. The end result is identical.
## Frequently Asked Questions
USDC is a **stablecoin** — always worth \$1 USD. Unlike Bitcoin, its value doesn't go up or down. It's issued by Circle, backed by real dollar reserves, and available on most major exchanges. It's the standard currency for Solana payments.
No. Any customer with a Solana wallet and USDC can pay — no account, no signup, no email required.
They can buy USDC on any major exchange (Coinbase, Kraken, Bitvavo) and send it to their Solana wallet. Most exchanges let you withdraw directly to a Solana wallet address.
No. At the moment the QR code is generated, PayRequest converts your invoice amount to USDC at the current EUR/USD rate. The customer sees and approves the exact USDC amount. You receive that amount (minus 2%) in your wallet.
Solana transactions are irreversible. To refund a customer, send USDC directly from your wallet to their address. You can find their wallet address and transaction details in your PayRequest transaction history.
Yes — once you connect your Solana wallet in Provider Settings, Solana Pay appears on all your payment pages and checkout links automatically. No per-page setup needed.
Yes. PayRequest shows all your enabled payment methods as cards on one checkout page. The customer picks the one that works for them.
Send your USDC from your Solana wallet to an exchange account (Coinbase, Kraken, Bitvavo), sell it for EUR, and withdraw to your bank. Most exchanges process this within minutes.
## Next Steps
Set up your Solana wallet in Provider Settings to activate Solana Pay on your checkout.
The same Solana wallet also powers instant P2P payments from your payrequest.me page — no invoice needed.
Accept USDC on the Base network via WalletConnect — another crypto option alongside Solana Pay.
Get a branded link with your SOL address, QR code, and copy button — great for giveaways and tips.
See all payment methods PayRequest supports and how they compare.
# AI Prompts
Source: https://docs.payreque.st/products-and-pricing/ai-prompts
Sell your ChatGPT, Midjourney, Claude, or Suno prompts — buyers see a teaser, then pay to unlock the full prompt instantly
# AI Prompts
Turn a prompt you've engineered into a product. **AI Prompts** let you sell the exact wording you use with ChatGPT, Midjourney, Claude, Stable Diffusion, Suno, and other AI tools — customers see a short teaser you write yourself, then pay to instantly unlock the full prompt text.
AI Prompts are available on all plans. They work for prompts written for text, image, audio, or video AI tools.
Works for ChatGPT, Claude, Gemini, Midjourney, Stable Diffusion, DALL·E, Suno, Runway, and more
You write the preview text yourself — PayRequest never shows a snippet of the real prompt, so the wording stays yours until it's paid for
After payment, the full prompt appears right on the page with a one-click **Copy Prompt** button, and is also emailed as a text file
List your prompt on the PayRequest Marketplace under one of 10 categories, so people who don't already know you can discover it
## Creating an AI Prompt Product
Navigate to **Products** and click **New Product**. Select **AI Prompt** as the product type.
Pick the AI tool your prompt is written for from the dropdown, grouped by what it produces: **Text** (ChatGPT, Claude, Gemini), **Image** (Midjourney, Stable Diffusion, DALL·E, Flux), **Audio/Music** (Suno, Udio), or **Video** (Runway, Pika, Sora). This shows customers which tool to paste your prompt into.
Choose the category that best describes what the prompt helps someone accomplish — for example **Marketing & Sales**, **Image & Design**, or **Coding & Automation**. This is used to organize and filter AI Prompt listings.
Write a short (up to 280 characters) description of what the prompt does — enough to sell it without giving away the exact wording. For example: "Turns any product photo into a studio-lit ad shot — works with GPT-4o and Nano Banana." This is required, and it's the only thing customers see before they pay.
Paste the exact prompt text customers will receive after payment. This is stored privately and never shown to anyone who hasn't paid.
Enter your price and save. The product is ready to sell immediately from your shop, your PayRequest Page, or a Smart Link.
Write your teaser like ad copy, not like a summary. Describe the *outcome* the prompt produces ("turns rough notes into a polished LinkedIn post") rather than hinting at *how* it's structured — that's the part you're selling.
PayRequest never auto-generates a preview from your actual prompt text, not even a partial or masked one. If you leave the teaser blank, customers won't see anything convincing to buy — always write it yourself.
## What Buyers Experience
1. **Browsing** — customers see your teaser and the target AI model badge on the product page, so they know what they're buying and what tool to use it with
2. **Payment** — checkout works exactly like any other PayRequest product, through Mollie or your other connected payment providers
3. **Instant reveal** — right after payment, the full prompt appears on the confirmation page in a copy-friendly box with a **Copy Prompt** button
4. **Email delivery** — the same prompt is also emailed as a `.txt` file, so customers always have a backup copy
5. **Customer portal** — customers can come back to their order history at any time and copy the prompt again, in case they lose the email
## Listing on the Marketplace
Every AI Prompt product can optionally be listed on the [PayRequest Marketplace](https://payrequest.me/marketplace) — a public storefront where anyone can discover and buy products from PayRequest sellers, separate from your own shop.
Edit the AI Prompt product you want to list.
Enable the **List on Marketplace** toggle.
Pick a category from the **AI Prompts** group in the searchable category picker: Marketing & Sales, Content & Social Media, Business & Productivity, Ecommerce, Coding & Automation, Image & Design, Video & Animation, Writing & Research, Education & Career, or Audio & Music.
The category you pick here is the public **Marketplace category** used for browsing and search on payrequest.me/marketplace. It's a separate setting from the category you chose earlier on the product itself, which only affects how your own listing is organized.
## FAQ
No. The teaser is required — it's the only thing customers see before paying, and PayRequest deliberately never generates one from your real prompt text, even a partial or masked version, since that would give away the value you're selling.
Past buyers keep access to whatever version they paid for through their order history and the email they received. Editing the product updates what future buyers get.
Yes — each media type (Text, Image, Audio/Music, Video) includes an "Other" option for tools not listed by name.
No. Marketplace listing uses the same pricing and fees as selling directly from your own shop or PayRequest Page.
No. Each AI Prompt is a single prompt sold as one item, so the custom fields step and quantity selection are skipped automatically.
## Next Steps
Sell downloadable files with the same secure delivery system AI Prompts are built on
A similar teaser-then-unlock model for photos and audio tracks
Learn about all product types and settings
How customers re-copy a purchased prompt from their order history
# Booking Calendar
Source: https://docs.payreque.st/products-and-pricing/booking-calendar
Accept appointments and reservations with the booking calendar system
# Booking Calendar
Create bookable products for appointments, consultations, equipment rentals, and services. Customers select available dates and time slots during checkout.
## Overview
The booking calendar system allows you to:
* Offer time-based services and appointments
* Set available days and time slots
* Control lead time and maximum advance booking
* Manage concurrent bookings
* Automatic conflict prevention
* Protect appointments with full payment or an upfront deposit
* Record the remaining balance and cancellation policy with the order
## No-show protection
Booking products can require payment before an appointment is confirmed. Under **Booking Settings → No-show protection**, choose one of these policies:
* **Full payment**: collect the complete service price during booking.
* **Fixed deposit**: collect a set amount, such as €20.
* **Percentage deposit**: collect a percentage of the service price, such as 25%.
The checkout shows the service total, the amount due now, and the remaining balance. The booking is only confirmed after the payment succeeds. The order keeps a snapshot of all three amounts, so later product price changes do not alter an existing booking.
You can also set a free-cancellation window and a customer-facing cancellation policy. If no custom policy is entered, PayRequest shows the configured number of hours.
Booking deposits are real partial payments toward a service. They are different from **Security Deposit** products, which authorize a temporary card hold that can later be captured or released.
## Creating a Booking Product
### Step 1: Create the Product
1. Navigate to **Products** → **New Product**
2. Select **Booking** as the product type
3. Fill in product details:
* **Name**: e.g., "1-Hour Consultation"
* **Description**: What the booking includes
* **Price**: Amount per booking
### Step 2: Configure Availability
#### Available Days
Select which days of the week accept bookings:
* **Weekdays Only**: Monday through Friday (default)
* **Custom Selection**: Choose specific days
* **Every Day**: Include weekends
#### Time Slots
Define when bookings can be made:
```
Morning: 09:00 - 12:00
Afternoon: 13:00 - 17:00
Evening: 18:00 - 21:00
```
**Multiple Time Ranges**: Add separate slots for different periods (e.g., skip lunch hours).
### Step 3: Booking Rules
| Setting | Description | Default |
| - | - | - |
| **Slot Duration** | Length of each booking in minutes | 60 min |
| **Buffer Time** | Break between bookings | 0 min |
| **Lead Time** | Minimum hours before booking | 24 hours |
| **Max Advance** | How far ahead customers can book | 90 days |
| **Max Concurrent** | Bookings allowed per slot | 1 |
## Configuration Options
### Slot Duration
The length of each booking appointment:
* **15 minutes**: Quick consultations
* **30 minutes**: Standard meetings
* **60 minutes**: Full sessions (default)
* **120+ minutes**: Extended services
### Buffer Time
Time between bookings for preparation:
* **0 minutes**: Back-to-back bookings allowed
* **15 minutes**: Quick cleanup/prep
* **30 minutes**: Standard buffer
### Lead Time
Minimum notice required before a booking:
* **1 hour**: Same-day appointments
* **24 hours**: Next-day minimum (default)
* **48 hours**: Two-day notice
* **72+ hours**: Advance planning required
### Maximum Advance Days
How far in the future customers can book:
* **7 days**: Week ahead only
* **30 days**: Month ahead
* **90 days**: Quarter ahead (default)
* **365 days**: Year ahead
### Concurrent Bookings
How many bookings can overlap in the same time slot:
* **1**: One customer per slot (default)
* **2-5**: Small group sessions
* **10+**: Larger capacity events
## Customer Experience
### Shop View
When customers view a booking product:
1. **Calendar Display**: Interactive calendar showing available dates
2. **Unavailable Dates**: Grayed out (fully booked, closed days, past dates)
3. **Date Selection**: Click to see available time slots
4. **Time Slots**: Select from available times
5. **Add to Cart**: Booking added with date/time
### Checkout
Booking details displayed in cart:
* Product name
* Selected date
* Selected time
* Duration
* Price
### Confirmation
After payment:
* Booking confirmation email sent to customer
* Booking appears in your dashboard
* Calendar automatically updated
## Managing Bookings
### Dashboard View
Navigate to **Orders** to see bookings:
* Filter by booking status
* View booking details
* Customer information
* Date and time
### Booking Statuses
| Status | Description |
| - | - |
| **Pending** | Awaiting payment confirmation |
| **Confirmed** | Payment received, booking active |
| **Completed** | Appointment has occurred |
| **Cancelled** | Booking was cancelled |
| **No Show** | Customer didn't attend |
### Updating Bookings
From the order details:
* View customer contact information
* Add internal notes
* Update booking status
* Cancel if needed
## Payment Page Bookings
Booking products also work on payment pages:
1. Share payment page link with product parameter
2. Customer sees booking calendar on payment page
3. Selects date and time
4. Completes payment
5. Booking confirmed
## Best Practices
Give yourself enough notice to prepare for appointments
Add buffer between bookings for breaks and prep work
Don't allow bookings too far ahead if your schedule changes
Set up email reminders for upcoming bookings
## Use Cases
### Consultations
* **Duration**: 30-60 minutes
* **Lead Time**: 24-48 hours
* **Buffer**: 15 minutes
* **Concurrent**: 1
### Equipment Rentals
* **Duration**: Full day (480 minutes)
* **Lead Time**: 24 hours
* **Buffer**: 0 (overnight return)
* **Concurrent**: Based on inventory
### Group Classes
* **Duration**: 60-90 minutes
* **Lead Time**: 2-4 hours
* **Buffer**: 30 minutes
* **Concurrent**: Class capacity (e.g., 10)
### Meeting Rooms
* **Duration**: 30-60 minute blocks
* **Lead Time**: 1 hour
* **Buffer**: 15 minutes
* **Concurrent**: 1 per room
## Timezone Handling
All bookings use your configured timezone:
* **Default**: Europe/Amsterdam
* **Display**: Times shown in customer's local context
* **Storage**: All times stored in configured timezone
**Timezone Consistency**: Ensure your booking timezone matches your business location to avoid confusion.
## Integration with Orders
When a booking is purchased:
1. **Order Created**: Contains booking details in order items
2. **Booking Record**: Separate booking record created
3. **Calendar Updated**: Slot marked as taken
4. **Notifications**: Confirmation emails sent
For subscription products with booking:
* Initial booking made at checkout
* Recurring bookings handled separately
## Troubleshooting
### No Available Slots Showing
* Check if all days are marked as unavailable
* Verify time slots are configured
* Ensure lead time isn't too long
* Check if max advance days is too short
### Double Bookings
* Verify max concurrent is set to 1
* Check buffer time settings
* Ensure proper slot duration
### Booking Not Created After Payment
* Check webhook is receiving payments
* Verify product type is "booking"
* Review order for booking data
## Related Topics
Set up different product types
Manage orders and bookings
Accept bookings via payment links
Customize booking confirmations
# Commissions
Source: https://docs.payreque.st/products-and-pricing/commissions
Sell custom-scoped creative and freelance work with a starting price, not a fixed one
# Commissions
Commissions are for work where the final price depends on what the customer actually needs — illustrations, tattoo designs, custom development, and other bespoke creative or freelance work. Unlike a regular product, a commission is listed with a **starting price** and can be adjusted once you've discussed the details with the customer.
Commissions are a product type, so they show up in your existing product catalog and on your [PayRequest Page](/shop-and-checkout/sales-page-styling) — no separate setup required.
## Overview
The price you set is shown to customers as "From €X" — not a fixed, final amount
Listings are automatically marked with a pink "Commission" badge on your storefront
Optionally show customers how long the work usually takes
A flat 2% fee, capped at €25, applies to commission sales — regardless of your plan
## How It Works
Go to **Products → New Product** and select **Commission** as the product type.
Enter the **Starting Price** — the amount you'd typically charge for a simple version of the work. Customers will see this as "From €X".
On the **Commission Details** step (or tab, when editing), add a **Typical turnaround** note like "5-7 business days" so customers know what to expect.
The commission appears on your PayRequest Page with a pink "Commission" badge, the "From €X" price, and your turnaround note underneath.
Once a customer buys, get in touch to confirm exactly what they need. If the final scope costs more than the starting price, send them a separate invoice for the difference.
## Setting Up a Commission Product
### Step 1: Create the Product
1. Navigate to **Products** → **New Product**
2. Select **Commission** as the product type
3. Fill in the product details:
* **Name**: e.g., "Custom Character Illustration"
* **Description**: What's included, your style, any usage rights
* **Image**: A sample of your work
### Step 2: Set the Starting Price
The **Starting Price** field works like a normal price field, but it's labeled differently and displayed differently to customers:
| Where | What customers see |
| - | - |
| Storefront card | `From €150` |
| Product detail page | `From €150` next to the Commission badge |
| Checkout | The exact starting price, charged in full at purchase |
Customers are charged the starting price shown at checkout — commissions don't pause payment for you to send a custom quote first. If the final work costs more once scoped, invoice the customer separately for the difference.
### Step 3: Add Commission Details
On the **Commission Details** step when creating (or the **Commission Details** tab when editing an existing commission product):
* A note explains that the price is shown as a starting price
* **Typical turnaround** *(optional)*: free text like "5-7 business days" or "2-3 weeks", shown under the price on your storefront and product page
## The Capped Commission Fee
Regular PayRequest transactions use your plan's fee (free plan: 2% per transaction, paid plans: 0%). Commission purchases work differently:
| Sale type | Fee |
| - | - |
| Regular product, any plan | Your normal plan fee |
| Commission product purchase | **2%, capped at €25** — regardless of plan |
| Cart with a mix of commission and regular products | Your normal plan fee (the capped rate only applies when every item in the order is a commission) |
For higher-priced commissions, the €25 cap means you keep more of what you earn — a €2,000 commission is charged €25 in fees instead of the uncapped €40 it would cost as a regular product on the free plan.
## Customer Experience
On your PayRequest Page, a commission listing shows:
1. **Commission badge** — a pink badge distinguishing it from regular products
2. **"From €X" price** — signals the price can change based on scope
3. **Typical turnaround** — if you've set one, shown just below the price
4. **Standard checkout** — customers pay the starting price like any other product
## Use Cases
* **Illustrators & artists**: Character portraits, tattoo flash designs, book covers
* **Developers**: Custom integrations, one-off scripts, small feature builds
* **Writers**: Copywriting, ghostwriting, editing packages
* **Musicians & voice actors**: Custom tracks, jingles, voiceover work
* **Photographers**: Themed shoots, retouching packages
## Best Practices
Set your starting price for the simplest version of the work, not the average
Always fill in typical turnaround so customers know what they're waiting for
Reach out to scope the work as soon as a commission is purchased
Use a separate invoice for anything beyond the starting price once scope is confirmed
## FAQ
Yes — just treat the starting price as the final price and don't invoice for anything extra.
Commissions charge the starting price at checkout. If you need to discuss scope and pricing before any payment happens, create a [Quote](/invoices/creating-invoices) instead and mark it as a commission to get the same capped 2%/€25 fee.
Yes — the 2%-capped-at-€25 fee applies the same way across all connected payment providers.
Not yet as a dedicated feature — for now, unpublish or archive the product once you're at capacity.
## Related Topics
Set up different product types
Sell time-based appointments and services
Your public storefront where commissions are listed
Connect Stripe, Mollie, or PayPal to accept commission payments
# Creating Products
Source: https://docs.payreque.st/products-and-pricing/creating-products
Set up one-time and recurring products with AI-powered descriptions and images
# Creating Products
Create professional product listings with pricing, descriptions, and custom fields. Use AI to generate compelling product descriptions and product images instantly.
Just want to sell a single file right now? [PayRequest Upload](/products-and-pricing/quick-upload) skips this wizard entirely — drop a file, set a price, and get a link in seconds.
## Basic Product Setup
### Creating a New Product
1. Navigate to **Products** in your dashboard
2. Click **New Product** button
3. Fill in the required information:
* **Product Name**: Clear, descriptive name
* **Description**: Detailed product information (or use AI to generate)
* **Price**: Amount in EUR
* **Currency**: EUR (default)
### Product Types
**One-Time Products**
* Single purchase items
* Physical or digital goods
* Services or consultations
* No recurring billing
**Recurring Products (Subscriptions)**
* Enable **Is Recurring** toggle
* Set **Billing Interval**: Daily, Weekly, Monthly, Yearly
* Configure **Interval Count**: Charge every X intervals
* Example: "Every 3 months" = Monthly interval with count of 3
**Security Deposit Products** *(Business plan)*
* Places a temporary authorization hold on the customer's credit card
* Amount is reserved but not charged until you capture it
* Configure hold duration (1-28 days), partial capture, and deposit instructions
* Credit card only — other payment methods are hidden automatically
* Best for: Hotels, car rentals, equipment rentals, Airbnb deposits
* See [Security Deposits →](/payment-processing/security-deposits) for full documentation
**Digital Products**
* Choose what you sell: Obsidian vault, Notion template, e-book/PDF, design assets, spreadsheet, or another digital download
* Each choice provides matching preparation fields, format checks, and delivery instructions
* Upload files up to 500MB, or deliver a Notion or Google Sheets template link through a private buyer guide
* Customers receive secure download links after payment, with configurable limits and expiry
* See [Digital Products →](/products-and-pricing/digital-products) for preparation steps and buyer delivery details
**Pay to Unlock**
* Choose **Pay to Unlock (Image)**, **Pay to Unlock (Audio)**, or **Pay to Unlock (Video)**
* Images get an irreversible blurred preview; audio and video get physically separate teaser files
* Customers preview the content before paying, then receive the private original through a secure download link
* See [Pay to Unlock →](/products-and-pricing/pay-to-unlock) for full documentation
**AI Prompts**
* Sell a prompt written for ChatGPT, Midjourney, Claude, Suno, and other AI tools
* Customers see a teaser you write yourself, then pay to unlock the full prompt with copy-to-clipboard
* Optional listing on the PayRequest Marketplace under 10 AI Prompt categories
* See [AI Prompts →](/products-and-pricing/ai-prompts) for full documentation
**Commissions**
* For custom-scoped creative/freelance work (illustrations, tattoo designs, bespoke dev work)
* Price is shown to customers as a starting price ("From €X"), with an optional typical turnaround note
* Capped platform fee: 2%, capped at €25, regardless of your plan
* See [Commissions →](/products-and-pricing/commissions) for full documentation
**Domain Products**
* Domain registration with automatic annual renewal subscriptions
* Requires a configured provision provider (OpenProvider)
* Customers search for available domains and select TLD
* See your admin for domain provider setup
**VPN Subscriptions**
* Available in the full product wizard after connecting an active VPNresellers account
* One VPN account per subscription, delivered after confirmed payment
* Paid monthly or yearly plans with an immediate first payment; no free trials, quantity selection or customer pause
* Customers manage VPN credentials and download WireGuard, OpenVPN or VLESS configurations in the customer portal
* See [VPNresellers](/integrations/vpnresellers) for connection, billing and delivery instructions
## AI-Powered Content 🤖
Generate professional product descriptions and images with one click using AI.
### AI Descriptions
Generate compelling, sales-focused product descriptions instantly.
**How to Use:**
1. **Enter Product Name**: The AI uses your product name as context
2. **Click the ✨ AI Button**: Located in the description editor toolbar
3. **Review & Edit**: AI generates 2-3 sentences focusing on benefits
4. **Customize**: Edit the generated text to match your brand voice
**Features:**
* **Benefit-Focused**: Emphasizes what customers get, not just features
* **Professional Tone**: Persuasive but authentic copywriting
* **Concise**: 2-3 sentences for quick reading
* **Sales-Optimized**: Highlights value proposition clearly
* **Fast Generation**: Powered by GPT-4o-mini (usually 2-3 seconds)
**Example:**
```
Input: "Business Email Hosting"
AI Generated:
Business Email Hosting provides professional email addresses
with your domain name, giving your business a credible and
trustworthy image. Enjoy reliable uptime, spam protection,
and easy management while keeping customer communications
secure and organized.
```
### AI Image Generation ✨
Generate professional product images using AI - no photography or design skills needed.
**How to Use:**
1. **Enter Product Name**: A descriptive name helps generate better images
2. **Add Description** (optional): More context improves image relevance
3. **Click "Generate with AI"**: Button with sparkles icon next to the product image
4. **Wait for Generation**: Usually takes 15-30 seconds
5. **Image Saved Automatically**: Displayed immediately in the product
**Features:**
* **Professional Quality**: Modern e-commerce style with clean backgrounds
* **No Watermarks**: Clean images ready for your shop
* **Automatic Upload**: Saved directly to your product
* **High Resolution**: 1024x1024px images
* **Powered by GPT Image**: OpenAI's latest image generation model
**Best Practices:**
* Use descriptive product names (e.g., "Premium Leather Wallet" not just "Wallet")
* Add a description for more context and better results
* Works great for digital products, services, and conceptual items
* Physical product images are also generated professionally
**During Onboarding**: AI image generation is also available when creating your first product during the onboarding flow - perfect for getting started quickly!
### Best Practices for AI Content
**For Best Results:**
* Use clear, descriptive product names
* Include product type in the name (e.g., "Premium Hosting Plan" not just "Premium")
* Generate description first, then image for consistent context
* Review and customize generated content for your brand voice
* Add technical details manually after AI generation
## Advanced Product Settings
### Pricing Options
**Setup Fees**
* One-time charge added to first payment
* Perfect for onboarding or activation costs
* Can have custom name (e.g., "Installation Fee", "Borg")
**Quantity-Based Pricing**
* Allow customers to select quantity
* Total = (Base Price + Add-ons) × Quantity
* Useful for seat-based SaaS or multiple licenses
**Custom Pricing**
* Override standard price when creating subscriptions
* Add-ons markup **not included** when custom price is set
* Custom price is the final amount
### Trial Periods
Configure free trials for recurring products:
* **Trial Days**: Number of days customer can test for free
* **Trial Description**: Explain what's included in trial
* **Automatic Conversion**: Billing starts automatically after trial ends
### Custom Fields
Collect additional information from customers:
* **Field Types**: Text, email, URL, number, textarea, select, toggle
* **Markup Pricing**: Add extra charges to specific options
* **Required/Optional**: Control which fields are mandatory
* **Public/Dashboard Only**: Control where fields appear
See [Custom Fields Guide](/products-and-pricing/custom-fields) for detailed information.
### Order Creation Mode
Control when orders are created during checkout. This is especially useful for products with high abandonment rates.
**Orders at Checkout (Default)**
* Order created when customer starts checkout
* Customer registration email sent immediately
* Order confirmation email sent immediately
* Order appears in dashboard even if payment fails
* Standard behavior for most products
**Paid-Only Orders**
* Order created only after successful payment
* No emails sent until payment is confirmed
* Reduces spam from abandoned checkouts
* Cleaner order data (only paid orders)
* Recommended for high-volume or lead-generation products
**When to Use Paid-Only Orders**: If you're receiving many "Customer registered" and "New order" emails followed by "Order cancelled" notifications, switch to Paid-Only mode to reduce noise.
See [Order Management](/shop-and-checkout/order-management) for more details on how orders work.
## Product Visibility
### Public Products
* Visible in your shop
* Customers can browse and purchase
* Shown in catalog and search results
### Private Products
* Only accessible via direct link
* Not shown in shop catalog
* Perfect for custom quotes or special offers
## Product Photo Gallery
Add up to 8 photos per product instead of just one. The first photo is automatically used as the cover everywhere your product appears — shop listings, product cards, and the Marketplace. It's the same **Product Images** field as before, it just holds more than one photo now — there's no separate "gallery" to manage.
Available for every product type except **Pay to Unlock (Image)** (the preview is generated automatically), **Pay to Unlock (Audio)**, **Pay to Unlock (Video)**, and **AI Prompts**. Those keep a single image because the image itself is generated or has one specific job.
**Supported Formats**: JPG, PNG, WebP, GIF
**File Size Limit**: 2MB per photo when creating a product, 1MB per photo when editing — up to 8 photos total
### Upload Your Own Photos
* Drag and drop or click to upload — select multiple files at once
* The first photo in the gallery is always the cover shown in listings
* When editing an existing product, reorder photos with the arrow buttons or remove one with the **×** button
* New photos added while editing are appended after your existing ones and saved when you click **Save**
### Generate with AI
Don't have product photos? Use AI to generate one:
* Click **"Generate with AI"** button (sparkles icon)
* AI creates a modern e-commerce style image and adds it as your new cover photo
* Based on your product name and description
* See [AI Image Generation](#ai-image-generation-) for details
### What Customers See
Products with more than one photo show a **carousel** on your checkout page — customers click through with arrows or dots. Products with a single photo (or none) look exactly as before, so simple products stay uncluttered.
### Image Best Practices
* Use high-quality product photography when available
* Show your product from multiple angles or in different contexts
* Put your best, most representative shot first — it's the one customers see in listings
* AI-generated images work great for digital products and services
* Consistent style across all photos in the gallery
## SEO & Metadata
**URL Slug**
* Auto-generated from product name
* Can be customized for better SEO
* Use hyphens, lowercase, no special characters
**Meta Description**
* Uses product description by default
* Keep under 160 characters for search results
* Include key benefits and keywords
## Product Organization
### Categories & Tags
* Organize products into logical groups
* Use tags for filtering and search
* Create collections for promotions
* Tag-based automation for workflows
### Product Archiving
* Archive instead of deleting products
* Maintains data integrity for past orders
* Can be restored if needed
* Archived products hidden from shop
## Next Steps
Sell downloadable files with automatic delivery
Sell photos and tracks behind a free preview
Sell prompts for ChatGPT, Midjourney, Suno, and more
Skip this wizard — drop a file and get a link in seconds
Add custom fields with markup pricing
Answer common questions directly on a product page
Configure one-time setup charges
Share product links with QR codes
Sell custom-scoped creative and freelance work
## Tips & Tricks
**Quick Product Creation**: Use AI to generate both descriptions and images while you configure pricing. This saves time and ensures consistent, professional content across all products.
**AI Image Tip**: For best results with AI-generated images, use descriptive product names like "Professional SEO Consulting Package" rather than generic names like "SEO Service".
**Pricing Changes**: Modifying a product's price doesn't affect existing subscriptions. Existing customers continue paying their original price.
**Subscription Products**: Enable "Allow customers to manage subscriptions" to let customers pause, resume, or cancel their own subscriptions from the customer portal.
# Custom Fields
Source: https://docs.payreque.st/products-and-pricing/custom-fields
Collect additional customer information
# Custom Fields
Custom fields let you collect extra information from customers at checkout — sizes, colors, reference numbers, add-ons, or anything else your product needs. Some field types can also add to the price automatically.
Custom fields are configured per product, in the **Custom Fields** step of the product wizard (or the **Custom Fields** tab when editing a product).
## Field Types
A single-line text input. Good for names, references, or short notes.
A single-line input validated as an email address.
A single-line input validated as a URL.
A numeric input. Supports **per-unit pricing** — see below.
A multi-line text input for longer notes or instructions.
A list of options you define. Each option can have its own price markup.
An on/off switch — useful for optional add-ons. Can add a fixed markup when enabled.
## Adding a Custom Field
In the product wizard (or the product editor's **Custom Fields** tab), click **Add Field**.
* **Field Name** — internal identifier (letters, numbers, underscores, hyphens only — no spaces)
* **Display Label** — what the customer sees on the payment page
Pick one of the seven types above. The configuration options below change depending on the type you pick.
* **Show in Shop** — toggle whether the field is visible to customers
* **Required Field** — toggle whether customers must fill it in before paying
Fields are saved in the order you add them. Use the up/down arrows next to each field to reorder them.
## Pricing: Number Fields (Per-Unit Markup)
Number fields can add a price per unit entered — ideal for rental days, seats, or quantities of an add-on.
| Setting | Description |
| - | - |
| **Price per Unit** | Amount added to the total for each unit the customer enters |
| **Min** | Minimum value the customer can enter |
| **Max** | Maximum value the customer can enter |
**Example:** A number field called "Rental Days" with a **Price per Unit** of €16 — a customer entering `5` adds €80.00 to the total (5 × €16.00).
You can pre-fill and lock a number field's value using a [dynamic payment link](/payment-processing/payment-page-dynamic-links) with `customfield_fieldname=5&disabled=true`.
## Pricing: Dropdown Options
For **Dropdown (Select)** fields, add one or more options, each with:
| Setting | Description |
| - | - |
| **Label** | What the customer sees in the dropdown |
| **Value** | The internal value stored with the order |
| **Markup** | Price added to the total when this option is selected |
**Example:** A "Size" dropdown with options Small (€0 markup), Medium (€5 markup), Large (€10 markup).
## Pricing: Toggle Fields
Toggle fields can add a fixed price when switched on:
| Setting | Description |
| - | - |
| **Price when enabled** | Amount added to the total when the customer turns the toggle on |
| **Default on** | Whether the toggle starts enabled by default |
## Where Custom Fields Appear
Custom fields are shown in the **Additional Information** section on the payment page, alongside the product. Their values are stored with the order and visible on the order detail page in your dashboard.
Custom field values can also be pre-filled and locked via URL parameters on a [dynamic payment link](/payment-processing/payment-page-dynamic-links) using the `customfield_*` prefix.
## FAQ
Yes. Use the up/down arrow buttons next to each field in the product editor to change the order they appear on the payment page.
Yes. Toggle **Required Field** when configuring the field. Customers can't complete payment without filling it in.
No, markups from custom fields apply to the product price. Setup fees are configured separately — see [Setup Fees](/products-and-pricing/setup-fees).
Turn off **Show in Shop** to hide a field from customers while keeping it configured — useful if you want to enable it later or use it only via a dynamic link with a pre-filled value.
## Next Steps
Learn about all product types and settings
Pre-fill and lock custom field values via URL
Let customers buy multiple units of a product
Configure one-time setup charges
# Custom Pricing
Source: https://docs.payreque.st/products-and-pricing/custom-pricing
Offer contract product and domain prices to selected customers
## Overview
Price lists let you offer negotiated prices to one or more customers without changing the public product or domain price. Customers receive their custom prices after signing in to the customer portal. Guests continue to see the regular catalog price.
## Create a Price List
1. Open **Settings → Custom Pricing**.
2. Select **New**, enter a recognizable internal name, and assign the customers who should receive it.
3. Set a priority. When a customer has multiple matching lists, the active list with the highest priority wins.
4. Save the price list.
## Add Product Prices
Select a product and enter its contract price. You can optionally override its one-time setup fee. Prices are stored as decimal currency amounts; for example, enter `5.00` for €5.00.
## Add Domain Prices
Select a TLD and enter one or more prices for registration, renewal, or transfer. A blank operation falls back to the regular TLD price.
For example, a `.nl` registration price of €5.00 on a price list assigned to a hosting partner does not change the regular €8.00 public price.
## How Prices Apply
* The customer must be signed in and belong to the same business as the price list.
* Checkout verifies the current contract price on the server.
* Orders and subscriptions keep a snapshot of the accepted price.
* Disabling a price list immediately restores normal prices for new checkouts.
* Existing subscriptions retain their agreed recurring amount.
Coupons and custom-field markups remain separate from contract pricing. A price list changes the base product or domain price.
# Digital Products
Source: https://docs.payreque.st/products-and-pricing/digital-products
Prepare and sell Obsidian vaults, Notion templates, e-books, design assets, and spreadsheets with secure delivery after payment
# Digital Products
Sell digital files and deliver them automatically to customers after payment. Upload your file once, and PayRequest handles secure download links, expiry, and download limits for every purchase.
Digital products are available on all plans. Supported file types include documents, archives, images, audio, video, 3D, and font files — up to **500MB** per file. See the full list below.
Customers receive download links instantly after payment — on the success page and in their email
Unique tokens per purchase with configurable download limits and expiry dates
See how many times each file was downloaded, with per-token and per-product statistics
Downloads accessible from success page, order email, customer portal, and direct link
## Creating a Digital Product
Navigate to **Products** and click **New Product**. Select **Digital** as the product type.
In the product details step, search for or select **Obsidian vault**, **Notion template**, **E-book / PDF**, **Design assets**, **Spreadsheet**, or **Other digital download**.
Your choice changes the preparation fields, accepted formats, file checks, and what the buyer receives.
Follow the instructions for your product below. Upload a file up to **500MB**, or enter a supported template link. Add any requested software requirements, usage terms, and buyer instructions.
Where a buyer guide is generated, open **Preview the guide your buyer receives** to review it before continuing.
Enter the price, currency, and applicable tax rate for the digital product.
Set how customers can access the file after purchase:
* **Max Downloads** — How many times a customer can download the file (1-100, default: 5)
* **Link Expiry** — How many days the download link stays active (1-365, default: 30 days)
Save the product and make it visible in your shop. Customers can now purchase and receive the file automatically.
## Prepare Your Product
| What you sell | What you provide | What the buyer receives |
| - | - | - |
| Obsidian vault | Vault ZIP and plugin/theme requirements | Original vault files plus a getting-started guide in a ZIP |
| Notion template | Published template link, or a prepared buyer guide | A text guide with the link and duplication steps, or your uploaded guide |
| E-book / PDF | PDF, EPUB, or a ZIP containing your editions | Your uploaded book file or bundle |
| Design assets | Source-file ZIP, required software, and your usage terms | Source files and a buyer guide in a ZIP |
| Spreadsheet | XLSX, CSV, or a Google Sheets template link | A file package with instructions, or a text guide with the online template link |
| Other digital download | A supported file | Your original uploaded file |
### Obsidian Vaults
1. Create a ZIP of the vault folder, keeping Markdown notes, attachments, and subfolders together.
2. Include the hidden **.obsidian** folder if your product includes vault settings. Check the vault for personal notes and account details before packaging it.
3. Upload the ZIP. PayRequest checks that it contains Markdown notes and shows whether settings are included.
4. Enter the required plugins and theme, or enter **None** when none are needed.
5. Add any extra setup instructions and preview the generated guide.
The delivered ZIP preserves your original files and adds instructions for extracting the vault and opening its folder in Obsidian. Existing guide files are not overwritten.
### Notion Templates
1. Publish the template page in Notion and enable **Duplicate as template**.
2. Choose **Template link and instructions** and paste its published `notion.site` or `notion.so` HTTPS link.
3. Test the link with another account. Confirm that the buyer can duplicate the template into their workspace, then check the confirmation box in PayRequest.
4. Add any extra instructions and preview the guide.
After payment, the buyer downloads a text guide containing your link and duplication instructions. If you already have a PDF or another supported guide containing the link, choose **Upload a prepared buyer guide** instead.
If you also sell the template through Notion Marketplace, use a separate published copy for PayRequest buyers. Notion's paid Marketplace link may lead to its own checkout, and its access-locking feature does not apply to third-party sales. See [Notion's template-selling guide](https://www.notion.com/help/selling-on-marketplace).
### E-books and PDFs
Select the delivery format before uploading:
* **PDF** for a fixed page layout.
* **EPUB** for e-reader apps.
* **PDF and EPUB bundle (ZIP)** to deliver editions together. The archive must contain at least a PDF or EPUB file.
The uploaded extension must match your selection. PayRequest checks the PDF signature or basic EPUB structure; these checks do not replace reviewing the book in a reader app. Your book file is delivered unchanged.
### Design Assets
1. Put the editable source files and any included exports in a ZIP. For Figma, [save a local `.fig` copy](https://help.figma.com/hc/en-us/articles/8403626871063-Save-a-local-copy-of-files) and include it in the archive.
2. Specify the software and version buyers need.
3. Enter your usage terms, including permitted uses and any third-party assets buyers must license separately.
4. Add import or setup instructions and preview the buyer guide.
PayRequest includes your requirements, terms, and instructions in the delivered ZIP. It does not supply a license on your behalf or verify compatibility with every design application.
### Spreadsheets
Choose the format that matches your product:
* **Excel (.xlsx)**: upload the workbook and specify the software/version buyers need. PayRequest checks the basic workbook structure.
* **CSV data file**: upload a non-empty CSV text file. Use this for tabular data; CSV does not retain workbook formatting or multiple sheets.
* **Google Sheets template link**: paste the spreadsheet's HTTPS link from `docs.google.com/spreadsheets/d/...`.
For Excel and CSV, PayRequest packages the file with a getting-started guide and your instructions.
For Google Sheets, set **General access** to **Anyone with the link**, choose **Viewer**, and allow copying. Test the link with another account and confirm that a copy can be made. The buyer receives a text guide with the link and instructions to use **File > Make a copy**. Keep edit access to your original restricted.
PayRequest checks template-link formats, but you must test sharing permissions in Notion or Google Sheets. Download limits protect access to the delivery file; they do not prevent a buyer from sharing a template link they have already received.
### File Checks and Upload Issues
For the prepared vault, design, e-book, and spreadsheet flows:
* The uploaded file must match the selected format.
* Archives must be readable and unencrypted, without unsafe paths or symbolic links.
* Inspected archives may contain up to **10,000 entries** and **2 GB** of unpacked data. The upload itself must still be no larger than **500MB**.
* An Obsidian archive needs Markdown notes; a design archive needs files; an e-book bundle needs a PDF or EPUB.
If a check fails, correct or replace the file before creating the product. These are basic format checks, not a guarantee that formulas, plugins, or book formatting work correctly.
## Supported File Types
**Other digital download** accepts a single file up to **500MB** in the following formats. The preparation flows above use their own format choices:
| Category | Extensions |
| - | - |
| Documents & archives | pdf, zip, rar, 7z, tar, gz, epub, mobi, doc, docx, xls, xlsx, ppt, pptx, txt, csv, srt |
| Images & design files | png, jpg, jpeg, gif, webp, psd, ai, indd, sketch, fig |
| Audio | mp3, wav, flac, m4a, ogg, midi, mid |
| Video | mp4, mov, webm |
| 3D & CAD | fbx, obj, glb, gltf, blend, stl, dwg |
| Fonts | ttf, otf, woff, woff2 |
To bundle multiple files or file types together, package them into a single ZIP archive and upload that instead.
## How Delivery Works
When a customer purchases a digital product, PayRequest automatically creates a unique download token for them. Here's what happens:
1. **Customer pays** — The payment is confirmed through your supported checkout provider
2. **Token created** — A secure, unique download link is generated with the limits you configured
3. **Instant access** — The download link appears immediately on the payment success page
4. **Email delivery** — The order confirmation email includes the download link
5. **Portal access** — The customer can re-download from their order history in the customer portal
Download links work across all your domains — your main PayRequest domain, custom domains, and the payrequest.me PayRequest Page. Customers always get a working link regardless of where they purchased.
## Managing Digital Files
### Replacing a File
To update the file for an existing digital product:
1. Go to **Products** and open the product
2. Click **Edit** and navigate to the **Digital File** tab
3. Upload the new file — the old file is automatically removed
4. Click **Save**
New purchases and existing valid download tokens use the current file for the product. Replacing the file does not reset existing download limits or expiry dates.
The product editor replaces the complete delivery file. For vaults, design packs, and spreadsheets, include the buyer guide and usage terms in your replacement ZIP. For a template-link product, upload an updated buyer guide containing the new link. The preparation wizard applies when creating a new product.
### Removing a File
In the **Digital File** tab of the product editor, click **Remove** next to the current file. You'll be asked to confirm before the file is deleted.
Removing a digital file means existing download tokens for that product will no longer work. Make sure all customers have downloaded their files before removing.
## Download Limits & Expiry
Each purchase creates a download token with its own limits:
| Setting | Default | Range | Description |
| - | - | - | - |
| **Max Downloads** | 5 | 1-100 | Number of times the customer can download |
| **Link Expiry** | 30 days | 1-365 days | How long the link stays active |
When a customer reaches the download limit or the link expires, they see a message explaining that the download is no longer available.
Set generous download limits (5-10) so customers can download on multiple devices. The expiry period ensures links don't stay active indefinitely.
## Tracking Downloads
### Product Detail Page
Open any digital product to see download statistics in the sidebar and the **Details** tab:
* **Tokens issued** — Total number of download tokens created
* **Total downloads** — How many times the file was downloaded across all customers
* **Active tokens** — Tokens that are still valid
* **Exhausted tokens** — Tokens that have expired or reached their download limit
### Order Detail Page
Open any order containing a digital product to see a **Digital Downloads** card with:
* File name and download count per token
* Expiry date
* Status (Active, Expired, or Limit Reached)
* A **Copy Link** button to share the download URL with the customer
### Customer Portal
Customers can view and download their digital files from their order detail page in the customer portal. They can see:
* Remaining downloads
* Expiry date
* Download button (when the token is still valid)
## Payment Page Preview
When customers view a digital product on the payment page, they see an **Includes digital file** card showing the filename and an **Instant download** badge. This helps set expectations before purchase.
## Email Delivery
Order confirmation emails automatically include download links for any digital products in the order. The links appear in a **Your Downloads** section with the filename for each product.
Download links in emails use the same token-based system. They count toward the same download limit as the success page and customer portal links.
## FAQ
Currently, each digital product supports one file. To bundle multiple files, create a ZIP archive containing all files and upload that.
You can view the customer's download token on the order detail page. If they need more access, you can share the download link directly — or they can re-purchase the product for a new token.
Yes. Files are stored on encrypted cloud storage and can only be accessed through valid download tokens. Direct access to the storage is not possible.
Yes. Changes to download settings apply to all future purchases. Existing tokens keep the limits they were created with.
Yes. Download links work on all domains — your PayRequest dashboard, payrequest.me PayRequest Pages, and custom domains.
## Next Steps
Sell photos and tracks behind a free preview
Sell prompts for ChatGPT, Midjourney, Suno, and more
Drop a file and get a payment link in seconds, no wizard needed
Learn about all product types and settings
Configure your shop to showcase digital products
Customize order confirmation emails
How customers access their downloads
# Pay to Access
Source: https://docs.payreque.st/products-and-pricing/pay-to-access
Sell usage-metered access to your own app or website — issue a code that locks itself out after N uses, verified by your own backend via a public API
# Pay to Access
**Pay to Access** sells metered access to something you host yourself — a web app, a members' page, anything outside PayRequest. After payment, PayRequest issues a random access code with a usage limit (e.g. "5 uses"). Your own backend calls PayRequest's public API each time someone tries to use the code — PayRequest tracks how many uses are left and locks the code out once the limit is reached.
Pay to Access is available on all plans. Product type: `pay_to_access`.
Unlike Digital Products or Pay to Unlock, nothing is uploaded or stored — PayRequest only issues and tracks the access code
Your app decides what "access" means (a login, an API call, a page view) — PayRequest just answers "is this code still valid?"
Caps the *number of uses*, not just a subscription window — "paid for 5 logins" locks after the 5th, however many people share the code
If a code leaks or an order is refunded, revoke it from the order detail page and it stops working immediately
## Setting Up a Pay to Access Product
Navigate to **Products** and click **New Product**. Select **Pay to Access** as the product type.
Under **Access Settings**, set **Max Uses** (how many times the code can be verified before it locks) and **Code Expiry** (how many days the code stays active).
Enter the price and save. No file upload is required — there's nothing to store.
In your own app's backend, call the verify/consume API below at the moment you want to check or burn a use.
## How Delivery Works
1. **Customer pays** — Payment is processed through Mollie.
2. **Code generated** — A random 64-character access token is created with the configured `max_uses` and `expires_at`.
3. **Shown immediately** — The code appears in a copyable "Your Access Code" card on the payment success page, right away — no need to wait for email.
4. **Email delivery** — The order confirmation email also includes the access code (`{{access_codes}}` template variable), so the customer has a backup copy.
5. **Your app verifies it** — Your backend calls the public API below to check the code and burn a use.
## Integrating with Your App
These two endpoints are **public and require no OAuth token** — the 64-character code itself is the only secret, the same trust model as PayRequest's existing digital download links. Call them from your own server (not client-side JavaScript, so the code isn't exposed in browser devtools).
Unlike the rest of `/api/v1`, these endpoints do not use OAuth. Do not send your PayRequest API token to them — they only need the access code.
### Verify (read-only)
Check whether a code is currently valid without consuming a use. Use this to show "you have 3 uses left" before deciding whether to actually grant access.
```bash theme={null}
POST /api/v1/access-tokens/{token}/verify
```
The 64-character access code the customer entered
```bash theme={null}
curl -X POST "https://payrequest.app/api/v1/access-tokens/YOUR_CODE_HERE/verify" \
-H "Accept: application/json"
```
**Valid code:**
```json theme={null}
{
"valid": true,
"remaining_uses": 3,
"max_uses": 5,
"expires_at": "2026-08-01T00:00:00+02:00"
}
```
**Invalid code:**
```json theme={null}
{ "valid": false, "reason": "limit_reached" }
```
`reason` is one of: `not_found` (404), `expired` (403), `revoked` (403), `limit_reached` (403).
### Consume (burns one use)
Atomically burns one use of the code. Call this the moment you actually grant access (e.g. right when the customer's login succeeds) — every successful call permanently reduces the remaining uses. Don't call it on every page load.
```bash theme={null}
POST /api/v1/access-tokens/{token}/consume
```
The 64-character access code the customer entered
```bash theme={null}
curl -X POST "https://payrequest.app/api/v1/access-tokens/YOUR_CODE_HERE/consume" \
-H "Accept: application/json"
```
**Successful consume:**
```json theme={null}
{
"valid": true,
"remaining_uses": 2,
"max_uses": 5,
"expires_at": "2026-08-01T00:00:00+02:00"
}
```
**Rejected (limit already reached):**
```json theme={null}
{ "valid": false, "reason": "limit_reached", "remaining_uses": 0 }
```
Consuming is atomic under concurrent requests — if two requests for the same code arrive at once with only one use left, exactly one succeeds and the other gets `limit_reached`. You'll never see the use count go negative or over the limit.
### Example: gating a login
```javascript theme={null}
// Your app's backend, at the moment a customer tries to log in
const response = await fetch(
`https://payrequest.app/api/v1/access-tokens/${accessCode}/consume`,
{ method: 'POST', headers: { Accept: 'application/json' } }
);
const result = await response.json();
if (!result.valid) {
// show "code invalid / no uses left" and stop
return;
}
// grant access - result.remaining_uses tells you how many logins are left
```
## Managing Issued Codes
Open any order containing a Pay to Access product to see its issued code, remaining uses, and expiry. Two actions are available:
* **Reset** — sets the use count back to 0 and extends the expiry. Use this if a customer needs more uses.
* **Revoke** — immediately invalidates the code (e.g. it leaked, or the order was refunded). A revoked code always returns `reason: "revoked"`, even before its uses or expiry run out.
You don't need to hunt through orders to find a code, though — the product page (**Products → \[your Pay to Access product]**) lists the 20 most recently issued codes directly, each with its use count, status, a copy button, and a link to the order it came from.
## FAQ
Nothing stops that — the code isn't tied to a single device or browser. It simply stops working once `max_uses` is reached, no matter who used it or how many people shared it. This matches "you paid for 5 uses" rather than "you paid for 1 seat."
No. The access code itself is the only secret required, the same as PayRequest's `/download/{token}` links. Keep the call server-side so the code isn't exposed in browser devtools.
`verify` is read-only and never changes the remaining uses — good for showing a "uses left" counter. `consume` is the one that actually burns a use, and should only be called at the moment you grant access.
Editing the product only changes the default for *future* purchases. To change an already-issued code's limit, use Reset on the order detail page (extends expiry and zeroes the use count) — there's currently no way to change `max_uses` on an existing code without resetting it.
No. Each Pay to Access product is a single access code sold as one item, so the custom fields step and quantity selection are skipped automatically.
## Next Steps
For selling files instead of metered access
For blurred-photo/audio-preview style unlocks
Learn about all product types and settings
PayRequest's OAuth-protected billing API (separate from the Pay to Access verify/consume endpoints)
# Pay to Unlock
Source: https://docs.payreque.st/products-and-pricing/pay-to-unlock
Sell images, audio, and video behind a free preview — customers pay to unlock the full file
# Pay to Unlock
Give customers a taste for free, then charge to unlock the real thing. **Pay to Unlock** products show a safe public preview — a blurred image, a short audio clip, or a video teaser — and deliver the full file only after payment.
Pay to Unlock is available on all plans. Three content types are supported: **Images** (`unlockable`), **Audio Tracks** (`unlockable_audio`), and **Videos** (`unlockable_video`).
Customers see a blurred image, hear a short clip, or watch a video teaser before paying — enough to evaluate the content without receiving the full file
Previews are generated on PayRequest's servers from the original file. The original detail is never recoverable from the preview
Built on the same secure delivery system as Digital Products — the full file unlocks instantly after payment
No custom fields or quantity selection — Pay to Unlock products are a single item at a single price
## Pay to Unlock: Images
Upload a photo and PayRequest automatically generates a **blurred preview** to use as the product image. Customers see the blur everywhere your product appears — shop listings, product page, checkout — and only receive the sharp original after paying.
Navigate to **Products** and click **New Product**. Select **Pay to Unlock (Image)** as the product type.
Upload the original photo (JPG, PNG, WebP, or GIF, up to 25MB). This file is stored privately — it is never served directly.
Use the **Blur Level** slider (1–10) to control how much detail is hidden in the public preview. Higher levels hide more.
Enter the unlock price and save. The blurred preview is generated immediately and appears wherever the product is shown.
The blur is generated by shrinking the photo down to a tiny thumbnail and blurring that — not by applying a CSS filter to the full-size image. This means the original pixels are never sent to the browser before payment, so the blur can't be reversed with browser tools.
## Pay to Unlock: Audio Tracks
Upload a full track and PayRequest automatically generates a short, **separate preview clip** customers can listen to for free — like a stock-music or beat-marketplace preview. The full track is delivered only after payment.
Navigate to **Products** and click **New Product**. Select **Pay to Unlock (Audio)** as the product type.
Upload the full track (MP3, WAV, or FLAC, up to 100MB). It's stored privately, the same way Digital Product files are.
Use the **Free preview length** slider (5–60 seconds, default 25s) to choose how much of the track plays for free.
Upload a **Cover Image** separately from the track itself — this is the artwork shown on your shop and product pages.
Enter the unlock price and save. The preview clip is generated immediately, with the full track's and preview's lengths shown to customers (for example, "0:15 free preview of the 0:27 track").
The preview clip is always a physically shorter, separate audio file — never the full track with playback cut off in the browser. Generating it server-side (with a short fade-out at the end) means the full track's file is never exposed to anyone who hasn't paid.
### Replacing or Updating a Track
Open the product, go to the **Unlock Track** tab, and upload a new file — the old track and its preview clip are automatically replaced. Changing the **Free preview length** alone (without uploading a new file) regenerates the preview clip from the stored original at the new length.
## Pay to Unlock: Video
Upload the full MP4, MOV, WebM, or M4V and choose a teaser length. PayRequest creates a physically separate MP4 preview for the public product page; the original file remains private and is delivered only after payment.
Navigate to **Products** and click **New Product**. Select **Pay to Unlock (Video)** as the product type.
Upload an MP4, MOV, WebM, or M4V file up to 500MB. The original is stored privately and is never used as the public player source.
Use the **Free preview length** control (up to 60 seconds, default 15s) to choose how much customers can watch before buying. PayRequest detects the uploaded video's duration and never lets the teaser exceed it — a 6-second video can have a maximum 6-second teaser.
Upload a cover image for product cards and listings. The playable teaser appears on the product and checkout pages.
PayRequest generates a browser-friendly MP4 teaser. Customers can watch it immediately and pay to unlock the original video.
The teaser is a physically separate H.264/AAC MP4 at up to 720p. PayRequest never sends the full video to the browser with a client-side time limit, because that would expose the original file URL.
### Replacing or Updating a Video
Open the product, go to the **Unlock Video** tab, and upload a replacement. PayRequest removes the previous public teaser and generates a new one. Changing only the preview length regenerates the teaser from the privately stored original.
## How Delivery Works
Image, audio, and video unlock products share the same secure delivery mechanism as [Digital Products](/products-and-pricing/digital-products):
1. **Customer pays** — Payment is processed through Mollie
2. **Token created** — A secure, unique download token is generated for the original file
3. **Instant access** — The full image, track, or video is available immediately on the payment success page
4. **Email delivery** — The order confirmation email includes the download link
5. **Portal access** — Customers can re-download from their order history in the customer portal
Download limits and link expiry work exactly as they do for Digital Products, and are configurable per product under **Download Settings**.
## FAQ
For photo unlock products, the blurred version of your uploaded photo *is* the product image. For audio unlock products, the cover image is separate — it's regular artwork shown alongside the track, not something that gets blurred or unlocked.
No. The preview clip is a separate, shorter audio file rendered on PayRequest's servers — it never contains the rest of the track, so there's nothing further to extract from it.
No. The player receives only the separately generated teaser MP4. The private original is delivered through a secure download token after successful payment.
Images: JPG, PNG, WebP, GIF (up to 25MB). Audio: MP3, WAV, FLAC (up to 100MB). Video: MP4, MOV, WebM, M4V (up to 500MB).
Yes. Changing either setting regenerates the public preview from the original file — no need to re-upload.
No. Each Pay to Unlock product is a single image, track, or video sold as one item, so the custom fields step and quantity selection are skipped automatically.
## Next Steps
The delivery system Pay to Unlock is built on
The fastest way to create a Pay to Unlock link — just drop the file
Learn about all product types and settings
Configure your shop to showcase Pay to Unlock products
How customers access their unlocked files
# Product FAQs
Source: https://docs.payreque.st/products-and-pricing/product-faqs
Answer common customer questions directly on your product pages
# Product FAQs
Add a frequently asked questions section to any product so customers can understand what they are buying before they pay. FAQs are especially useful for delivery details, licence terms, refund policies, compatibility, and other questions that might otherwise delay a purchase.
Product FAQs appear on the product's dedicated public product and payment pages. They do not appear on product cards, catalog listings, or Marketplace listings.
## Add FAQs to a Product
Go to **Products**, then create a new product or open an existing product and choose **Edit**.
In the product details section, find **Frequently asked questions** and click **Add question**.
Enter a short customer-facing question. Use the rich-text editor to format the answer with headings, emphasis, lists, and links when helpful.
Add up to 20 questions. Use the up and down arrows to control their order, or use the delete button to remove one.
Save your changes. The FAQ section is shown automatically when the product has at least one complete question and answer.
## What Customers See
The section is titled **Frequently asked questions** and starts with every answer collapsed. A customer selects a question to expand its answer. Opening another question closes the previous one, keeping long product pages easy to scan on desktop and mobile.
## Writing Effective FAQs
Keep each question focused on one decision a customer needs to make. Put the most common purchase concern first and keep the answer direct.
Explain what the customer receives, how it is delivered, and when it becomes available.
State whether personal use, commercial use, redistribution, or client work is permitted.
List supported file formats, software versions, devices, or other requirements.
Set expectations about refunds, replacements, updates, and how customers can get help.
Write questions in the customer's voice, such as “What do I receive after purchasing?” instead of using an internal label such as “Delivery information.”
## Managing Existing FAQs
You can edit, reorder, add, or delete FAQs at any time from the product editor. Changes appear on the dedicated public product page after you save.
Duplicating a product does not currently copy its FAQs. Add the appropriate questions to the duplicated product separately so its answers stay accurate.
## FAQ Examples
List the exact files, service, access, or other deliverables included with the purchase.
Explain whether delivery is immediate, sent by email, available as a secure download, or arranged manually.
Summarize the licence and link to the complete terms when applicable.
Tell customers how to contact you and what information they should include in their request.
## Next Steps
Configure product details, pricing, images, and visibility
Send customers a direct product link or QR code
# Product Sharing
Source: https://docs.payreque.st/products-and-pricing/product-sharing
Share products via links and QR codes from your dashboard
## Overview
Share any product directly from your dashboard using a link or QR code. Product sharing generates a direct URL to your product's shop page that you can send to customers, post on social media, or print on marketing materials.
## How to Share a Product
1. Navigate to **Products** in your dashboard
2. Click on a product to open its detail page
3. Click the **Share** button in the header
4. A modal appears with:
* **Product URL** — Direct link to the product in your shop
* **QR Code** — Scannable code that opens the product page
* **Copy Button** — One-click copy to clipboard
The share URL uses your custom domain if configured, otherwise it uses your PayRequest subdomain.
## URL Format
**With custom domain:**
```
https://yourdomain.com/product/[product-id]
```
**Without custom domain:**
```
https://payrequest.me/shop/[your-handle]/product/[product-id]
```
## Smart Links vs. Product Sharing
| Feature | Product Share | Smart Link |
| - | - | - |
| URL type | Direct product link | Custom branded path |
| Analytics | No built-in tracking | Views, payments, conversion |
| QR code | Yes | Yes |
| Payment limits | No | Yes |
| Customizable URL path | No | Yes |
| Delivery (Email/SMS) | No | Yes |
For marketing campaigns where you need analytics and branded URLs, use [Smart Links](/payment-processing/smart-links) instead. Product sharing is best for quick, one-off sharing needs.
## Need Help?
Branded links with analytics
Product configuration
# Quantity-Based Pricing
Source: https://docs.payreque.st/products-and-pricing/quantity-based-pricing
Seat licenses and volume pricing
# Quantity-Based Pricing
Let customers choose how many units they want to buy — seat licenses, multi-packs, or anything else typically bought in bulk. The total price scales automatically with the quantity selected.
Quantity selection is on by default for **physical/general one-time and recurring products**. It's automatically turned off for product types that are inherently single-item — Digital, Pay to Unlock (Image), Pay to Unlock (Audio), Pay to Unlock (Video), Pay to Access, AI Prompts, Commissions, Deposits, Bookings, and Service products.
## Enabling Quantity Selection
In the product wizard or editor, find the **Allow customers to select quantity** toggle.
For eligible product types, this defaults to on. Turn it off if you want customers to only ever buy one at a time.
Once enabled, customers see a quantity selector on the payment page.
## How the Price Is Calculated
```
Total = (Base Price + Custom Field Markups) × Quantity
```
The customer picks a quantity on the payment page; the price updates live as they change it. Setup fees (if configured) are charged once per order, not multiplied by quantity.
**Example:** A €25 seat license with quantity selection enabled — a customer selecting **4 seats** pays **€100.00** total.
Combine quantity selection with a **Number** [custom field](/products-and-pricing/custom-fields) if you need more control over per-unit pricing tied to a specific attribute (like rental days), rather than a generic "how many of this product" quantity.
## FAQ
Any one-time or recurring product where quantity makes sense — for example general goods, seat-based subscriptions, or multi-packs. It's disabled by default (and can't be re-enabled) for inherently single-item types: Digital, Pay to Unlock (Image), Pay to Unlock (Audio), Pay to Unlock (Video), Pay to Access, AI Prompts, Commissions, Deposits, Bookings, and Service.
No. Setup fees are charged once per order regardless of the quantity selected.
Use a **Number** custom field with per-unit pricing and Min/Max settings if you need fine-grained quantity limits — see [Custom Fields](/products-and-pricing/custom-fields).
Yes — you can pass a pre-set quantity and lock it using URL parameters. See [Payment Page Dynamic Links](/payment-processing/payment-page-dynamic-links).
## Next Steps
Learn about all product types and settings
Add per-unit pricing with Number fields
Configure one-time setup charges
Pre-fill and lock quantities via URL
# PayRequest Upload
Source: https://docs.payreque.st/products-and-pricing/quick-upload
Drop a file, set a price, get a payment link — the fastest way to sell a single file on PayRequest
# PayRequest Upload
**PayRequest Upload** is a one-page, WeTransfer-style shortcut for selling a single file. Drop a file, set a price, and get a shareable payment link in seconds — no product wizard, no shop setup.
Available at [payrequest.me/upload](https://payrequest.me/upload) (also reachable at `payrequest.app/upload`). The page itself is open to everyone — you only need a PayRequest account at the final step, to publish the link.
Drag and drop almost any file type — audio, video, images, ZIPs, 3D models, fonts, design files — up to 250MB
The title is pre-filled from your filename and the file category is detected automatically — both editable
For photos and audio tracks, flip on Pay to Unlock to sell behind a free preview instead of an instant download
Behind the scenes it creates a normal product and a Smart Link for you — nothing to configure first
## How It Works
Go to [payrequest.me/upload](https://payrequest.me/upload) and drag your file into the upload box, or click to browse. Files up to 250MB are accepted, in almost any format.
PayRequest fills in a **Title** from your filename and shows the detected file category (e.g. "Audio", "Software & Code"). Adjust the title if you like.
Enter what you want to charge. Your account's currency symbol is shown automatically.
If you uploaded a photo or an audio track, a checkbox appears: **Activate Pay to Unlock (free preview)**. Turn it on to sell the file behind a blurred preview or a short audio clip instead of delivering it instantly — see [Pay to Unlock](/products-and-pricing/pay-to-unlock) for details.
Click **Generate Payment Link**. If you're not signed in yet, you'll be asked to sign in or create a free account first — see below. Once that's done, your link is ready immediately: `payrequest.me/[handle]/[filename]`.
## Signing In Partway Through
You don't need an account to fill out the form — only to publish the link. Clicking **Generate Payment Link** while signed out shows a **Sign in or create a free account to publish this link** prompt.
Signing in or registering always happens on the main PayRequest app, not on payrequest.me. Once you're authenticated there (including two-factor authentication, if you use it), you're brought straight back to finish publishing — no need to re-select your file.
If you don't have a PayRequest Page handle yet, one is created automatically so your link works right away.
## What Gets Created
Every link from PayRequest Upload is backed by two ordinary PayRequest records — nothing exotic, and both are fully visible and manageable afterwards:
| Created | Where to find it |
| - | - |
| A product (Digital Product, or Pay to Unlock if you enabled it) | **Products** in your dashboard |
| A Smart Link pointing to that product | **Payment Page → Smart Links** |
Because it's a normal Smart Link under the hood, everything documented in [Smart Links](/payment-processing/smart-links) — analytics, QR codes, payment limits, reminders — applies to links created via PayRequest Upload too.
Uploaded the wrong file, or want to change the price? Edit the product from **Products** in your dashboard — the Smart Link keeps pointing to the same URL.
## FAQ
No. You can drop a file, see the detected category, and fill in a title and price without signing in. An account is only required when you click Generate Payment Link.
Almost anything except executable and script files (for security). This covers documents, spreadsheets, presentations, images, audio, video, archives, fonts, and common design and 3D formats.
Yes — open the product from your dashboard and change its type, the same as any product created through the full product wizard.
No. It's a standard product plus a standard Smart Link — you can edit, deactivate, password-protect, or delete it exactly like any Smart Link you create manually.
## Next Steps
The delivery system behind every PayRequest Upload link
Sell photos and tracks behind a free preview
Manage, track, and customize the link PayRequest Upload created
The full product wizard, for more control
# Setup Fees
Source: https://docs.payreque.st/products-and-pricing/setup-fees
Add customizable one-time setup fees to products with custom names and descriptions
## Overview
Setup fees let you add a one-time charge on top of a product's regular price. This is commonly used for onboarding costs, installation fees, deposits (borg), or activation charges. The setup fee is charged once during the first purchase and does not repeat for subscription renewals.
Setup fees are fully customizable — you can change the name and description to match your business terminology. Instead of generic "Setup Fee", show "Borg", "Installation", "Onboarding Fee", or whatever fits your context.
## Enabling Setup Fees
### Step 1: Edit Your Product
Navigate to **Products** → select a product → **Edit**.
### Step 2: Enable Setup Fee
1. Toggle **Has Setup Fee** to on
2. Enter the **Setup Fee Amount** (e.g., €25.00)
3. Optionally customize the name and description
### Step 3: Customize Name & Description
When the setup fee toggle is enabled, two additional fields appear:
**Setup Fee Name** (Optional)
* Custom label for the fee
* Default: "Setupkosten" (Setup Costs)
* Examples: "Borg", "Installation Fee", "Onboarding", "Activation"
**Setup Fee Description** (Optional)
* Explanation shown alongside the fee
* Default: "One-time setup fee for this service"
* Examples: "Refundable deposit for equipment", "One-time professional installation"
If you leave the name and description blank, the defaults are used automatically. You only need to fill these in if you want custom terminology.
## Where Setup Fees Appear
Setup fees are displayed consistently throughout the customer journey:
| Location | What's Shown |
| - | - |
| Shop product page | Fee name + amount below the product price |
| Shopping cart | Separate line item with custom name |
| Checkout summary | Fee listed with product, before total |
| Invoice | Line item with custom name and description |
| Order confirmation | Fee amount in order breakdown |
## Common Use Cases
### Borg (Deposit)
Dutch businesses commonly use "Borg" for refundable deposits:
```
Product: Office Space Rental (€500/month)
Setup Fee: €1,000
Name: "Borg"
Description: "Refundable deposit, returned at end of contract"
```
### Installation Fee
For products requiring physical setup:
```
Product: Fiber Internet (€49.99/month)
Setup Fee: €75.00
Name: "Installatiekosten"
Description: "Professional installation at your location"
```
### Onboarding Fee
For SaaS products with initial setup:
```
Product: CRM Platform (€29/month)
Setup Fee: €199.00
Name: "Onboarding Fee"
Description: "One-time setup, data migration, and training session"
```
### Activation Fee
For services requiring account activation:
```
Product: Hosting Plan (€9.99/month)
Setup Fee: €15.00
Name: "Activation Fee"
Description: "One-time account activation and server provisioning"
```
## Setup Fees with Subscriptions
When a product has both a recurring price and a setup fee:
1. **First payment**: Regular price + setup fee
2. **All subsequent payments**: Regular price only
The setup fee is clearly separated in the cart and checkout so customers understand it's a one-time charge.
Setup fees do not affect subscription billing cycles. They are charged once at the initial purchase and never again, even if the subscription is paused and resumed.
## Frequently Asked Questions
Yes. Edit the product, enable the setup fee toggle, and set the amount. New purchases will include the fee. Existing subscriptions are not affected.
The setup fee is shown as a separate line item, not added to the product price. Customers see the product price and setup fee as distinct charges in the cart and checkout.
Yes. Each product has its own setup fee name and description fields. You can call it "Borg" on one product and "Installation" on another.
Yes. The setup fee appears as a separate line item on the invoice with your custom name and description.
## Need Help?
Learn about all product configuration options
Seat-based and quantity pricing
# Trial Periods
Source: https://docs.payreque.st/products-and-pricing/trial-periods
Offer free trials for subscriptions
# Trial Periods
Let customers try a subscription product before they're charged. Their payment method is set up when they subscribe, but the first charge only happens automatically once the trial ends.
Trial periods are only available for **recurring (subscription) products**.
## Enabling a Trial
In the product wizard's pricing step, enable **Is Recurring** and configure your billing interval.
A new section appears with trial settings.
**Trial Duration (days)** — how many days the trial lasts, from 1 to 365 days.
**Trial Description** — a short line explaining what's included, shown to the customer (e.g. "Full access for 14 days").
The trial applies to every new subscription created for this product from now on. Existing subscriptions are unaffected.
## How It Works for Customers
1. The customer subscribes and sets up their payment method (SEPA mandate, card, or other supported method) as normal
2. **No charge happens at signup** — the subscription status is `trial`
3. The customer has full access for the configured number of trial days
4. When the trial ends, PayRequest automatically charges the customer and the subscription moves to `active`
5. From then on, billing follows the product's normal billing cycle
The subscription only converts to a paid, active subscription after a **successful** payment at the end of the trial. If the charge fails, the subscription follows your normal [failed payment handling](/subscriptions/failed-payment-handling) flow instead of silently becoming active.
## Where Customers See the Trial
* The trial description (if set) is shown on the payment page when the customer subscribes
* The customer portal shows the subscription status as **Trial** with the trial end date
* Once the trial ends and payment succeeds, the status updates to **Active**
## FAQ
No. Trials only apply to recurring/subscription products, since they work by delaying the first automatic charge.
They can cancel like any other subscription — see [Cancellation Requests](/subscriptions/cancellation-requests). No charge occurs since the subscription never reached its first billing date.
No. Trial settings only apply to new subscriptions created after you enable and configure the trial — existing subscriptions keep their original terms.
Changing the trial duration on the product only affects new subscriptions going forward. Customers already in a trial keep the trial end date that was set when they signed up.
## Next Steps
Set up recurring billing for your products
Understand every subscription status, including Trial
What happens if the trial-to-paid charge fails
Learn about all product types and settings
# Duplicate Products
Source: https://docs.payreque.st/products/duplicate-products
Learn how to quickly create copies of your existing products to save time when adding similar items to your catalog
# Duplicate Products
The product duplication feature allows you to quickly create copies of your existing products, saving you time when you need to add similar items with slight variations in name, price, or other details.
## Why Use Product Duplication?
Product duplication is perfect when you need to:
* Create variations of existing products (different sizes, colors, or versions)
* Set up similar service packages with different pricing
* Add seasonal or promotional versions of products
* Create products with similar configurations but different details
## How to Duplicate a Product
### Step 1: Navigate to Your Product
1. Go to your dashboard
2. Click on "Products" in the sidebar
3. Find the product you want to duplicate
4. Click on the product to open its detail page
### Step 2: Start the Duplication Process
1. On the product detail page, look for the "Duplicate" button
2. Click the "Duplicate" button
3. A modal window will open with duplication options
### Step 3: Customize Your Duplicate
In the duplication modal, you can:
**Product Name**
* The original name is pre-filled with "(Copy)" added
* Edit the name to whatever you prefer
* Example: "Premium Plan" becomes "Premium Plan (Copy)"
**Product Price**
* The original price is pre-filled
* Change the price if needed for your variation
* Keep the same price if it's identical
**Other Settings**
* All other product settings (description, features, etc.) are copied exactly
* You can edit these after the product is created
### Step 4: Create the Duplicate
1. Review your changes
2. Click "Duplicate Product"
3. The new product will be created and you'll be redirected to it
4. Edit any additional details as needed
## What Gets Copied?
When you duplicate a product, **everything** is copied including:
### Basic Information
* Product description
* Category assignment
* Product type (physical, digital, service, subscription)
* Status (active/inactive)
### Pricing & Billing
* Tax rate settings
* Currency settings
* Subscription settings (if applicable)
* Setup fees and trial settings
### Advanced Features
* Custom fields configuration
* Stock quantity settings
* Image (if any)
* All metadata and technical settings
### What You Can Immediately Change
* **Product name** - Customize in the duplication modal
* **Price** - Adjust pricing in the duplication modal
* **Everything else** - Edit after creation
## Common Use Cases
### Creating Product Variations
**Example: T-Shirt Shop**
1. Create "Basic T-Shirt - Medium"
2. Duplicate it to create "Basic T-Shirt - Large"
3. Change only the name in the duplication modal
4. Repeat for other sizes
### Service Package Tiers
**Example: Consulting Services**
1. Create "Basic Consultation Package"
2. Duplicate to create "Premium Consultation Package"
3. Update name and price in duplication modal
4. Edit the full product later to add premium features
### Seasonal Products
**Example: Holiday Specials**
1. Have "Regular Website Design"
2. Duplicate to create "Holiday Special - Website Design"
3. Adjust price for holiday discount
4. Update description later to mention holiday terms
### Subscription Plan Variations
**Example: Software Plans**
1. Create "Monthly Plan"
2. Duplicate to create "Annual Plan"
3. Change name and adjust pricing
4. Later edit billing frequency settings
## Tips for Effective Product Duplication
### Naming Strategies
* Add descriptive suffixes: "(Large)", "(Premium)", "(Annual)"
* Use clear differentiators: "Basic vs Pro vs Enterprise"
* Include key differences in the name: "With Setup", "No Setup"
### Pricing Considerations
* Calculate variations carefully (discounts, premiums)
* Consider bulk pricing for quantity differences
* Factor in different cost structures for variations
### Post-Duplication Editing
After duplicating, remember to:
1. **Update the description** to reflect differences
2. **Change the image** if the product looks different
3. **Adjust custom fields** if they're different for this variation
4. **Review category assignment** - might belong in a different category
### Organization Tips
* Use consistent naming patterns across similar products
* Group related products in the same category
* Consider using tags to identify product families
## Advanced Workflows
### Bulk Product Creation
For creating many similar products:
1. Start with one well-configured "template" product
2. Duplicate it multiple times
3. Batch edit the copies with your variations
4. This is faster than creating each from scratch
### Testing New Products
Before launching a new product type:
1. Duplicate an existing successful product
2. Modify it to test new pricing or features
3. Launch as a test without affecting the original
4. Keep or remove based on performance
### Seasonal Campaigns
For holiday or promotional periods:
1. Duplicate your regular products
2. Add seasonal naming and pricing
3. Set them as inactive until the campaign starts
4. Activate when ready, deactivate when done
## Troubleshooting
**Q: I duplicated a product but don't see it in my list**
A: Check if the duplicate was created as "inactive". You may need to activate it in the product settings.
**Q: Can I duplicate a product to a different category?**
A: The duplicate is created in the same category as the original. You can change the category by editing the duplicated product.
**Q: What happens to custom fields when I duplicate?**
A: All custom field configurations are copied exactly. You can modify them in the duplicated product if needed.
**Q: Can I duplicate subscription products?**
A: Yes! All subscription settings are copied, including billing frequency, trial periods, and setup fees.
**Q: Is there a limit to how many times I can duplicate a product?**
A: No, you can duplicate products as many times as needed.
**Q: Can I undo a duplication?**
A: You can delete the duplicated product if you don't need it. The original product is never affected by duplication.
# Audit Logs
Source: https://docs.payreque.st/security-and-compliance/audit-logs
PayRequest's audit trail lives in the Billing Activity Log — who did what, when, and from where
# Audit Logs
PayRequest's audit trail is the **Billing Activity Log**, covered in full detail in [Billing Activity Log](/organization-and-automation/activity-tracking). This page is a short pointer for anyone specifically looking for "audit logs" from a security/compliance angle.
There isn't a separate "Audit Logs" screen — the Activity Log **is** the audit log. Every entry is immutable, timestamped, and records who performed the action, from which IP address and user agent.
## What It Covers for Compliance
Each Activity Log entry captures:
| Field | Purpose |
| - | - |
| `user_id` | Attribution — which team member (or "System" for automated/webhook actions) performed the action |
| `action` | What happened (31+ tracked event types across subscriptions, invoices, customers, payments, mandates) |
| `ip_address` | Source IP of the request |
| `user_agent` | Browser/client that made the request |
| `created_at` | Precise timestamp |
| `details` | Full JSON context (old/new values, reasons, related IDs) |
Entries cannot be edited or deleted — this is what makes the log usable as an audit record rather than just an activity feed.
## Access
Navigate to **Activity Log** in your dashboard sidebar. Standard users see only their own actions; admin users on multi-user accounts see activity from the whole team.
## FAQ
Not a one-click export today. The Activity Log is view-only in the dashboard — for a formatted compliance export, contact support.
Yes, activity logs are retained indefinitely with no automatic deletion.
## Next Steps
Full reference: event types, filtering, and examples
Secure the accounts that show up in this log
# GDPR Compliance
Source: https://docs.payreque.st/security-and-compliance/gdpr-compliance
The data protection controls PayRequest gives you as a data controller: export, account deletion, customer archiving, and encryption at rest
# GDPR Compliance
PayRequest is the tool you use to run your billing — for GDPR purposes, **you** (the business using PayRequest) are typically the data controller for your customers' data, and PayRequest acts as a data processor. This page describes the concrete technical controls PayRequest provides; it isn't a legal statement that PayRequest or your use of it is fully GDPR compliant. Talk to your own legal advisor about what your business specifically needs.
PayRequest does not currently offer a self-service "delete this customer's data" or "export this customer's data" tool for a single customer record. The controls below operate at the account level (your own PayRequest account) or as bulk exports, not as a per-customer erasure/portability workflow.
## Data Controls Available Today
From **Bulk Actions**, you can export customers, subscriptions, products, invoices, and orders as CSV — useful for data portability requests or your own records, covering the fields you'd need to hand over (name, email, phone, company, tags, etc. for customers).
From a customer's record, you can archive them (with a reason and note). This flags the customer as inactive and hides them from active lists — it does **not** delete or anonymize their underlying data. All order, invoice, and subscription history for an archived customer remains intact and can be restored by reactivating them.
From **Settings → Delete Account**, typing `DELETE` to confirm permanently deletes your PayRequest login, removes your API tokens, and removes your profile photo. This is account-level and applies to your own PayRequest user account.
Add [2FA](/security-and-compliance/two-factor-authentication) to reduce the risk of unauthorized access to the customer data stored in your account.
## What's Encrypted at Rest
* Two-factor authentication secrets and recovery codes.
* API keys, OAuth access tokens, and refresh tokens for connected services and payment providers.
* Card data is never stored in the first place — see [PCI Compliance](/security-and-compliance/pci-compliance) for how card payments are handled entirely by your connected payment processor.
## Multi-Tenant Data Isolation
Every business's data — customers, orders, invoices, subscriptions — is scoped to that business's account. One PayRequest user cannot query or see another business's customer records.
## FAQ
Not as a one-click action. Archiving a customer hides them from active views but keeps their records (needed for invoicing/tax history in most jurisdictions). For a request to fully delete a specific customer's data, contact support to discuss options.
Customers can view and download their own invoices and order history from the customer portal. There isn't a dedicated "download all my data" export button distinct from that.
Deleting your account removes your own login and account access. Before deleting your account, export any data you need to retain — see the export step above.
Contact support directly for DPA requests — this isn't something documented as a self-serve download at this time.
PayRequest's database runs on a Hetzner server in the EU. For specifics relevant to your compliance obligations, contact support.
## Next Steps
How card payment data is handled
Track who accessed or changed what
Add a second login factor
Reach support for data requests
# PCI Compliance
Source: https://docs.payreque.st/security-and-compliance/pci-compliance
How PayRequest handles card payment security: PayRequest never collects, transmits, or stores raw card numbers
# PCI Compliance
PayRequest is a billing platform, not a card processor. Every payment method that involves a card — one-time payments and recurring mandates alike — is handled entirely by the connected payment provider (primarily [Mollie](/payment-processing/setting-up-payment-providers), with Stripe, PayPal, and Payoneer available as alternatives). This is a deliberate architecture choice, not just a policy: it's how the checkout code actually works.
PayRequest itself does not hold a PCI DSS certification. What follows describes the technical measures in place — Mollie, PayRequest's primary processor, is PCI DSS Level 1 certified for the card data it handles on your behalf. Talk to your own compliance advisor about what this means for your specific business and jurisdiction.
## How Card Data Actually Flows
At checkout, PayRequest never renders a card number, expiry, or CVC input field — there is no such form anywhere in the product. Payment collection happens on the processor's own hosted page.
PayRequest creates a payment with Mollie (or Stripe/PayPal/Payoneer) and redirects the browser to the `checkoutUrl` / `returnUrl` returned by that provider's API. The customer enters their card details directly on the provider's hosted, PCI-compliant page — never on a PayRequest-controlled page.
Once payment completes, the provider sends a webhook with the payment status and a masked reference (e.g. a mandate ID or last-4 digits) — never the full card number.
For saved payment methods (mandates), PayRequest stores the provider's mandate ID and the masked card summary it returns (card brand + last 4 digits) so customers can recognize their saved method — for example `•••• 4242`. The full card number and CVC are never transmitted to or stored by PayRequest at any point.
## What This Means in Practice
| Question | Answer |
| - | - |
| Does PayRequest ever see a full card number? | No — card entry happens on the processor's hosted checkout, outside PayRequest's servers. |
| Does PayRequest store CVC/CVV? | No — CVC is never collected by PayRequest and is not a field that exists anywhere in the codebase. |
| What does PayRequest store for a saved card? | The processor's mandate/token ID and a masked display value (card brand, last 4 digits) — sufficient to show it in the customer's saved payment methods, not to reconstruct the card. |
| Are provider API credentials protected? | Yes — connected-provider API keys, OAuth access tokens, and refresh tokens (Mollie, and other integrated services) are encrypted at rest before being written to the database. |
| Is this true for every supported payment method? | Yes for card-based methods across all supported processors — Mollie, Stripe, PayPal, and Payoneer are all integrated via redirect/hosted-checkout flows, not embedded card forms. |
## Reducing Your Own Risk
Add 2FA to your dashboard login to protect access to payment settings and customer data.
Every account and payment-related action is logged with who, what, and when.
## FAQ
PayRequest does not directly handle raw cardholder data — that happens on the payment processor's infrastructure. This significantly reduces PayRequest's own PCI scope, but PayRequest doesn't claim its own PCI DSS certification. The certification applies to Mollie (and other connected processors) for the systems that actually touch card data.
A mandate/token reference and a masked summary (card brand and last 4 digits) returned by the processor — never the full PAN, expiry, or CVC.
Yes. Every supported card-capable processor is integrated through a redirect or hosted-checkout flow, so the same "PayRequest never touches raw card data" model applies regardless of which processor you connect.
See Saved Payment Methods for the full mandate lifecycle.
# Two-Factor Authentication
Source: https://docs.payreque.st/security-and-compliance/two-factor-authentication
Protect your PayRequest login with a TOTP authenticator app and recovery codes
# Two-Factor Authentication
Two-factor authentication (2FA) adds an authenticator-app code as a second step when logging into your PayRequest dashboard, on top of your regular magic-link/password login.
PayRequest uses passwordless (magic link) authentication for the initial login step, so enabling 2FA does not require re-entering your password to turn on or off — only the authenticator code itself is required to confirm setup.
## How It Works
Go to **Settings → Security** (`/settings?tab=2fa`).
PayRequest generates a TOTP secret and shows a QR code plus a manual setup key.
Scan the QR code with Google Authenticator (or any TOTP-compatible app) — or enter the setup key manually if you can't scan.
Enter the 6-digit code your authenticator app generates to confirm setup. Until you confirm, 2FA isn't actually active on your account.
After confirming, PayRequest generates a set of recovery codes. Store them somewhere safe (a password manager) — each one can be used once to log in if you lose access to your authenticator app.
## Logging In With 2FA Enabled
After entering your normal login credentials, you're prompted for a 6-digit code from your authenticator app. If you don't have access to your device, you can use one of your recovery codes instead.
Login attempts with a 2FA code are rate-limited to prevent brute-forcing the code.
## Managing 2FA
| Action | What it does |
| - | - |
| **Show Recovery Codes** | Reveals your current set of recovery codes (stored encrypted). |
| **Regenerate Recovery Codes** | Invalidates your old recovery codes and issues a new set — do this if you suspect a code has been exposed. |
| **Disable** | Turns off 2FA entirely and removes the stored secret and recovery codes. |
Your 2FA secret and recovery codes are encrypted at rest — they're never stored or displayed in plain text outside of the setup/recovery-codes screen itself.
## FAQ
Any standard TOTP app — Google Authenticator, Authy, 1Password, and similar all work since PayRequest uses the standard TOTP protocol.
You won't be able to complete the 2FA challenge yourself. Contact support to regain access to your account.
No, it's optional but strongly recommended, especially since your dashboard has access to customer data and payment configuration.
No — 2FA in PayRequest is for your own dashboard login. The customer-facing portal uses its own separate, session-based login.
No. PayRequest uses magic-link (passwordless) authentication, so enabling/disabling 2FA is confirmed with an authenticator code rather than a password.
## Next Steps
See every login and account change
Data protection controls for your account
# Apple Wallet Card
Source: https://docs.payreque.st/shop-and-checkout/apple-wallet-card
Carry your PayRequest Page as a card in Apple Wallet — show it to customers and let them scan to pay
# Apple Wallet Card
Add your PayRequest Page to Apple Wallet as a digital card. Instead of pulling up a QR code on screen every time, you hold one card in Wallet that you can show, AirDrop, or simply have ready on your Lock Screen whenever a customer wants to pay you.
Apple Wallet Card is available on iPhone. Android/Google Wallet support is planned for a future release.
Add your page to Wallet directly from your PayRequest Page settings — no app to install
The card includes a scannable QR that opens your PayRequest Page, just like your existing QR code
Shows your business name, handle, and tagline in PayRequest's signature blue
## How It Works
Go to **PayRequest Page** from the main menu.
Next to your QR code, click **Add to Apple Wallet**.
On iPhone, this opens the standard Apple Wallet "Add" screen. Tap **Add** to save the card.
Open the card from Wallet (or your Lock Screen) any time. Customers scan the QR code on the card with their phone camera to land directly on your PayRequest Page and pay.
## What's on the Card
| Section | Shows |
| - | - |
| Top (small text) | Your business or page name |
| Middle (large text) | Your PayRequest Page handle, e.g. `@yourname` |
| Below that | Your tagline, if you've set one in [PayRequest Page Styling](/shop-and-checkout/sales-page-styling) |
| QR code | Scans to `payrequest.me/yourhandle` — the same link as your existing QR code |
| Back of card | A tappable link to your PayRequest Page |
The card always uses PayRequest's signature blue background, regardless of your page's accent color — so it reads clearly next to the PayRequest logo no matter how you've styled your page.
## Frequently Asked Questions
Not yet. The card is generated at the moment you add it to Wallet. If you change your handle, business name, or tagline afterward, re-add the card from your PayRequest Page settings to get an updated version. Automatic live updates are planned for a future release.
The card is meant for you to hold and show to customers — they scan the QR code rather than adding the card themselves. If you'd like to share the link directly instead, use your existing [QR code](/payment-processing/qr-code-payments) or [PayRequest Page link](/shop-and-checkout/sales-page-styling).
Not yet — Google Wallet support is planned. Android users can still scan the QR code on your card or your existing PayRequest Page QR code.
No special app — Apple Wallet is built into every iPhone. Just tap **Add to Apple Wallet** from your PayRequest Page settings using Safari on your iPhone.
## Related Documentation
Customize the name, tagline, and accent color shown on your page
More ways to share your payment links via QR code
# Celebration GIF
Source: https://docs.payreque.st/shop-and-checkout/celebration-gif
Show a fun GIF to customers the moment they complete a payment — a small touch that makes paying feel great.
# Celebration GIF
When a customer finishes paying, why show them a plain checkmark when you can make them smile? The Celebration GIF feature lets you pick a fun animated GIF that plays on the payment success page — right after the money lands.
## How It Works
Once you've set a GIF, every customer who successfully pays through your PayRequest Page or invoice link will see it on the confirmation screen. It replaces the default success icon and appears above the payment details.
No extra setup needed on the customer side — it just shows up automatically.
## Setting It Up
1. Go to **PayRequest Page** in the main menu
2. Click the **Settings** tab
3. Scroll down to the **Celebration GIF** section
4. Search for a GIF or browse the suggestions (default shows celebratory and payment-themed GIFs)
5. Click any GIF to select it — you'll see a green preview confirming your choice
6. Click **Save Settings**
Search terms like "celebrate", "money", "happy", "congrats", or "party" work great for payment success moments.
## Changing or Removing a GIF
To swap the GIF, simply click a different one from the grid and save.
To remove it entirely, click the **Remove GIF** button that appears next to your active preview, then save. The success page will revert to the standard checkmark icon.
## Where Customers See It
The GIF appears on:
* **Your payment success page** — shown immediately after a customer completes payment via your PayRequest Page link
* **Your invoice payment page** — when a customer opens an invoice link (`payrequest.me/yourhandle?invoice=...`) for an invoice that's already been paid
The GIF is only shown when a payment is confirmed as **paid**. Pending or processing payments show the standard success screen.
## Tips for Picking a Good GIF
A creative agency might go for something quirky and fun. A financial consultancy might prefer something more understated — a subtle confetti or thumbs-up. Pick what fits your vibe.
The best GIFs are short (2–4 seconds) and loop cleanly. Long GIFs can feel distracting after the third replay.
Flashing or very fast-moving GIFs can be uncomfortable. The success page is a calm, positive moment — keep the energy warm rather than chaotic.
## Powered by KLIPY
GIFs are served by [KLIPY](https://klipy.com), a high-performance GIF and media platform. The GIF picker searches the KLIPY library directly from your settings panel.
## Related
Customize your avatar, colors, and layout
Success messages and other checkout settings
# Checkout Customization
Source: https://docs.payreque.st/shop-and-checkout/checkout-customization
What the shop checkout page collects, how payment method options adapt to the cart, and how to pre-fill or lock fields via URL
# Checkout Customization
The shop checkout page (`/shop/{yourshop}/checkout`) adapts to what's actually in the customer's [cart](/shop-and-checkout/shopping-cart) — the fields shown, the payment method options, and the amount charged all depend on the products being purchased.
This page covers the multi-product shop checkout. Single-product PayRequest Page checkouts have their own styling options — see [PayRequest Page Styling](/shop-and-checkout/sales-page-styling).
## How It Works
Every checkout collects name, email, address, city, postal code, and country. If a customer is already logged into the [customer portal](/customer-management/customer-health), these fields are pre-filled from their saved profile.
* **Only one-time products in the cart** → customer pays once, no mandate needed.
* **A recurring product is in the cart** → checkout asks for a payment mandate. Logged-in customers with an existing mandate can reuse it (**Existing Mandate**); otherwise they set up a **New Mandate** (credit card or automatic/direct debit, depending on what payment methods you've enabled).
* **A deposit product is in the cart** (authorization hold) → payment method is locked to **credit card**, since that's the only method supporting the manual-capture flow deposits rely on. See [Security Deposits](/payment-processing/security-deposits).
The methods offered at checkout mirror what you've enabled in [Setting Up Payment Providers](/payment-processing/setting-up-payment-providers) — checkout doesn't have its own separate method list.
On submit, the order (and invoice, if **Auto Create Invoices** is on for your shop) is created, spam protection checks run, and the customer is redirected to complete payment.
## Pre-Filling and Locking Fields via URL
Checkout links can pre-fill (and optionally lock) customer details and products by appending query parameters, useful for embedding pre-built checkout links elsewhere:
| Parameter | Effect |
| - | - |
| `name`, `email`, `address` (or `adress`), `city`, `postal`, `country` | Pre-fills the matching billing field |
| `product` + `quantity` | Adds a specific product (and quantity) to the cart on load |
| `cf_{fieldname}`, `customfield_{fieldname}`, or `product_customfield_{fieldname}` | Sets a custom field value for the product being added |
| `disabled=true` | Greys out the billing fields so the pre-filled values can't be edited |
Products added via `?product=` skip the "is this product currently visible" check, so a direct checkout link keeps working even for a product you've hidden from the shop listing — useful for private/unlisted offers, but worth remembering if you expect a hidden product to be fully unreachable.
For single-product links with more options (locking quantity, generating shareable links from the dashboard), see [Payment Page Dynamic Links](/payment-processing/payment-page-dynamic-links).
## Shop-Wide Checkout Settings
These are configured once on the [Shop Setup](/shop-and-checkout/shop-setup) page and apply to every checkout:
* **Tax Display** — inclusive or exclusive pricing shown at checkout.
* **Auto Create Invoices** — whether an invoice is generated automatically per order.
* **Allow Invoice Subscriptions** — whether recurring products can be paid by invoice instead of an automatic mandate.
## Fraud & Abuse Protection
Every checkout submission is checked against your [Spam Protection](/shop-and-checkout/spam-protection) settings (honeypot field, rate limiting, country blocking) before the order is created. If a customer abandons checkout without completing payment, [Checkout Recovery](/shop-and-checkout/checkout-recovery) can follow up automatically.
## FAQ
Not on the shop cart checkout — name, email, and full address are always required there. If you need a lighter checkout, a single-product PayRequest Page checkout link may fit better depending on the product type.
Not currently — the cart checkout doesn't have a coupon/discount code field.
That product is a deposit (authorization hold) product. Mollie's manual-capture flow, which deposits require, is only supported for credit card, so checkout restricts the whole cart to that method when a deposit product is present.
Yes — URL parameters take priority and pre-fill over the customer's saved profile data.
## Next Steps
How products get added and priced
Block bots and unwanted traffic
Win back abandoned checkouts
Enable payment methods
# Checkout Recovery
Source: https://docs.payreque.st/shop-and-checkout/checkout-recovery
Recover lost sales by automatically tracking abandoned checkouts and sending personalized recovery emails
## Overview
Checkout Recovery helps you recover lost sales by tracking customers who start but don't complete their checkout. When a customer abandons their cart or payment, you can send them a personalized email with a direct link to resume exactly where they left off.
Studies show that abandoned cart emails have an average open rate of 45% and can recover 10-15% of lost sales. Enabling Checkout Recovery can significantly boost your revenue.
## Key Features
* **Automatic Tracking**: Every checkout attempt is tracked automatically across payment pages, shop checkout, and smart links
* **Recovery Emails**: Send personalized emails with a direct link to complete the order
* **Recovery Analytics**: Track recovered revenue and conversion rates
* **Multiple Reminders**: Send up to 3 reminder emails per abandoned checkout
* **Source Tracking**: See where customers abandoned (payment page, shop, or smart link)
* **Conversion Attribution**: Know whether customers converted organically or from a recovery email
## How It Works
1. **Customer starts checkout** - When a customer enters their email and begins the payment process, a checkout attempt is recorded
2. **30 minutes of inactivity** - If no payment is completed within 30 minutes, the checkout is marked as abandoned
3. **You send recovery email** - From the Checkout Attempts page, send a recovery email with one click
4. **Customer completes order** - The email contains a direct link that resumes their checkout with all details pre-filled
5. **Revenue recovered** - The system tracks the conversion and attributes it to your recovery efforts
Checkout attempts are only created when a customer provides their email address. Anonymous visitors who don't enter contact details cannot receive recovery emails.
## Enabling Checkout Recovery
Navigate to **Settings** → scroll down to find the **Checkout Recovery** section.
1. Toggle **Enable Checkout Recovery** to on
2. Click **Save Settings**
Once enabled, the system will automatically start tracking checkout attempts across all your payment pages and shop.
PayPal checkouts started from a Smart Link are included. PayRequest records the attempt when the buyer provides enough checkout information and starts the PayPal order. Tracking only begins after **Enable Checkout Recovery** is turned on; enabling it later does not recreate older abandoned attempts.
## Understanding Checkout Statuses
Each checkout attempt has one of three statuses:
| Status | Description | Color |
| - | - | - |
| **In Progress** | Customer is actively in checkout (less than 30 min) | Amber |
| **Abandoned** | No activity for 30+ minutes, no payment completed | Red |
| **Converted** | Payment was successfully completed | Green |
## Viewing Checkout Attempts
Navigate to **Checkout Attempts** from your dashboard sidebar to see all tracked checkouts.
### Stats Overview
At the top of the page, you'll see key metrics for the current month:
* **This Month**: Total checkout attempts started
* **Abandoned**: Checkouts that weren't completed
* **Converted**: Successfully completed payments
* **In Progress**: Active checkout sessions
* **Recovered Revenue**: Total revenue from recovered checkouts
### Filtering Options
Use the filters to find specific checkout attempts:
**Search**: Find by customer email or name
**Status Filter**:
* All Statuses
* In Progress
* Abandoned
* Converted
**Source Filter**:
* Payment Page
* Shop
* Smart Link
**Date Filter**:
* Today
* This Week
* This Month
* All Time
## Sending Recovery Emails
To send a recovery email for an abandoned checkout:
1. Go to **Checkout Attempts**
2. Filter by **Abandoned** status to see recoverable checkouts
3. Find the checkout you want to recover
4. Click the **Send Recovery Email** button (envelope icon)
You can send a maximum of 3 recovery emails per checkout attempt. The "Reminders" column shows how many have been sent.
### What Customers Receive
The recovery email includes:
* **Personalized greeting** with the customer's name
* **Order summary** showing the product and amount
* **Prominent "Complete Your Order" button** linking directly to their checkout
* **Urgency messaging** that increases with each reminder
**First reminder**: Friendly notification that items are waiting
**Second reminder**: Gentle follow-up with reminder of what they selected
**Third reminder**: Final notice with urgency about session expiration
### Recovery Link
The email contains a secure recovery link that:
* Pre-fills the customer's information
* Restores their cart contents
* Takes them directly to the payment step
* Expires after 24 hours for security
## Conversion Tracking
When a customer completes their checkout, the system tracks how they converted:
| Conversion Source | Description |
| - | - |
| **Organic** | Customer returned and paid on their own |
| **Reminder Email** | Customer clicked the recovery email link |
| **Manual** | You marked the checkout as converted manually |
Use conversion tracking to measure the effectiveness of your recovery emails. If most conversions come from reminder emails, your recovery strategy is working!
## Manual Conversion
Sometimes a customer may complete their purchase through a different channel (phone call, new checkout, bank transfer). You can manually mark a checkout as converted:
1. Find the abandoned checkout
2. Click the **...** menu
3. Select **Mark as Converted**
This helps keep your analytics accurate and prevents sending recovery emails for orders that were already completed.
## Best Practices
### Timing Your Recovery Emails
**First email**: Send within 1-2 hours of abandonment for best results
**Second email**: Wait 24 hours before the second reminder
**Third email**: Send 48-72 hours after the first, with urgency messaging
### Writing Effective Recovery Emails
The default recovery email is professionally designed, but here are tips for maximizing success:
* **Act quickly**: The sooner you send, the higher the conversion rate
* **Be helpful, not pushy**: Position it as a reminder, not a sales pitch
* **Include the product**: Remind them what they were about to purchase
* **Make it easy**: The one-click recovery link removes all friction
### When NOT to Send Recovery Emails
* If the customer contacted you about an issue
* If you know they completed the purchase another way
* If too much time has passed (more than a week)
* If you've already sent 3 reminders
## Analytics in Business Insights
Checkout recovery metrics also appear in your **Business Insights** dashboard:
* **Abandoned Today**: Number of checkouts abandoned in the last 24 hours
* **Recovered This Week**: Checkouts converted after abandonment
* **Recovered Revenue**: Total value of recovered sales
* **Abandonment Rate**: Percentage of checkouts that don't complete
Use these metrics to:
* Identify patterns in abandonment timing
* Measure recovery email effectiveness
* Spot issues with your checkout flow
* Track improvement over time
## Source Types
Checkouts are tracked from three sources:
### Payment Page
Direct payment links where customers enter an amount or pay for a specific product.
### Shop Checkout
Your online shop's checkout process when customers add items to cart and proceed to payment.
### Smart Link
Branded payment links you've created for campaigns, social media, or QR codes.
Tracking works automatically for all three sources once Checkout Recovery is enabled. No additional configuration needed.
## Deleting Checkout Attempts
To remove a checkout attempt from your records:
1. Click the **...** menu on the checkout row
2. Select **Delete**
3. Confirm the deletion
Deleted checkout attempts cannot be recovered. Only delete records you're certain you don't need.
## Troubleshooting
### Recovery emails not sending
**Check:**
1. Checkout Recovery is enabled in Settings
2. The checkout has a valid email address
3. You haven't exceeded 3 reminders
4. Your email configuration is working (Settings → Email)
### Customer says they didn't receive the email
**Solutions:**
1. Ask them to check spam/junk folder
2. Verify the email address is correct
3. Try sending another reminder (if under limit)
4. Contact them through another channel
### Checkout shows as "In Progress" indefinitely
**Cause:** The 30-minute timeout hasn't elapsed yet, or the system check hasn't run.
**Solution:** Wait for the next system check (runs every few minutes) or check back later.
### Customer converted but still showing as abandoned
**Cause:** Payment may have been processed through a different checkout or the connection was lost.
**Solution:** Use "Mark as Converted" to manually update the status.
## Frequently Asked Questions
Checkout attempts are stored indefinitely so you can track historical patterns and analytics. You can manually delete individual attempts if needed.
The recovery email uses a professional template with your business name and branding colors. Custom email templates for checkout recovery will be available in a future update.
Yes, as long as the customer enters their email address during checkout. The email address is required to send recovery emails.
No. Recovery emails are sent manually by you. This gives you control over when and which customers receive reminders. Automated recovery sequences may be added in a future update.
If a customer clicks an expired recovery link (after 24 hours), they'll be taken to your normal checkout page. Their details won't be pre-filled, but they can still complete the purchase.
Yes, the checkout attempt record includes the product name and amount. For shop checkouts with multiple items, the full cart contents are preserved.
Yes. Checkout tracking only captures information the customer actively provides (email, name). The data is stored securely and can be deleted upon request. Include mention of checkout recovery in your privacy policy.
Compare your "Recovered Revenue" metric against "Abandoned" checkouts. A healthy recovery rate is typically 10-15% of abandoned checkouts. Track this over time to optimize your recovery timing.
## Need Help?
Create branded payment links
Configure your online shop
Set up payment pages
Configure email settings
# Coffee Tips
Source: https://docs.payreque.st/shop-and-checkout/coffee-tips
Turn Donation Mode into a 'Buy Me a Coffee'-style tip jar with a drinks menu, donor messages, GIFs, and automatic X (Twitter) profile pictures.
# Coffee Tips
Coffee Tips is a friendlier flavor of [Donation Mode](/shop-and-checkout/donation-mode) built for creators, streamers, open-source maintainers, and anyone who wants small, casual support instead of a formal "donate" ask. Instead of typing a random amount, supporters pick a drink from a menu — an Espresso, a Latte, a Cappuccino — and it shows up in a public feed as **"Alex bought a Cappuccino"**.
Coffee Tips is a style switch inside Donation Mode, not a separate product or page type. Everything from your [PayRequest Page](/shop-and-checkout/sales-page-styling) — your avatar, tagline, and accent color — stays exactly as it is; only the tipping experience changes.
## Overview
Pick from 8 ready-made drinks (Espresso, Americano, Cappuccino, Latte, Mocha, Iced Coffee, Hot Chocolate, and plain Coffee), each with its own fixed price and a hand-drawn cup icon.
Supporters can leave a short thank-you note and pick a GIF to go with it, straight from a built-in GIF search.
If a supporter shares their X (Twitter) link, their real name, profile photo, and verified badge appear automatically — no upload needed.
Supporters can choose to stay anonymous, but by default their message, GIF, and social link are shown publicly — most people want the shoutout.
## How It Works
Open **PayRequest Page** from the dashboard, scroll to **What to show on your page**, and click the **Donation goal** tab.
Under **Donation style**, switch from **Generic** to **Coffee Tips**. Your goal card, progress bar, and donor feed all switch to the coffee-themed wording ("Recent coffees", "Be the first to buy a coffee!").
A **Coffee** entry is added by default. Add or remove drinks from the fixed catalog — each card shows its name, price, and cup icon. There's no free-text pricing; every drink's price is set by PayRequest so the menu stays simple and consistent for supporters.
Give the goal a title like "Help keep the servers running" or "Coffee fund for late-night updates" — it appears above the progress bar.
Same as regular Donation Mode: pick a target amount and choose **Monthly** (auto-resets on the 1st) or **One-time**.
Your page at `payrequest.me/` now shows the drinks menu instead of a plain amount field.
## What Supporters See
Instead of typing an amount, visitors pick a drink card from the menu — each shows its own cup icon, name, and price. After picking a drink and paying, they can optionally:
* **Leave a message** — a short note (up to 500 characters), shown under their name in the feed
* **Add a GIF** — searched right from the checkout page, no external links needed
* **Share a social link** — X (Twitter), Instagram, GitHub, YouTube, Twitch, and more (see below)
* **Choose visibility** — a checkbox, checked by default, for showing their message/GIF/social link publicly. Unchecking it keeps their name, drink, and amount in the feed but hides the message, GIF, and link.
## The X (Twitter) Integration
This is the feature that makes the feed feel alive: when a supporter pastes their X profile link (`x.com/yourname` or `twitter.com/yourname` — with or without `https://`), PayRequest looks them up and automatically shows:
* Their **real profile photo**, pulled live from X — no need to upload anything
* Their **display name**, auto-filled into the name field if they hadn't typed one
* A **blue verified checkmark** next to their name in the feed, if their account is verified
Supporters don't need an X account to tip — the social link is entirely optional. It's simply a shortcut so regulars and fans get recognized properly in the feed instead of showing up as a plain "Anonymous" or a typed name.
The same auto-avatar trick works for other platforms too — Instagram, TikTok, GitHub, YouTube, Twitch, Discord, Telegram, Reddit, and a dozen more. X is the only one that also pulls the display name and verified badge; the others show the profile picture only.
## The Coffee Feed
Each paid tip shows up as one card in the feed:
```
[avatar] Alex ✓ 5m ago
bought ☕ Cappuccino €3.50
"Keep the good work coming!"
[ GIF ]
```
* **Avatar** — the supporter's X profile photo (if shared), or a generated placeholder
* **Name + verified badge** — clickable through to their profile if a social link was shared
* **Drink badge** — the exact drink they bought, with its cup icon
* **Amount** — the drink's fixed price
* **Message and GIF** — shown only if the supporter left one and kept visibility on. Click any GIF to see it full-size.
Anonymous or privacy-toggled tips still show the drink and amount — only the message, GIF, and social link are hidden, keeping the feed honest without exposing anyone who wants to stay private.
## Best Practices
**Keep the menu short.** 3–5 drinks is plenty — Coffee, Cappuccino, and one "big tip" option like a Mocha or Hot Chocolate covers most budgets without overwhelming the choice.
**Ask supporters to share their X link.** A feed full of real faces and names feels far more like a community than a list of "Anonymous — €3.50" rows. Mention it in your page tagline or stream/community rules.
**Reply to messages publicly.** Since messages and GIFs default to public, screenshotting a favorite one and thanking the supporter (on stream, in a newsletter, in Discord) encourages the next person to leave one too.
**Pair it with a monthly goal.** "X coffees to cover this month's hosting" is a concrete, relatable ask that resets automatically — no manual bookkeeping needed.
## Frequently Asked Questions
Not yet — drinks come from a fixed catalog (name, price, and cup icon are pre-set) so the menu stays simple and consistent for supporters. You choose which of the 8 drinks to offer, not their price.
No. The social link is entirely optional. Without one, supporters just type a name (or leave it blank for Anonymous) and their message/GIF still appear normally, just without a profile photo or verified badge.
Tips still work exactly the same — supporters still pick a drink, leave a message, and pay. The feed (and the coffee-bought badges) simply won't be shown publicly on your page.
Yes. Unchecking the visibility option keeps their name, drink, and amount in the feed but hides the message, GIF, and social link — a middle ground between fully public and fully anonymous.
Yes, at any time from the same **Donation style** toggle. Your goal amount, reset period, and past tips all stay exactly as they are — only the wording and drinks menu change.
X (Twitter), Instagram, TikTok, GitHub, YouTube, Twitch, Discord, Telegram, Snapchat, Spotify, WhatsApp, Facebook, Reddit, SoundCloud, Substack, and Pinterest. X is the only one that also shows the real display name and verified badge.
## Next Steps
The base fundraising goal, progress bar, and donor feed that Coffee Tips builds on.
Brand your coffee page with an avatar, tagline, and accent color.
See how PayRequest's built-in GIF search works elsewhere in the checkout flow.
Use your own domain for your coffee/tip page instead of payrequest.me.
# Community
Source: https://docs.payreque.st/shop-and-checkout/community
Build a community-first PayRequest Page with free members, paid memberships, pinned posts, and protected content.
# Community
Community turns your PayRequest Page into a community-first home for visitors, free members, and paying members. Visitors can join for free with verified email access, free members can read selected posts and participate in their comments, and paying members unlock the complete protected library.
Your public Community URL is `payrequest.me//community`.
Community is built into your existing PayRequest Page. It automatically reuses its banner, avatar, theme, profile information, and navigation instead of creating a separately styled website.
## What You Can Build
Introduce new members with formatted text and an optional YouTube or Vimeo video.
Organize posts into topics such as Breakfast, Lunch, Dinner, Tutorials, or Tips & tricks.
Publish protected articles with text, images, links, and supported video embeds.
Let visitors join with verified email access before they decide to purchase the paid membership.
Keep one important announcement, challenge, or start-here post at the top of the Community.
Unlock content after successful membership payment and lock it when membership access ends.
## Set Up Your Community
Go to **Community** in the dashboard. This feature is available on Premium and higher plans.
Create or connect the membership customers buy. Its name, description, image, price, interval, and benefits form the public Community offer.
Add a welcome heading, formatted introduction, instructions, and optionally a YouTube or Vimeo URL.
Add a public **Headline** and **Short pitch** explaining who the Community is for and what members can achieve. Enable **Make community my homepage** to open Community before products when someone visits `payrequest.me/`.
Add sections to keep a growing content library easy to browse. You can edit, reorder, or remove sections without deleting their posts.
Turn on **Published** and save. Customer login stays enabled automatically while the Community is published.
Keep **Show in Page navigation** enabled to promote Community on your public Page. Turn it off for an invite-only or direct-link experience; the `/community` URL and logged-in member account menu continue to work.
Use **Preview as member** on the Community dashboard to inspect the complete logged-in experience without creating a customer or paid subscription. Use **View public community** to check the visitor experience separately.
## Community-First Homepage
When **Make community my homepage** is enabled, your normal `payrequest.me/` link opens Community first. Visitors see your pitch, membership benefits, recurring price, recent locked-post previews, free-member signup, and join action before any products.
The Community uses the membership product for its paid plan name, price, image, interval, and benefits. The separate public headline and short pitch explain the outcome without creating a second product or pricing configuration.
On mobile, PayRequest keeps the paid join action available in a sticky bar while visitors explore the page.
## Free and Paid Members
Community supports three access levels:
| Visitor type | Access |
| - | - |
| Visitor | Public posts and safe locked-post previews |
| Free member | Public posts and posts marked **Free and paid members** |
| Paid member | Public, free-member, and **Active members only** posts |
Visitors select **Join free** and confirm their email address. The confirmation creates or links their customer profile for this Page and signs them in through a secure one-time link. The same customer profile is retained if they later upgrade to the paid membership.
Free membership includes consent to receive Community updates by email. Unsubscribing removes both those emails and free-member access. A paid subscription remains independent and continues according to its own billing status.
## Add Content
Community content uses the existing Posts editor:
Open **Posts** and start a new post.
Choose **Everyone**, **Free and paid members**, or **Active members only**.
Assign the post to a section. Leave it unassigned if it should appear without a category.
Active and trial members can now open the complete post. Other visitors see the membership offer or a login action.
## Pin an Important Post
Open **Posts**, use the three-dot menu on a published post, and select **Pin post**. The pinned post moves to the top of Community and receives a **Pinned** badge.
Only one post can be pinned per PayRequest account. Pinning another post replaces the previous pin. Returning the pinned post to Draft removes its pin automatically.
Deleting a section does not delete its posts. Those posts become uncategorized and remain available according to their publication and access settings.
## Visitor and Member Experience
Before joining, visitors see the Community landing page, free-member signup, and paid membership offer. Locked previews may reveal a title, section, and publication date, but never protected post content.
After payment, PayRequest activates the subscription, lets the member log in using a magic link, and unlocks the welcome page, sections, and protected posts. Access is checked again whenever protected content is opened.
Direct product links keep Page navigation visible, including Community, so visitors understand what their membership unlocks.
## Login, Cancellation, and Downloads
* Customer login cannot be hidden while Community is published.
* Logged-in customers can open **Community** directly from the account dropdown.
* Active and trial memberships unlock protected content.
* Cancellation keeps access until the subscription actually ends.
* When access expires, members-only content is locked automatically.
* Logged-in customers can use **My downloads** for digital products they previously purchased.
Digital product purchases do not automatically grant Community access. Community access comes from the connected membership subscription; downloads come from paid digital-product orders.
Joining for free uses email confirmation. After confirmation, PayRequest signs the member in and shows **Free member** status. Existing confirmed followers of a published Community are treated as free members when they log in with the same email address.
## Community or Telegram?
PayRequest Community is a hosted content area inside your PayRequest Page. The optional Telegram integration grants timed access to an external Telegram group or channel. You can use either feature independently or combine them as separate membership benefits.
## Frequently Asked Questions
Community provides a welcome page plus sections that organize your posts. This creates a simple mini-site structure without requiring a separate website builder.
Yes. It reuses the same banner, avatar, theme, profile, and navigation as your normal PayRequest Page.
Visitors may see a safe locked preview, but never the protected body. Free-member posts require confirmed free or paid membership; paid posts require an active or trial subscription.
Yes. Signed-in free members can comment on posts they may read. They cannot open or comment on paid members-only posts.
Not from that purchase alone. The customer can log in to retrieve the e-book under My downloads, but Community requires the connected membership subscription.
Access normally continues through the paid period and ends when the subscription becomes inactive.
## Next Steps
Configure pricing, billing, benefits, and access rules.Create and organize protected content.Sell files customers retrieve from their download library.Learn what logged-in customers can manage.
# Crypto Page Themes
Source: https://docs.payreque.st/shop-and-checkout/crypto-page-themes
Give your payrequest.me page a crypto-native look with the Solana or Crypto Native theme — one click in the PayRequest Page editor
# Crypto Page Themes
Stand out with a payment page that feels at home in the crypto world. PayRequest offers two premium crypto-aesthetic themes — **Solana** and **Crypto Native** — that transform your page background, card style, and inputs into a visually striking experience for Web3 visitors.
Themes are available for all PayRequest accounts and apply only to your public **payrequest.me** page. They work alongside your existing **Accent Color** setting — pick both together for a fully branded look.
## The Two Themes
Deep dark background with a vivid **purple-to-green** radial glow — inspired by the Phantom wallet and Solana's brand palette. The card glows with a soft purple border and light blur effect.
An animated gradient mesh background (cyan, violet, and green) with a **glassmorphism card** — frosted glass with a neon cyan `#00D4FF` accent. The most striking and modern of the two.
## How to Set a Theme
From the main dashboard, go to **PayRequest Page** and click the **Styling** tab.
Scroll down to the **Page Theme** section — it appears directly above the **Accent Color** card. You'll see three visual mini-previews: Default, Solana, and Crypto Native.
Click any theme card to select it instantly. The mini-preview shows a thumbnail of what the background and card will look like.
Click **Save Styling** at the bottom of the page. Your live `payrequest.me` page will update immediately.
## Combining Themes with Accent Color
Themes and accent colors work together — they control different parts of the page:
| Setting | Controls |
| - | - |
| **Page Theme** | Page background, card style, input field borders |
| **Accent Color** | Pay button color, avatar border, selected product highlight |
Try **Solana theme** + **purple accent** (`#9945FF`) for a fully Solana-branded page, or **Crypto Native theme** + **cyan accent** (`#00D4FF`) for a sleek, modern look. Both combinations look great.
## Default Theme
Selecting **Default** removes any crypto theme and returns to the standard PayRequest dark style. Your accent color still applies — only the background and card styling are reset.
## How It Looks to Visitors
When a visitor lands on your page with a theme applied:
* The **background** changes from the standard dark grey to the theme-specific design (radial glow or animated mesh)
* The **payment card** gets the themed border, background tint, and blur effect
* **Input fields** take on a subtle tinted border matching the theme palette
* Everything else — your name, products, payment methods — stays exactly the same
The theme is purely visual and has no effect on payment flows or amounts.
## Frequently Asked Questions
Yes — the mini-preview cards in the editor give you a visual sample of each theme's background and card style. Click a theme to select it, check the preview thumbnails, and click **Save** when you're happy.
Yes. If you've connected a custom domain to your PayRequest Page, the theme applies there too.
Yes — the gradient animation on the Crypto Native theme works on mobile browsers. On slower devices it may run at a lower frame rate, but it remains visible.
Absolutely. Themes are purely visual — they don't require a connected wallet or any crypto features to be enabled.
Yes, more themes are planned. The two current themes were designed around the most popular Web3 aesthetics — Solana and a chain-agnostic "Crypto Native" style.
## Next Steps
Full guide to avatar, tagline, accent color, and social links on your PayRequest Page.
Let other PayRequest users send USDC directly to your wallet from your page.
Accept USDC payments from any Phantom or Solflare wallet on your page.
Use your own domain for your branded payment page.
# Custom Domains
Source: https://docs.payreque.st/shop-and-checkout/custom-domains
Set up your own domain for a professional branded shop experience that builds trust and improves SEO
# Custom Domains 🌐
Transform your PayRequest shop from a subdomain into a professional branded storefront with your own custom domain. Custom domains enhance your brand credibility, improve SEO rankings, and provide a seamless customer experience.
**Professional Branding**: Custom domains like `shop.yourbusiness.com` appear more trustworthy than subdomains and can significantly improve conversion rates.
## 🎯 Why Use Custom Domains?
Custom domains provide substantial benefits for your online business:
**Professional Appearance**
* Match your main website branding
* Consistent customer experience
* Enhanced brand recognition
* Improved customer trust
**Search Engine Optimization**
* Better search rankings
* Domain authority building
* Improved click-through rates
* Enhanced local SEO
**Security & Credibility**
* SSL certificate included
* Professional appearance
* Reduced cart abandonment
* Higher conversion rates
**Tracking & Insights**
* Google Analytics integration
* Unified tracking across domains
* Better attribution data
* Enhanced reporting capabilities
## 🛠️ Domain Setup Process
Setting up a custom domain is straightforward with PayRequest's guided configuration:
**Subdomain Approach (Recommended)**
* `shop.yourbusiness.com`
* `store.yourbusiness.com`
* `buy.yourbusiness.com`
**Subdirectory Alternative**
* `yourbusiness.com/shop`
* `yourbusiness.com/store`
* Requires additional DNS configuration
Navigate to **Shop** → **Settings** → **Custom Domain**
**Domain Settings:**
* Enter your chosen domain/subdomain
* Enable custom domain usage
* Configure redirect preferences
* Set up SSL certificate (automatic)
Add DNS records with your domain provider (detailed instructions below)
* Verify domain connectivity
* Test SSL certificate
* Confirm redirect behavior
* Validate all shop pages
## 🔧 DNS Configuration Guide
Configure your DNS settings based on your chosen domain strategy:
**For shop.yourbusiness.com:**
Add a **CNAME record** with your DNS provider:
```
Type: CNAME
Name: shop (or your chosen subdomain)
Value: payrequest.app
TTL: 3600 (or your provider's default)
```
**Example DNS Configurations:**
**Cloudflare:**
* Type: CNAME
* Name: shop
* Target: payrequest.app
* Proxy status: DNS only (gray cloud)
**Namecheap:**
* Type: CNAME Record
* Host: shop
* Value: payrequest.app
**GoDaddy:**
* Type: CNAME
* Name: shop
* Value: payrequest.app
**Important**: Ensure proxy/CDN features are disabled initially. You can enable them after verifying the basic setup works.
**For yourbusiness.com/shop:**
Add an **A record** pointing to PayRequest's IP:
```
Type: A
Name: @ (root domain)
Value: [PayRequest IP - provided in dashboard]
TTL: 3600
```
**Additional Configuration:**
* Set up URL forwarding for `/shop` path
* Configure server-side redirects
* Ensure proper SSL certificate coverage
**Note**: Root domain setup requires additional coordination with PayRequest support for proper routing configuration.
**Multiple Subdomains:**
```
shop.yourbusiness.com → CNAME → payrequest.app
store.yourbusiness.com → CNAME → payrequest.app
buy.yourbusiness.com → CNAME → payrequest.app
```
**International Domains:**
```
shop.yourbusiness.nl → CNAME → payrequest.app
shop.yourbusiness.de → CNAME → payrequest.app
boutique.yourbusiness.fr → CNAME → payrequest.app
```
**CDN/Proxy Configuration:**
* Enable after basic setup verification
* Configure caching rules appropriately
* Ensure payment processing routes work
* Test webhook delivery functionality
## ⚙️ PayRequest Dashboard Configuration
Configure your custom domain settings in the PayRequest dashboard:
**Navigation**: Shop → Settings → Custom Domain
**Configuration Options:**
* **Domain Name**: Enter your full domain (shop.yourbusiness.com)
* **Enable Custom Domain**: Toggle to activate custom domain usage
* **Force HTTPS**: Automatically redirect HTTP to HTTPS
* **Default Redirect**: Set behavior for payrequest.app URLs
**SSL Certificate:**
* Automatically provisioned by PayRequest
* Let's Encrypt or equivalent certificate authority
* Auto-renewal every 90 days
* Covers all configured subdomains
**Redirect Scenarios:**
**Subdomain to Custom Domain:**
* `payrequest.app/shop/yourshop` → `shop.yourbusiness.com`
* Permanent 301 redirects for SEO preservation
* Automatic redirect of all shop pages
**Custom Domain Fallback:**
* Maintain payrequest.app URLs as backup
* Useful during DNS propagation
* Ensures continuous shop availability
**Cross-Domain Consistency:**
* Product links work on both domains
* Payment processing functions correctly
* Customer portal integration maintained
**Domain-Matched Emails:**
* Configure `From` email addresses to match domain
* Use `noreply@yourbusiness.com` for automated emails
* Maintain brand consistency in communications
**DKIM/SPF Configuration:**
* Add email authentication records
* Improve email deliverability
* Prevent emails from being marked as spam
* Enhance professional appearance
## 🧪 Testing & Verification
Ensure your custom domain setup is working correctly:
### Pre-Launch Testing Checklist
**Check DNS Propagation:**
* Use online DNS checker tools
* Verify CNAME/A record resolution
* Test from multiple geographic locations
* Confirm TTL settings are appropriate
**Tools to Use:**
* DNS Checker (dnschecker.org)
* What's My DNS (whatsmydns.net)
* Dig command-line tool
* Browser developer tools
**Certificate Verification:**
* Check certificate validity
* Verify domain coverage
* Test HTTPS enforcement
* Validate certificate chain
**Browser Testing:**
* Green padlock icon visible
* No certificate warnings
* Proper certificate details
* Mixed content issues resolved
### Functional Testing
* Access shop homepage via custom domain
* Navigate through product categories
* Test search functionality
* Verify responsive design on mobile
* View individual product pages
* Add products to cart
* Modify cart quantities
* Test custom field inputs
* Complete checkout flow
* Test payment processing
* Verify order confirmation
* Check automated emails
* Verify meta tags and structured data
* Test Google Analytics tracking
* Check social media sharing
* Validate sitemap.xml accessibility
## 🚨 Common Issues & Troubleshooting
### DNS Propagation Issues
**Symptoms:**
* Domain not resolving consistently
* Works in some locations but not others
* Intermittent connectivity issues
**Solutions:**
* Wait 24-48 hours for full propagation
* Reduce TTL values temporarily
* Clear local DNS cache
* Test with different DNS servers (8.8.8.8, 1.1.1.1)
**Commands for Troubleshooting:**
```bash theme={null}
# Check DNS resolution
nslookup shop.yourbusiness.com
# Trace DNS path
dig shop.yourbusiness.com +trace
# Clear local DNS cache (Windows)
ipconfig /flushdns
# Clear local DNS cache (macOS)
sudo dscacheutil -flushcache
```
**Common Mistakes:**
* Wrong CNAME target (should be payrequest.app)
* A record instead of CNAME for subdomain
* Missing DNS records
* Conflicting DNS entries
**Verification Steps:**
1. Double-check DNS record type (CNAME vs A)
2. Verify target/value exactly matches requirements
3. Remove conflicting or duplicate records
4. Confirm DNS changes are saved and published
**Quick Fixes:**
* Delete and recreate DNS records
* Contact DNS provider support
* Try alternative DNS record configurations
* Temporarily use A record with PayRequest IP
### SSL Certificate Problems
**Common Problems:**
* Certificate not generating automatically
* Browser security warnings
* Mixed content errors
* Certificate mismatch errors
**Resolution Steps:**
1. Verify DNS is properly configured first
2. Wait for automatic certificate generation (up to 24 hours)
3. Contact PayRequest support if certificate doesn't generate
4. Check for mixed HTTP/HTTPS content on pages
5. Ensure all resources load via HTTPS
**Prevention:**
* Configure DNS correctly before enabling domain
* Allow time for certificate provisioning
* Test with modern browsers
* Use HTTPS for all embedded content
## 🌟 Advanced Custom Domain Features
### Multiple Domain Support
**Multi-Country Setup:**
* shop.yourbusiness.com (global)
* shop.yourbusiness.nl (Netherlands)
* shop.yourbusiness.de (Germany)
* boutique.yourbusiness.fr (France)
**Benefits:**
* Localized customer experience
* Improved local SEO rankings
* Country-specific branding
* Regional payment method optimization
**Multiple Brand Support:**
* shop.mainbrand.com
* store.subbrand.com
* marketplace.company.com
**Use Cases:**
* Multi-brand businesses
* Separate product lines
* B2B vs B2C storefronts
* Regional brand variations
### Domain-Based Customization
**Customization Options:**
* Different color schemes per domain
* Unique logos and branding elements
* Domain-specific product catalogs
* Localized content and languages
**Implementation:**
* Configure themes in PayRequest dashboard
* Upload domain-specific assets
* Set up conditional content rules
* Test cross-domain consistency
**Tracking Setup:**
* Google Analytics 4 with multiple domains
* Cross-domain tracking configuration
* Attribution modeling across domains
* Conversion tracking and optimization
**Advanced Analytics:**
* Domain-specific performance metrics
* Customer journey analysis
* Revenue attribution by domain
* A/B testing across domains
## 💰 Cost & Performance Considerations
### Custom Domain Pricing
**PayRequest Pricing**: Custom domains are included in all PayRequest plans at no additional cost. You only pay for your domain registration with your chosen domain registrar.
**Annual Costs:**
* .com domains: \$10-15/year
* .org/.net domains: \$12-18/year
* Country TLDs: \$15-50/year
* Premium domains: \$50-500+/year
**Included Free:**
* Let's Encrypt certificates
* Automatic renewal
* Wildcard support available
* Multi-domain certificates
**Optimization:**
* CDN integration supported
* Caching configuration
* Global edge locations
* Sub-100ms response times
### Performance Optimization
Enable content delivery network for faster global performance
Configure appropriate cache headers for static resources
Use WebP format and responsive images for faster loading
Implement uptime monitoring and performance tracking
## 📞 Support & Resources
Need help with custom domain setup?
**Technical Assistance**
* DNS configuration help
* Propagation troubleshooting
* Record verification
* Provider-specific guidance
**Migration Services**
* Existing domain transfer
* Zero-downtime migration
* SEO preservation
* Redirect management
**Speed & SEO**
* CDN configuration
* Performance auditing
* SEO optimization
* Analytics setup
## 🎓 Next Steps
Complete your shop configuration and customize the customer experience
Optimize how your products are presented to customers
Customize the checkout flow for better conversion rates
Set up comprehensive analytics and tracking for your custom domain
***
**Pro Tip**: Set up your custom domain early in your shop development process. This ensures all SEO benefits accumulate to your branded domain from day one, and customers become familiar with your professional web presence.
# Donation Mode
Source: https://docs.payreque.st/shop-and-checkout/donation-mode
Run a fundraising goal on your PayRequest Page with a live progress bar, a public donor feed, and monthly auto-reset.
# Donation Mode
Turn your PayRequest Page into a crowdfunding page. Set a goal amount, let visitors contribute any amount they want, and show a live progress bar plus a public feed of recent donors — perfect for community servers, creator support, or covering recurring costs.
Donation Mode is one of three PayRequest Page display modes, alongside **Products & services** and **Amount buttons**. Switch between them any time from the **Page Mode** card in the **Overview** tab sidebar for a one-click change, or from the **Settings** tab if you also want to adjust the mode's other options in the same step.
## Overview
Shows total raised vs. your goal in real time, with a percentage and remaining-to-go amount.
A monthly goal resets on the 1st of each month — no manual reset, no cron jobs.
Recent donations appear below the bar with name, amount, and relative time.
Donors can give exactly what they want. Optional preset amounts (€2, €5, €10…) appear as one-click buttons.
## How It Works
Open **PayRequest Page** from the dashboard, scroll to **What to show on your page**, and click the **Donation goal** tab.
Enter the amount you want to raise (e.g. `10.00`, `100.00`, `2500.00`). Use the currency configured on your business profile.
Choose **Monthly** (resets on the 1st of every month, ideal for recurring costs like server hosting) or **One-time** (no reset — runs until you switch it off, ideal for a fixed campaign).
Enable **Show recent donor feed** to display a public list of donations under the bar. Set how many donors to show (1–50, default 10).
Add quick-pick amount buttons (e.g. €1, €5, €10) under **Add suggested amount**. Donors can still type any amount they like in the custom field.
Click **Save Settings** — your live page at `payrequest.me/` now shows the goal, progress bar, and donor feed. The URL stays permanent; the goal resets on its own.
## What Visitors See
Once enabled, every visitor lands on a page with this structure (in order):
1. **Your avatar, name, tagline, and bio** — same as the other PayRequest Page modes
2. **Donation goal card** — an optional title, a days-left counter (for monthly goals), a big "€X of €Y" headline, a progress bar, and a "X% funded • €Z to go" status line
3. **Donor feed** — recent donors with name + amount + how long ago they gave
4. **Payment form** — preset amount buttons (if configured), custom amount input, name/email fields, and the Pay button
The progress total is calculated live from your paid invoices linked to the page. Refunds and chargebacks automatically reduce the total — no manual reconciliation needed.
## Reset Periods
| Period | Resets | Best for |
| - | - | - |
| **Monthly** | Automatically on the 1st of each month | Recurring costs (server hosting, subscriptions, community fees) |
| **One-time** | Never (runs until you change it) | Fundraising campaigns, equipment funds, charity drives |
Switching from monthly back to one-time resets the start date to "now", so the new one-time window starts fresh. Switching the other way is also safe — the monthly window picks up at the start of the current month.
## When the Goal is Reached
When the total hits or exceeds your goal:
* The progress bar fills to 100% and turns green
* A **Goal reached!** badge appears next to the total
* The status line changes to "**Thank you! Extra donations are still welcome.**"
* Donations continue to accept normally — the form stays live so supporters who want to overshoot the goal can
For a monthly goal, hitting the target early just means the next month starts at €0 on the 1st as usual. Communities often overshoot and "bank" momentum into the following month emotionally, even though the counter resets.
## The Donor Feed
The feed shows each completed donation as one row:
```
Lasse €5.00 • 15m ago
Anna B. €2.50 • 3h ago
Mark €10.00 • 12h ago
Jeroen van Dijk €1.00 • 1d ago
Sophie €3.50 • 2d ago
```
* **Name** is whatever the donor typed into the form. If they leave it blank, it shows as **Anonymous**.
* **Amount** is the actual donation amount in your page's currency.
* **Time** is shown as a relative timestamp ("3 hours ago"), so the feed always feels fresh.
The feed updates automatically as donations come in — no refresh needed for new visitors. To turn off public visibility, switch off **Show recent donor feed** in settings.
## Best Practices
**Pick a realistic goal.** A €10 monthly server-hosting goal is far more motivating than a €1,000 one — donors love seeing the bar fill up. You can always raise the goal later once you've built momentum.
**Add 3–5 preset amounts**. Small amounts like €1, €2, €5 lower the bar to participate. Most donors pick a preset rather than typing a custom amount.
**Write your bio to explain the cause.** Donors give more when they understand the "why". Mention what costs you're covering, who benefits, and why their contribution matters. Two short sentences is enough.
**Share the link in communities.** Donation Mode shines when shared in Discord servers, gaming communities, newsletters, and social bios — anywhere supporters already gather.
## Frequently Asked Questions
Yes, if you pick **Monthly**. On the 1st of each month, the progress bar starts at €0 again — no action needed. **One-time** goals never reset; they keep counting until you switch modes or change settings.
They stay in your transaction history and analytics — they're just no longer counted toward the current month's progress total. You can always view the full historical list in **Transactions**.
Yes — if they leave the name field blank, they show as **Anonymous** in the feed. You can also turn off the feed entirely if your audience prefers privacy.
Yes. The full donor list (with email, exact timestamp, transaction ID, and payment method) is always in your **Transactions** page — the public feed is a curated public-facing view, not the full ledger.
Yes. The total is computed live from invoices marked **Paid**. If you refund a donation, it drops out of the total automatically and disappears from the feed.
Yes, freely. Your goal settings stay saved on the page — switch back to Donation Mode any time and the goal picks up where it left off (monthly) or from the saved start date (one-time).
The currency configured on your business profile. All donations are recorded in the same currency for clean totals.
## Next Steps
Brand your donation page with an avatar, tagline, and accent color.
Use your own domain for your donation page instead of payrequest.me.
Connect Mollie, Stripe, or PayPal so donors can pay through their preferred method.
Build pre-filled donation links for specific tiers or campaigns.
A friendlier "Buy Me a Coffee"-style version of Donation Mode with a drinks menu, GIFs, and X profile pictures.
Add a badge to your GitHub README that shows your live donation total and links to your page.
# Memberships
Source: https://docs.payreque.st/shop-and-checkout/memberships
Create the recurring plan that grants paying members access to your PayRequest Community.
# Memberships
A membership is the recurring product customers buy to enter your private Community. Each PayRequest Page connects to one membership product. That product is the single source of truth for the plan name, description, image, price, billing interval, and benefits.
Membership setup lives under **Community** in the dashboard. There is no separate Membership tab under PayRequest Page when you use Community.
## Membership and Community
| Membership product | Community |
| - | - |
| Defines what customers buy | Provides the private members area |
| Stores name, description, image, price, and benefits | Stores the welcome page, sections, and members-only posts |
| Creates and renews the subscription | Checks that the customer still has active access |
| Appears as the plan for visitors | Appears inside your normal PayRequest Page |
Build the welcome page, organize content into sections, and preview the private members area.
## Availability
Memberships and Community are included with **Premium** and higher plans. Before accepting members, connect at least one supported recurring payment provider:
* **Mollie** — the first payment creates a mandate for future recurring charges. Enable **SEPA Direct Debit** in Mollie.
* **Stripe Connect** — subscriptions run directly on your verified connected Stripe account.
* **PayRequest Merchant of Record** — PayRequest processes the Stripe payment and transfers your proceeds to your verified payout account.
PayPal does not currently support PayRequest Page memberships. It can still process supported one-time purchases.
## Create or Connect a Membership
In the PayRequest dashboard, go to **Community**.
Click **Enable membership**. PayRequest creates a membership product if you do not have one. If membership products already exist, select the one that belongs to this Page.
Add the name and description customers should see. The membership name also labels the Community tab on your public Page.
Choose a daily, weekly, monthly, or yearly recurring price. Price changes apply to new members; existing subscriptions retain their current price.
Enter one benefit per line and optionally upload an image or reuse your Page avatar.
Click **Save membership**. Configure and publish the members area on the same Community screen.
## How Joining Works
Visitors open the Community tab on your PayRequest Page and see the membership offer. After they click **Become a member** and complete the first recurring payment, PayRequest creates an active subscription and unlocks the Community.
Visitors can also select **Join free** before purchasing. Free membership is confirmed by email and unlocks posts marked **Free and paid members**. Upgrading keeps the same customer identity and adds access to paid members-only content.
The public offer can show the membership name, description, image, recurring price, interval, benefits, and join or login action. Membership products do not show a quantity selector because one customer purchases one membership.
## Login and Access
Publishing a Community automatically keeps customer login visible on your PayRequest Page. Members receive a single-use magic login link and can immediately open protected content.
Access is granted only when:
* The customer belongs to the business that owns the Page
* The subscription belongs to the Page's connected membership product
* The subscription is active or in trial
If the subscription ends, protected Community content is locked automatically. Cancellation normally preserves access until the end of the paid billing period.
## Member Self-Service
Logged-in customers can manage their subscription from their Page account, including cancellation where the product permits it. They can also open **My downloads** to retrieve digital products purchased from PayRequest creators.
## Frequently Asked Questions
Not currently. Each PayRequest Page connects to one membership product, keeping the offer and access rules simple.
Use **Community** in the dashboard. Membership products remain visible under Products, but Community is the central setup screen.
Yes. The new price applies to future members. Existing subscriptions keep the price already attached to them.
Free members can read public posts and posts marked **Free and paid members**. Only active or trial paying members unlock posts marked **Active members only**.
Not yet. Use Mollie, Stripe Connect, or PayRequest Merchant of Record.
## Next Steps
Create the private welcome page and organize members-only content.
Write public or members-only posts.
Customize the shared banner, avatar, colors, and Page profile.
Learn how recurring subscriptions move through their statuses.
# Order Management
Source: https://docs.payreque.st/shop-and-checkout/order-management
Process and track customer orders from checkout to fulfillment
# Order Management
Manage customer orders from placement through fulfillment. Track payment status, create invoices, and handle order lifecycle efficiently.
## Order Overview
Orders are created when customers purchase products through your shop, payment page, or smart links. Each order contains:
* **Order Number**: Unique identifier (e.g., ORD-1234567890-1)
* **Customer Information**: Name, email, address
* **Order Items**: Products, quantities, prices
* **Payment Status**: Pending, Paid, Failed, Refunded
* **Order Status**: Pending, Completed, Cancelled
## Order Creation Modes
Control when orders are created based on your business needs. This setting is configured per product.
### Orders at Checkout (Default)
The standard behavior where orders are created immediately when a customer starts checkout.
**Flow:**
1. Customer adds products to cart
2. Customer enters checkout details
3. **Order created immediately**
4. Customer registration email sent
5. Order confirmation email sent
6. Customer redirected to payment
7. On payment success: Order marked as paid
8. On payment failure: Order marked as cancelled
**Best For:**
* Products requiring immediate order tracking
* Businesses needing visibility into abandoned carts
* Standard e-commerce workflows
### Paid-Only Orders
Orders are only created after successful payment. No records or emails until payment is confirmed.
**Flow:**
1. Customer adds products to cart
2. Customer enters checkout details
3. Cart data stored temporarily (24 hours)
4. Customer redirected to payment
5. On payment success: **Order created now**, emails sent
6. On payment failure: No order created, no emails
**Best For:**
* High-traffic products with many abandoned checkouts
* Reducing email noise and spam notifications
* Cleaner order data (only paid orders appear)
* Lead generation products where unpaid leads aren't valuable
**How to Enable**: Go to your product settings and find "Order Creation" in the Custom Fields step. Select "Paid-only orders" to enable this mode.
## Order Statuses
### Payment Status
| Status | Description |
| - | - |
| **Pending** | Awaiting payment confirmation |
| **Paid** | Payment successfully received |
| **Failed** | Payment failed or was declined |
| **Refunded** | Payment was refunded to customer |
### Order Status
| Status | Description |
| - | - |
| **Pending** | Order placed, awaiting fulfillment |
| **Completed** | Order fulfilled and delivered |
| **Cancelled** | Order was cancelled |
## Managing Orders
### Viewing Orders
1. Navigate to **Orders** in your dashboard
2. Use filters to find specific orders:
* Date range
* Payment status
* Order status
* Customer name or email
### Order Details
Click any order to view:
* Complete order information
* Product line items with quantities
* Custom field values submitted by customer
* Payment history and transaction IDs
* Associated invoice (if created)
* Related subscription (for recurring products)
* **Digital downloads** — Download tokens with file name, usage count, expiry, status, and copyable link (for [digital products](/products-and-pricing/digital-products))
### Order Location Tracking
PayRequest automatically detects and displays customer location information for each order. This helps you understand where your customers are located geographically.
**What's Captured:**
* **Country**: Automatically detected from the customer's IP address
* **IP Address**: The customer's IP at time of order
* **Visual Map**: Interactive map showing the customer's country
**How It Works:**
1. When a customer places an order, PayRequest detects their location using Cloudflare headers (most accurate) or IP geolocation services
2. The country code and IP address are stored with the order
3. On the order detail page, you'll see an **Order Location** card displaying:
* Country flag emoji (e.g., 🇪🇸 for Spain)
* Full country name with code (e.g., "Spain (ES)")
* Visual map centered on the country
* Customer's IP address
Location detection uses Cloudflare's geolocation headers when available, providing highly accurate country detection. This works automatically for orders from your shop, payment pages, and smart links.
**Supported Countries:**
The map display supports 24+ countries including all major European countries (Netherlands, Belgium, Germany, France, Spain, Italy, UK, etc.), North America (US, Canada, Mexico), and other regions (Australia, Japan, Brazil, etc.).
**Privacy Note:**
IP addresses and location data are only visible to you as the business owner. This information is not shared with other customers or third parties.
### Creating Invoices from Orders
Invoices can be automatically or manually created from orders:
**Automatic Invoice Creation:**
* Enable in Shop Settings
* Invoice created when order is paid
* Invoice number auto-generated
**Manual Invoice Creation:**
1. Open the order details
2. Click "Create Invoice"
3. Review and customize if needed
4. Invoice linked to order automatically
## Email Notifications
### Orders at Checkout Mode
| Event | Email Sent |
| - | - |
| Checkout started | Customer Registration (if new) |
| Order created | Order Confirmation |
| Payment received | Order Completed |
| Order cancelled | Order Cancelled |
### Paid-Only Orders Mode
| Event | Email Sent |
| - | - |
| Checkout started | None |
| Order created (after payment) | Order Confirmation + Order Completed |
| Payment failed | None (no order exists) |
**Reducing Email Noise**: If you're getting too many "Customer registered" and "New order" notifications from abandoned checkouts, switch affected products to "Paid-only orders" mode.
## Order Subscriptions
Manage subscriptions directly from the order detail page. The **Order Subscriptions** card appears when an order contains recurring products.
### Automatic Subscription Creation
When orders contain recurring products:
1. Payment is processed
2. Order marked as completed
3. Subscription automatically created and linked to the order
4. Customer receives subscription confirmation
5. Future billings handled by subscription system
### Creating Subscriptions Manually
If a subscription wasn't created automatically (e.g., manual order entry):
1. Open the order detail page
2. Find the **Order Subscriptions** card in the sidebar
3. Products without subscriptions show a **Create** button
4. Click **Create** to generate a new subscription linked to this order
### Linking Existing Subscriptions
Connect an existing unlinked subscription to an order. This is useful when:
* A subscription was created separately and needs to be associated with an order
* You're reconciling historical data
* A subscription was accidentally unlinked
**To link a subscription:**
1. Open the order detail page
2. In the **Order Subscriptions** card, find "Or link an existing subscription to this order"
3. Use the searchable dropdown to select from available subscriptions
4. The dropdown shows: Product name, Subscription ID, Amount, Interval, and Status
5. Click **Link Subscription to Order**
Only subscriptions belonging to the same customer and matching the order's product types appear in the dropdown. Subscriptions already linked to other orders won't be shown.
### Viewing Linked Subscriptions
Subscriptions linked to an order display with:
* Green background indicating active link
* Product name and pricing
* Current status (Active, Paused, etc.)
* **View Subscription** button to open full subscription details
## Order Tags
Organize and categorize orders using tags. Tags help you segment orders by source, campaign, customer type, or any custom classification.
### Viewing Tags
Tags appear in the sidebar of the order detail page, below Order Notes. Each tag displays with its assigned color for easy identification.
### Managing Tags
1. Open an order's detail page
2. Find the **Order Tags** section in the sidebar
3. Click **Manage** to open the tag modal
4. Select or deselect tags using the searchable dropdown
5. Click **Save Tags** to apply changes
### Creating New Tags
From the tag management modal:
1. Click **Create New Tag**
2. Enter a tag name
3. Select a color
4. Click **Create Tag**
The new tag is automatically selected and added to the order.
### Tag Types
Order tags use the **Order** and **Support** tag types. These are separate from product, customer, or invoice tags, allowing you to maintain organized tag categories.
### Use Cases
| Tag Example | Purpose |
| - | - |
| **Marketing Campaign** | Track orders from specific promotions |
| **Priority** | Flag orders needing urgent attention |
| **Sales Channel** | Identify source (Website, Social, Referral) |
| **Issue** | Mark orders with problems to resolve |
| **VIP** | Highlight high-value customer orders |
**Bulk Tagging**: For tagging multiple orders at once, use the Orders list view with filters to identify orders, then tag them individually from their detail pages.
## Order Channels
Orders can come from multiple sources:
### Shop Checkout
* Full cart experience
* Multiple products per order
* Custom field collection
* Supports both order creation modes
### Payment Page
* Single product or custom amount
* Quick checkout flow
* Supports both order creation modes
### Smart Links
* Shareable payment links
* Redirects to appropriate checkout
* Inherits product's order creation mode
## Best Practices
Track checkout-to-payment conversion rates to identify issues
Enable for high-volume products to reduce noise, keep default for premium products
Always create invoices for paid orders to maintain financial records
Use tags to organize orders by source, campaign, or customer type
## Troubleshooting
### Order Not Created After Payment
For paid-only mode products:
* Check if payment was actually successful in your payment provider
* Verify webhook is receiving payment notifications
* Order may take a few seconds to appear after payment
### Duplicate Order Emails
* Each order sends one confirmation email
* Duplicate emails may indicate webhook issues
* Check webhook logs in Settings > Webhooks
### Customer Not Found on Order
* Customer was created during checkout
* Check customer list with the email used
* Customer may have used different email than expected
## Related Topics
Set up products with order creation modes
Learn about organizing with tags
Customize your checkout experience
Create shareable payment links
# Posts
Source: https://docs.payreque.st/shop-and-checkout/posts
Publish news, updates, changelogs, sales, and member-focused announcements on your PayRequest page.
# Posts
Posts let you turn your PayRequest page into more than a payment page. You can share product news, launch updates, special offers, changelogs, or membership announcements directly on your public page at `payrequest.me//posts`.
Visitors can open the **Posts** tab from your PayRequest page, read your updates, and continue to your products or payment options without leaving your page.
Posts are useful for creators, SaaS businesses, consultants, communities, and anyone who wants a simple public update feed next to their products and payment options.
## What You Can Publish
Each post has a type so visitors can quickly understand what kind of update they are reading.
Share general announcements, business updates, launch notes, or important changes.
Tell customers what improved, what changed, or what is coming next.
Keep a simple history of product improvements, fixes, and new features.
Promote limited-time offers, discounts, bundles, or seasonal campaigns.
Share updates for supporters, subscribers, members, or private communities.
Add a product to a post so readers can view it and buy directly from the update.
## Create a Post
From your PayRequest dashboard, go to **Posts**.
Start a new update and give it a clear title.
Pick the type that best matches the post: **News**, **Update**, **Changelog**, **Sale**, or **Membership**.
Use the editor to format text, add headings, create lists, insert links, add emoji, or embed a YouTube video.
If the post is about a product, choose it under **Embedded product**. The product will appear inside the post with a button to view it.
Choose **Public** when the post is ready. Choose **Draft** if you want to keep working on it privately.
## Drafts and Public Posts
Posts can have two statuses:
* **Draft** — only visible to you in the dashboard. Use this while writing or reviewing an update.
* **Public** — visible on your PayRequest page and available through a direct post link.
You can switch a post between Draft and Public at any time.
## Members-Only Posts
Choose an access level for every post:
* **Everyone** — anyone can read the complete post.
* **Free and paid members** — confirmed free members and paying members can read it.
* **Active members only** — only customers with an active or trial paid membership can read it.
Visitors without the required access see a locked state and the appropriate free-join, paid-join, or login action.
When Community is enabled, select a **Community section** such as Breakfast, Lunch, Dinner, or Tips & tricks. Sections organize the protected library without changing the post's direct URL. Removing a section leaves its posts intact and uncategorized.
## Comments and Emoji
Logged-in customers can comment below content they may read. Free members can comment on public and free-member posts. Paid members can also comment on active-members-only posts. Readers can type any Unicode emoji or use the quick emoji buttons below the comment field.
Comments display the customer's safe display name and are scoped to the creator and post. Customers can delete their own comments. Guests can read comments on content they may access, but must log in before joining the conversation.
When notifying the members audience, the email contains only a short excerpt and a link. PayRequest checks membership access again when the reader opens the post.
Set up your recurring plan, benefits, payment provider, member login, and protected content.
Create a community-first page for visitors, free members, and paying members.
## Pin a Post
Use the three-dot menu on a published post and select **Pin post** to keep it above newer posts in Community. A **Pinned** badge identifies it to visitors and members.
Each account can pin one post at a time. Pinning another published post automatically unpins the previous one. Moving a pinned post back to Draft also removes the pin.
## Where Posts Appear
Depending on their access, posts can appear in four places:
* **Posts dashboard** — manage, edit, delete, and open your posts.
* **Public Posts tab** — visitors can browse your public posts at `payrequest.me//posts`.
* **Direct post link** — each public post has its own URL, such as `payrequest.me//posts/my-update`.
* **Community** — public, free-member, and paid-member posts appear according to each reader's access inside `payrequest.me//community`.
Share direct post links in newsletters, social media, Discord, WhatsApp, or customer emails. The post keeps your profile, description, and navigation visible, so readers always know they are still on your official PayRequest page.
## Product Embeds
When a post is connected to a product, PayRequest shows a compact product block inside the post. This is useful when you want to:
* Announce a new product
* Explain why a product changed
* Promote a sale
* Link a changelog entry to a paid upgrade
* Send customers from an update straight to checkout
The product embed includes the product name, short details, price, image if available, and a button to view the product.
## YouTube Videos
You can add YouTube videos to posts from the editor. Click the YouTube button, paste the video URL, and insert it into the post.
When the post is viewed publicly, PayRequest turns supported YouTube links into an embedded video player.
## Tips for Better Posts
**Use clear titles.** A title like "July Product Update" or "Summer Sale: 20% Off Business Plan" is easier to understand than a vague title like "Update".
**Keep the first paragraph useful.** Visitors often skim. Start with the main point before adding details.
**Use the right post type.** Sales, changelogs, and membership posts feel different to readers. The type helps set expectations.
**Embed the product when there is a clear action.** If the post is about buying, subscribing, upgrading, or trying something new, attach the product so readers do not need to search for it.
## Frequently Asked Questions
Yes. Set the post status to **Draft**. Draft posts stay private until you change them to **Public**.
Yes. Share `payrequest.me//posts` to send visitors directly to your public posts.
Yes. Open the post from your dashboard and copy its public URL.
Currently, a post can show one embedded product. If you want to mention more products, add normal links in the post text.
Free-member posts require a confirmed free signup or paid membership. Paid members-only posts additionally require an active or trial paid subscription.
One per account. Pinning a different post replaces the current pinned post.
No. Posts and Community are built into your PayRequest Page. Your home page, products, Community, and payment options remain available.
## Next Steps
Customize the profile, description, color, and social links shown above your posts.
Learn how products appear on your public page and checkout flow.
Create a Buy Me a Coffee-style support page with messages and public activity.
Use your own domain instead of the default payrequest.me link.
# Product Display Layout
Source: https://docs.payreque.st/shop-and-checkout/product-display
Choose between a scrollable carousel or a classic grid to showcase your products on your PayRequest Page
# Product Display Layout
Your PayRequest Page can show your products in two layouts: a horizontal **Carousel** that lets visitors scroll through cards like a storefront, or the classic **Grid** that groups everything in a collapsible panel. Pick the one that matches how you want customers to experience your offerings.
Product layout only applies to **PayRequest Pages** in **Products mode** (i.e. pages where you've selected specific products to showcase). It has no effect on donation mode or amount-button mode.
## The Two Layouts
Horizontal scrollable row — always visible, no click to expand. A header shows the product count with **‹ ›** controls on the right. Cards peek at the edge to signal more content.
Classic collapsible panel with a 3-column card grid inside. Visitors click **Services & Products (N)** to expand. The default for all pages.
## How to Switch Layouts
Go to **PayRequest Page** in the main menu, then click the **Settings** tab.
Scroll down to the **Products** block. Below the product checkboxes you'll see a **Product layout** picker with two buttons: **Grid** and **Carousel**.
Click **Carousel** or **Grid** — the button highlights instantly to confirm your selection.
Click **Save Settings** at the bottom. Your public PayRequest Page reflects the change immediately.
## Carousel Layout
The carousel is inspired by the "popular stays" style of browsing — a section heading on the left, navigation arrows on the right, and a row of cards that visitors swipe or click through.
### What It Looks Like
```
Services & Products (6) ‹ ›
──────────────────────────────────────
┌──────────┐ ┌──────────┐ ┌──────────┐ …
│ [photo] │ │ [photo] │ │ [photo] │
│ Name │ │ Name │ │ Name │
│ Desc… │ │ Desc… │ │ Desc… │
│ €49 │ │ €129 │ │ €15/mo │
└──────────┘ └──────────┘ └──────────┘
```
* Always **open** — no accordion, no click needed
* Cards peek at the right edge to signal there are more
* **Fade effect** at the edges blends content in and out
* Each card has a large product image (if set), name, short description, price, and a **Subscription** or **Booking** badge where applicable
* Clicking any card goes to that product's detail page
Carousel works best when your products have **images**. Without images a grey placeholder fills the card. Even a simple product photo makes a big difference.
## Grid Layout (Default)
The grid collapses behind a heading so it doesn't dominate the page when a specific product is already selected (e.g., when a customer arrives via a direct product link).
* Opens automatically when no product is pre-selected
* Closes automatically when a product is active (so the form takes center stage)
* Three columns on desktop, two on tablet, one on mobile
* Shows the same product card with image, name, description, price, and badges
## Choosing the Right Layout
| Situation | Recommended layout |
| - | - |
| Products have photos | **Carousel** — images shine in the large card format |
| 4 or fewer products | **Grid** — no need to scroll; everything fits |
| 6+ products | **Carousel** — browsing many items is more natural horizontally |
| Service / portfolio page | **Carousel** — feels like a professional showcase |
| Direct payment links (single product) | Either — the section is hidden when a product is pre-selected |
| Customers on mobile | **Carousel** — swipe feels natural; grid can get long |
## Related Documentation
Customize your avatar, tagline, accent color, and social links
Cards, List, and Price Table layouts for product categories in your shop
Add images, descriptions, and pricing to your products
Carry your PayRequest Page as a scannable card in Apple Wallet
# README Badge
Source: https://docs.payreque.st/shop-and-checkout/readme-badge
Get a copy-paste badge that links to your PayRequest Page — perfect for a GitHub README, a website footer, or anywhere else that supports images and links.
# README Badge
Add a small, professional badge to your project's README, website, or bio that links straight to your PayRequest Page. It's a one-click copy from your dashboard — no design work, no image hosting, nothing to maintain.
The badge is available for every PayRequest Page that has a handle set (your `payrequest.me/your-handle` link). If you haven't chosen a handle yet, do that first from **PayRequest Page → Overview**.
## Overview
Grab a ready-made snippet from your dashboard — nothing to write or format yourself.
GitHub, GitLab, npm packages, blogs, forums — anywhere that renders Markdown or plain images and links.
The badge reflects your page live — if you're running a donation goal, it shows the amount raised right now.
The wording adapts automatically depending on whether your page is set to Products, Amounts, or Donation mode.
## How to Get Your Badge
Go to **PayRequest Page** from the main menu — you'll land on the **Overview** tab by default.
In the left-hand sidebar, look for the **README badge** card, just below the **Page Mode** card. This only appears once your page has a handle.
Click the copy icon in the field — it copies a ready-to-paste snippet that already includes your handle and links to your live PayRequest Page.
Drop it into your GitHub README, your website, or anywhere else — see below for specific examples.
## Adding It to GitHub
On GitHub, click the pencil (edit) icon on your `README.md` file, or edit it locally and push the change.
Paste the copied snippet near the top of the file, or under a **Support** / **Sponsor** heading further down — both are common conventions.
Commit directly to your default branch, or open a pull request if that's your project's convention.
Open the repository page on GitHub — your badge should appear as a small clickable image. Clicking it takes visitors straight to your PayRequest Page.
A common pattern is to place it right after your project title and description, alongside other badges like build status or version — that's usually the first thing visitors see.
## Adding It Elsewhere
The snippet is standard Markdown, so it works anywhere Markdown is supported:
| Where | How |
| - | - |
| **GitLab / Bitbucket** | Same as GitHub — paste into `README.md` |
| **npm / PyPI package README** | Paste into the README file that ships with your package |
| **Blog posts** | Most blogging platforms (Ghost, Dev.to, Hashnode) accept the same Markdown snippet |
| **Forum signatures** | If the forum only accepts an image + link (not Markdown), use the plain image address shown next to the snippet and wrap it in your forum's own link format |
| **A plain website** | Use the badge as a normal `` tag pointing to the same image address, wrapped in a link to your PayRequest Page |
If a platform doesn't support Markdown, you can still use the badge — it's just a small image. Right-click the rendered badge on your own page (or ask a developer friend) to grab the direct image address, then use it with that platform's own image + link syntax.
## What the Badge Shows
The text on the badge updates automatically based on your [Page Mode](/shop-and-checkout/donation-mode):
| Page Mode | Badge shows |
| - | - |
| **Products & services** or **Amount buttons** | "Pay with PayRequest" |
| **Donation mode** (no goal set) | "Support me · PayRequest" |
| **Donation mode** (goal set) | "Support me · €X raised" — the live total for your current goal period |
You don't need to update the badge yourself when your donation total changes — anyone viewing your README or website always sees the current amount, refreshed every few minutes.
## Frequently Asked Questions
Yes. Your handle is what makes your PayRequest Page URL (`payrequest.me/your-handle`) and it's also part of the badge image address. Set one from **PayRequest Page → Overview** if you haven't already.
Not currently — the badge uses a consistent PayRequest style so it's instantly recognizable, and the wording is chosen automatically based on your Page Mode.
No. It's a tiny image, similar in size to any other status badge you might already be using.
Update the badge snippet with your new handle — old links using the previous handle will stop matching your page, so re-copy the snippet from your dashboard after a handle change.
Yes — the badge has its own fixed background color, so it stays legible in both GitHub's light and dark themes.
## Next Steps
Turn your page into a fundraising goal with a live progress bar and donor feed — your badge shows the running total.
Brand your page with an avatar, tagline, accent color, and social links.
A friendlier "Buy Me a Coffee"-style version of Donation Mode with a drinks menu and GIFs.
Use your own domain for your PayRequest Page instead of payrequest.me.
# PayRequest Page Styling
Source: https://docs.payreque.st/shop-and-checkout/sales-page-styling
Customize your PayRequest Page appearance with a Profile Banner, avatar, tagline, accent color, social links, and live preview
# PayRequest Page Styling
Customize your PayRequest Page to reflect your brand identity. The Styling tab provides a live preview that updates in real-time as you make changes, so you can see exactly how your page will look to visitors.
## Overview
Your PayRequest Page is your public-facing profile where customers can browse your products and make purchases. The Styling tab lets you personalize:
* **Profile Avatar** - Your photo or logo
* **Profile Banner** - A branded cover image with separate desktop and mobile crops
* **Name & Tagline** - Your business identity
* **Bio/Description** - Tell visitors about yourself
* **Page Theme** - Crypto-native background and card style (Solana or Crypto Native)
* **Accent Color** - Your brand color for buttons and highlights
* **Social Links** - Connect up to 25 social platforms and contact options
Changes in the Styling tab update the preview in real-time. No need to save to see how it looks!
## Accessing the Styling Tab
1. Navigate to **PayRequest Page** from the main menu
2. Click the **Styling** tab (between Dynamic Links and Settings)
3. The page displays a two-column layout:
* **Left**: Live preview of your PayRequest Page
* **Right**: Styling options and controls
## Live Preview
The left column shows a real-time mockup of your PayRequest Page. This preview:
* Updates instantly as you type
* Shows your Profile Banner, avatar, name, tagline, and social links
* Displays your selected products
* Mirrors the dark theme of your actual PayRequest Page
The preview stays fixed while you scroll through the styling options, so you always see your changes.
To see your actual live page, click **View Live Page** button to open it in a new tab.
## Profile Avatar
Your avatar appears prominently at the top of your PayRequest Page. You have two options:
### Option 1: Use Social Profile Avatar
If you've added social links, PayRequest can automatically fetch your avatar from those platforms:
| Platform | How It Works |
| - | - |
| X (Twitter) | Uses your X profile picture |
| GitHub | Uses your GitHub avatar |
| YouTube | Uses your channel avatar |
| Twitch | Uses your Twitch profile picture |
| Substack | Uses your Substack author photo |
| Telegram | Uses your Telegram profile picture |
| SoundCloud | Uses your SoundCloud avatar |
| Website | Uses your website's favicon |
Simply click on any available avatar to select it. A blue checkmark indicates your current selection.
### Option 2: Upload Custom Avatar
1. Scroll to **"Or upload your own"** section
2. Drag and drop an image, or click to browse
3. Supported formats: JPG, PNG (up to 10MB)
For best results, use a square image at least 200x200 pixels.
### Removing Your Avatar
Click the **Remove** button next to your current avatar to revert to the default placeholder.
## Profile Banner
Add a wide cover image to the top of your public PayRequest Page. Your avatar overlaps the lower edge of the banner, keeping your profile identity visible while giving your page more room for your brand, artwork, or campaign image.
Profile Banner is available on every PayRequest plan, including Free. Pages without a custom banner automatically use the PayRequest default banner.
### Uploading a Banner
1. Open **PayRequest Page** and select the **Styling** tab
2. Find the **Profile Banner** card
3. Drag and drop an image, or click the upload area to choose one
4. Adjust the desktop and mobile crop positions
Supported formats are **JPG, PNG, WebP, and AVIF**, with a maximum file size of **15MB**. For a sharp result, use an image of at least **1500 × 500 pixels**.
### Desktop and Mobile Crops
PayRequest uses a fixed responsive banner shape so it stays consistent across screen sizes:
| Preview | Aspect Ratio | Best For |
| - | - | - |
| **Desktop** | 3:1 | Wide browser and laptop layouts |
| **Mobile** | 16:9 | Narrow phone layouts |
Use the horizontal and vertical position controls below each preview to choose which part of the same image remains visible. This lets you keep a face, logo, or important text centered on both desktop and mobile without uploading two separate files.
Keep essential content away from the extreme edges. Check both crop previews before you finish, especially when your banner includes text or a logo.
### Replacing or Removing a Banner
Upload another image from the Profile Banner card to replace the current banner. Click **Remove** and confirm the action to hide the banner completely. You can bring the PayRequest default back later with **Use default banner**.
The Profile Banner appears on your main public PayRequest Page, individual post pages, and invoice payment pages. It is not added to product, quote, or dynamic-amount pages.
## Tagline & Bio
### Your Name / Business Name
This is the main heading on your PayRequest Page. It appears large and prominent below your avatar.
* Use your personal name for freelancer pages
* Use your company name for business pages
* Keep it concise and recognizable
### Tagline
A short subtitle that describes what you do. Examples:
* "Creator of Laravel"
* "Web Development & Design"
* "Premium Coffee Roasters"
* "Digital Marketing Expert"
Your tagline appears directly below your name in a lighter color. Keep it under 50 characters for best display.
### Description
A longer bio that tells visitors about you or your business. This appears below your social links and before your products.
Tips for a good description:
* Explain what you offer
* Highlight your expertise or unique value
* Keep it 2-3 sentences max
* Include a call to action if appropriate
## Page Theme
Give your page a crypto-native aesthetic with one of two premium themes. The **Page Theme** card sits directly above the Accent Color card in the Styling tab.
| Theme | Look |
| - | - |
| **Default** | Standard PayRequest dark style — clean and neutral |
| **Solana** | Deep dark bg with purple-to-green radial glow, glowing purple card border |
| **Crypto Native** | Animated gradient mesh (cyan/violet), glassmorphism frosted-glass card |
Themes control the background and card styling. Your accent color still applies on top — so you can combine a **Solana theme** with a purple accent for a fully Solana-branded page.
See the full [Crypto Page Themes guide](/shop-and-checkout/crypto-page-themes) for screenshots and combination tips.
## Accent Color
Pick a brand color that's used across your PayRequest Page for buttons, highlights, and your avatar border. If you leave it unset, the page falls back to the default blue.
### Picking a Color
The Accent Color card gives you three ways to choose:
| Method | When to Use |
| - | - |
| **Swatch palette** | Pick from a curated set of 10 brand-friendly colors (Blue, Indigo, Violet, Pink, Red, Amber, Emerald, Teal, Sky, Black) |
| **Native color picker** | Click the small color square to open your operating system's color picker — useful for matching an exact brand color |
| **Hex input** | Type or paste a hex value like `#f59e0b` directly |
A ring around the active swatch shows your current selection. The live preview updates instantly as you change colors.
### Where the Accent Appears
When you set a custom accent color, it's applied to:
* **The "Pay" button** on your PayRequest Page
* **Your avatar border** (the ring around your profile picture)
* **Selected product highlights** — the ring around the product card you've chosen
* **Other primary call-to-action buttons** in the customer flow
Pick a color with strong contrast against the dark page background. Pure black or very dark colors can blend into the page; bright or saturated colors stand out best.
### Clearing the Color
Click **Clear** next to the picker to reset to the default. Your PayRequest Page will revert to the standard blue accent.
Accent color is a per-page setting. If you have multiple businesses or pages in the future, each can have its own accent.
## Social Links
Social links serve two purposes:
1. **Display on your PayRequest Page** - Visitors can click each platform's brand icon to visit your profiles
2. **Avatar selection** - PayRequest fetches avatars from supported platforms
Your page supports **25 platforms** — everything from creator platforms like Instagram, TikTok, and OnlyFans to professional networks and direct contact options like email and phone. Each link appears on your public page with its official brand icon.
### Available Platforms
**Primary platforms** (always visible in the editor):
* Instagram
* TikTok
* Twitter/X
* YouTube
* Website
**More platforms** (click **Add More** to expand):
| Category | Platforms |
| - | - |
| Streaming & Gaming | Twitch, Kick, Discord |
| Creator & Content | Snapchat, Spotify, SoundCloud, Substack, Pinterest, Patreon, OnlyFans |
| Social & Community | Facebook, Reddit, Telegram |
| Professional | LinkedIn, GitHub, Calendly |
| Direct Contact | Email, Phone, WhatsApp, Signal |
The **Add More** section includes a search field — start typing a platform name to filter the list instantly instead of scrolling.
### Adding Social Links
The five most popular platforms are always visible. Click **Add More** to reveal the full list, and use the search field to jump straight to a platform.
Paste the full URL (e.g., `https://instagram.com/username`) or just type the address without `https://` — PayRequest adds it automatically.
For **Email**, enter your address (e.g., `hello@example.com`) and for **Phone**, your number (e.g., `+31 6 12345678`). Visitors who click these icons get a ready-to-send email or phone call — PayRequest converts them to `mailto:` and `tel:` links automatically.
Every link you add appears instantly in the preview with its brand icon, exactly as visitors will see it.
Only add links to profiles you actively maintain. Broken links create a poor impression.
## Saving Your Changes
Click **Save Styling** at the bottom of the right column to save all your changes.
While the preview updates in real-time, your changes aren't saved until you click the save button. The actual live page only updates after saving.
## Best Practices
Your avatar is the first thing visitors see. Use a clear, well-lit photo or a clean logo. Avoid blurry images or complex graphics that don't scale well.
Your tagline should instantly communicate what you do. Avoid jargon or overly clever phrases. Clear and simple wins.
Quality over quantity. It's better to have 2-3 active profiles than 8 dormant ones. Remove links to profiles you no longer use.
Think about who visits your PayRequest Page. What do they need to know? Focus on benefits and outcomes, not just features.
After saving, visit your PayRequest Page on your phone to ensure everything looks good on smaller screens.
## Frequently Asked Questions
Avatar options only appear for platforms where you've entered a valid social link. Add your social profile URLs first, then the avatar options will become available.
The URL handle is configured in the **Settings** tab, not the Styling tab. Go to Settings and update the "PayRequest Page Handle" field.
Yes — the **Accent Color** card on the Styling tab lets you pick any brand color (from the curated swatches, your OS color picker, or a hex value) for buttons, highlights, and your avatar border. The rest of the page uses a consistent dark theme; for deeper customization see [Custom CSS](/advanced-features/custom-css).
The preview updates in real-time, but the actual live page only updates after you click **Save Styling**. Make sure to save your changes.
Avatars are displayed at 96x96 pixels on desktop. Upload an image at least 200x200 pixels for crisp display on high-resolution screens.
The email address and phone number you add are visible to anyone who visits your page — that's the point, visitors can contact you with one click. If you prefer not to share them publicly, simply leave those fields empty.
Yes. PayRequest Pages are built for creators — OnlyFans, Twitch, Kick, Discord, Patreon, Snapchat, and more are all supported with their official brand icons. Click **Add More** in the Social Links card and search for the platform.
## Related Documentation
Solana and Crypto Native themes for your payrequest.me page
Carry your PayRequest Page as a card in Apple Wallet
Let visitors send USDC directly to your wallet from your page
Use your own domain for your PayRequest Page
Configure your business information
Switch between carousel and grid for your product showcase
See how many people visit your PayRequest Page each day (Premium)
# Search Command Palette
Source: https://docs.payreque.st/shop-and-checkout/search-command-palette
Powerful search functionality for customers to quickly find products, invoices, orders, and subscriptions in your shop
## Overview
The Search Command Palette provides customers with a powerful, keyboard-driven way to search across all available content in your shop. Similar to developer tools like VS Code, customers can quickly find products, their personal invoices, orders, and subscriptions using a modern command palette interface.
## Accessing the Search
### Keyboard Shortcut
The fastest way to open search:
* **Windows/Linux**: `Ctrl + K`
* **Mac**: `⌘ + K`
### Click Interface
Customers can also click the search icon (🔍) in the shop's top navigation bar.
### Mobile Support
On mobile devices, customers can tap the search icon to open the full search interface.
## Search Capabilities
### Public Search (All Visitors)
**Products**: Anyone can search your product catalog
* Product names and descriptions
* SKU codes
* Custom product fields
* Product categories
### Personal Search (Logged-in Customers)
When customers are logged in, they can also search their personal data:
* **Invoices**: Invoice numbers, amounts, statuses
* **Orders**: Order numbers, statuses, payment statuses
* **Subscriptions**: Subscription names, statuses, custom fields
## Search Features
### Intelligent Results
Results are grouped and sorted by relevance:
* **Exact matches** appear first
* **Partial matches** follow
* **Results grouped by type** (Products, Invoices, Orders, Subscriptions)
* **Status badges** with color coding
* **Price information** for products
### Real-time Search
* **Live typing**: Results update as customers type
* **Debounced input**: Optimized for performance (300ms delay)
* **Minimum 2 characters** required for search
* **Maximum 10 results** shown with option to be more specific
### Custom Fields Support
The search includes custom fields data:
* **Product custom fields**: Any additional product information
* **Subscription custom fields**: Domain names, special configurations, notes
## User Interface
### Welcome Screen
When opening search without typing, customers see:
* **Search instructions**: "Search your products, invoices, orders, and subscriptions"
* **Login prompt**: Non-logged customers see invitation to log in for personal search
### No Results
When no matches are found:
* **Clear messaging**: "No results found"
* **Helpful suggestion**: "Try a different search term"
### Quick Actions Panel
Logged-in customers see quick navigation options:
* **⌘I**: View All Invoices
* **⌘O**: View All Orders
* **⌘S**: View All Subscriptions
* **⌘P**: Profile Settings
## Search Examples
### Product Search
* Type: `"skateboard"` → Finds all products containing "skateboard"
* Type: `"SK-001"` → Finds product with SKU "SK-001"
* Type: `"monthly"` → Finds monthly subscription products
### Personal Item Search (Logged-in)
* Type: `"INV-123"` → Finds invoice with number INV-123
* Type: `"active"` → Finds all active subscriptions
* Type: `"pending"` → Finds pending orders and invoices
* Type: `"smartskate.nl"` → Finds subscriptions with custom domain field
## Status Badge Colors
The search results show colored status badges:
### Products
* **Green**: Price information (€29.99)
### Invoices
* **Green**: Paid status
* **Yellow**: Pending status
* **Gray**: Other statuses
### Orders
* **Green**: Completed orders
* **Blue**: Processing orders
* **Gray**: Other statuses
### Subscriptions
* **Green**: Active subscriptions
* **Blue**: Trial subscriptions
* **Gray**: Other statuses
## Technical Details
### Search Performance
* **Optimized queries**: PostgreSQL ILIKE for case-insensitive search
* **Indexed searches**: Fast performance even with large datasets
* **Result limitations**: Maximum 10 results to maintain speed
* **Smart caching**: Efficient data retrieval
### Multi-tenant Security
* **Shop isolation**: Customers only see data from their shop
* **Personal data**: Only logged-in customers see their own invoices/orders
* **Secure queries**: All searches properly scoped to prevent data leaks
### Custom Domain Support
* **Seamless URLs**: Works perfectly with custom domains
* **Proper routing**: All result links work correctly regardless of domain setup
## Best Practices
### For Business Owners
**Product Optimization**:
* Use clear, descriptive product names
* Add relevant keywords to product descriptions
* Utilize custom fields for additional searchable information
* Keep SKU codes organized and meaningful
**Customer Experience**:
* Educate customers about the ⌘K shortcut
* Encourage use of search for faster navigation
* Consider search patterns when organizing your catalog
### For Customers
**Search Tips**:
* Use specific terms for better results
* Try different keywords if first search doesn't match
* Use status terms like "active", "pending", "paid"
* Remember keyboard shortcuts for quick access
## Accessibility
### Keyboard Navigation
* **Full keyboard support**: Navigate entirely with keyboard
* **Standard shortcuts**: Follows common keyboard conventions
* **Escape to close**: Easy exit from search interface
### Screen Reader Support
* **Semantic HTML**: Proper markup for screen readers
* **Alt text**: All icons have descriptive text
* **Focus management**: Logical tab order and focus handling
### Mobile Optimization
* **Touch-friendly**: Large touch targets for mobile users
* **Responsive design**: Adapts to all screen sizes
* **Swipe gestures**: Natural mobile interaction patterns
## Troubleshooting
### Search Not Working
1. **Check connection**: Ensure stable internet connection
2. **Refresh page**: Try reloading the shop page
3. **Clear browser cache**: Clear browser data if needed
4. **Try different terms**: Use alternative search keywords
### Results Not Appearing
* **Minimum characters**: Ensure you've typed at least 2 characters
* **Check spelling**: Verify search terms are spelled correctly
* **Login status**: Personal items require customer login
* **Wait briefly**: Allow 300ms for search to complete
### Keyboard Shortcuts Not Working
* **Browser compatibility**: Ensure modern browser version
* **Focus state**: Click in the page before using shortcuts
* **Operating system**: Verify correct modifier key (Ctrl vs ⌘)
***
*Last updated: September 2025*
# Shop Setup
Source: https://docs.payreque.st/shop-and-checkout/shop-setup
Create and configure your PayRequest shop — the multi-product storefront customers browse at /shop/{yourshop}
# Shop Setup
Your PayRequest shop is a full storefront at `payrequest.app/shop/{yourshop}` where customers can browse multiple products, add them to a cart, and check out in one go — separate from single-product [PayRequest Pages](/shop-and-checkout/product-display). Setup happens in one place: **Shop** in your dashboard sidebar.
Every account can have one shop. Once created, the same page is used to edit settings — there's no separate "shop settings" screen.
## How It Works
Navigate to **Shop** and pick a name. It's automatically lowercased and can only contain lowercase letters, numbers, and hyphens — this becomes your URL: `payrequest.app/shop/your-name`. Names must be unique across all PayRequest shops.
Set a shop description and pick a default language (English, Dutch, French, or Spanish).
New shops are created offline by default. Flip the **Shop Status** toggle to make it publicly visible and start accepting orders.
In the **Branding** tab, upload a logo and set a portal accent color (hex code) that's used across your shop and customer portal.
In the **Custom Domain** tab, point your own domain at the shop. See [Custom Domains](/shop-and-checkout/custom-domains) for DNS steps.
Configure tax display, signup, and invoicing behavior in **Shop Settings**, and add Terms & Privacy content in **Legal Pages** if you want to publish your own policies.
## Shop Settings Reference
| Setting | What it does |
| - | - |
| **Shop Status** | Turns the shop online/offline. Offline shops return a "store not found" to visitors. |
| **Allow Signup** | Lets customers create their own login for the customer portal. Turn off to keep checkout guest-only. |
| **Auto Create Invoices** | Automatically generates an invoice for every order placed through the shop. |
| **Allow Invoice Subscriptions** | Permits subscription products to be sold via invoice (not just automatic recurring payment). |
| **Tax Display** | `inclusive` (prices shown include tax) or `exclusive` (tax shown separately at checkout). Applies shop-wide. |
| **Accent Color** | A single hex color used to theme the shop and customer portal. Clear it to fall back to the default theme. |
| **Logo** | Uploaded image (max 10MB), stored on R2 and shown in the shop header. |
Tax display, accent color, and logo also affect the customer portal (order history, invoices, subscriptions) since it shares the same shop branding.
## Legal Pages
The **Legal Pages** tab lets you paste in your own Terms of Service and Privacy Policy content, stored per-shop and shown to customers at checkout. Leaving these empty is fine — PayRequest doesn't require them to operate the shop, but publishing your own is good practice, especially alongside [GDPR Compliance](/security-and-compliance/gdpr-compliance) considerations.
## Related Shop Features
Once your shop is live, these are configured separately:
* **Vacation Mode** — pause new orders temporarily. See [Vacation Mode](/shop-and-checkout/vacation-mode).
* **Spam Protection** — block bots and unwanted countries at checkout. See [Spam Protection](/shop-and-checkout/spam-protection).
* **Product Display** — carousel vs. grid layout for your product catalog. See [Product Display Layout](/shop-and-checkout/product-display).
## FAQ
Yes, from the same **Shop** page — just note the URL changes with it, so update any shared links.
No, each PayRequest account has a single shop tied to your user ID. Single-product PayRequest Pages are a separate, unlimited alternative if you need multiple standalone checkout pages.
Existing orders, invoices, and subscriptions are unaffected — offline only blocks new visitors from reaching the storefront and starting a new checkout.
No. It only hides the option for new customers to register; customers who already have portal accounts can still log in.
## Next Steps
See what customers experience at checkout
How multi-product carts work
Put your shop on your own domain
Pause orders temporarily
# Shopping Cart
Source: https://docs.payreque.st/shop-and-checkout/shopping-cart
How the session-based cart lets customers combine multiple shop products into a single checkout
# Shopping Cart
Customers browsing your [shop](/shop-and-checkout/shop-setup) can add multiple products to a cart and pay for everything in a single checkout, instead of buying one product at a time. The cart lives in the visitor's session — no account or login required to start one.
The cart is separate from single-product [PayRequest Page](/shop-and-checkout/product-display) checkouts, which are for one product (or one product plus custom fields) at a time.
## How It Works
Customers add a product from the shop or a product page. If the product has custom fields (options, add-ons), those are stored per cart line along with the quantity.
For products with quantity selection enabled, adding the same product again increases its quantity. For products with quantity selection **disabled**, the product can only appear once in the cart — adding it again just updates its custom field values instead of creating a duplicate line.
On the checkout page, customers can edit quantity and custom fields per line, or remove an item entirely, before paying.
Checkout collects billing details and payment method once for the whole cart — see [Checkout Customization](/shop-and-checkout/checkout-customization).
## How Totals Are Calculated
Each cart line's price is `(product price + custom field markup) × quantity`. The cart then adds up all lines plus any setup fees:
```
Subtotal = Σ (line totals across all products)
Setup Fees = Σ (one-time setup fee per recurring/service product with a setup fee, not multiplied by quantity)
Tax = Σ (line tax + setup fee tax, calculated per product's tax rate — skipped entirely if the customer is tax-exempt)
Total = Subtotal + Setup Fees + Tax
```
Custom field markups follow the field's own pricing configuration — a fixed markup for toggles/select options, or quantity × per-unit price for number fields with per-unit pricing (see [Custom Fields](/products-and-pricing/custom-fields)).
Setup fees are only counted once per order line, not once per unit — a €10 setup fee on a product with quantity 3 still only adds €10, not €30.
## Cart Persistence & Recovery
* The cart is stored in the browser session, not tied to a customer account — it survives page reloads but not across devices or after the session expires.
* Adding a product via a [dynamic link](/payment-processing/payment-page-dynamic-links) (a URL with `?product=` and quantity/custom-field parameters) adds it to the cart automatically when the checkout page loads.
* If a customer abandons checkout, PayRequest can send a recovery link that restores their exact cart contents — see [Checkout Recovery](/shop-and-checkout/checkout-recovery).
* The cart auto-migrates from any older stored format, so nothing breaks if the cart structure changes between visits.
## FAQ
Yes. If any product in the cart is recurring, checkout switches to collecting a payment mandate (new or existing) instead of a one-time payment. See [Checkout Customization](/shop-and-checkout/checkout-customization).
Checkout re-loads live product data on every visit, so removed or price-changed products reflect current data. An empty cart automatically redirects the customer back to the shop.
Yes — if a logged-in customer is marked tax-exempt, tax is excluded from every line and the setup fee for that cart.
Yes, for products where that's needed (e.g. domain products with different pricing per option), the cart can add the same product as distinct lines rather than merging them.
## Next Steps
What happens after "Checkout"
Recover abandoned carts automatically
Configure per-product quantity selection
Add priced options to products
# Spam Protection
Source: https://docs.payreque.st/shop-and-checkout/spam-protection
Protect your checkout from bots, fake orders, and unwanted traffic from specific countries
# Spam Protection
Keep your checkout safe from spam, bots, and fraudulent orders. PayRequest's built-in spam protection helps you focus on real customers while automatically blocking suspicious activity.
## Why Use Spam Protection?
Without protection, your checkout can be targeted by:
* **Bots**: Automated scripts that create fake orders
* **Card Testers**: Fraudsters testing stolen credit cards
* **Spam Submissions**: Fake names and emails cluttering your data
* **Unwanted Regions**: Orders from countries you don't serve
Enabling spam protection reduces these issues and keeps your order data clean.
## Getting Started
1. Go to **Settings** in your dashboard
2. Click **Spam Protection** in the sidebar
3. Toggle the main **Protection** switch to enable
Once enabled, you'll see additional options to customize your protection.
Spam protection is disabled by default. Enable it when you start receiving unwanted orders or want to proactively protect your checkout.
## Protection Methods
PayRequest uses multiple techniques to identify and block spam:
### CAPTCHA (Cloudflare Turnstile)
An invisible security check that runs in the background. Most real customers won't notice it, but bots will be blocked.
* **Best for**: Stopping automated bot attacks
* **Customer impact**: Minimal - runs silently for most users
### Honeypot
A hidden field that's invisible to humans but gets filled in by bots. If filled, the order is blocked.
* **Best for**: Catching simple bots
* **Customer impact**: None - invisible to real customers
### Name Analysis
Detects randomly generated or suspicious names that don't look like real customer names.
* **Best for**: Blocking gibberish entries like "asdfJKL123"
* **Customer impact**: None for legitimate names
### Rate Limiting
Limits how many checkout attempts can come from the same IP address or email in one hour.
* **Best for**: Preventing rapid-fire spam attacks
* **Customer impact**: Only affects users making many attempts quickly
## Country Blocking
Block orders from specific countries where you don't do business or where you see high fraud rates.
### How to Block Countries
1. Go to **Settings** → **Spam Protection**
2. Enable **Country Blocking** in the Protection Methods section
3. Click the dropdown and search for a country
4. Click the **+** button to add it to your blocked list
5. Repeat for other countries you want to block
### What Customers See
When someone from a blocked country tries to checkout, they'll see a friendly message:
> "Orders from \[Country] are currently not accepted. Please contact support if you need assistance."
This gives legitimate customers a way to reach out if they believe they were blocked in error.
### Removing a Country
To unblock a country:
1. Find the country badge in your blocked list
2. Click the **×** on the badge
3. The country is immediately unblocked
Start by blocking countries where you've seen the most spam or fraud. You can always adjust later based on your blocked attempts log.
## Sensitivity Settings
Adjust how strict the spam detection should be:
| Level | Description |
| - | - |
| **Low** | Only blocks obvious spam. Best if you're seeing false positives. |
| **Medium** (Default) | Balanced protection for most businesses. |
| **Strict** | Aggressive blocking. May catch some edge cases. |
Higher sensitivity may occasionally block legitimate customers with unusual names or email patterns. Monitor your blocked attempts if you increase sensitivity.
## Rate Limits
Control how many checkout attempts are allowed:
* **Max IP attempts/hour**: How many orders from the same IP address (default: 10)
* **Max email attempts/hour**: How many orders using the same email (default: 5)
* **Block duration**: How long blocked IPs stay blocked in minutes (default: 30)
Most businesses can use the defaults. Increase limits if you have many customers from shared networks (offices, universities).
## Whitelists
Ensure trusted customers always get through by whitelisting their email or domain.
### Whitelist an Email
1. In the **Whitelisted Emails** section, enter the email address
2. Press Enter or click **+**
3. That email will bypass all spam checks
### Whitelist a Domain
1. In the **Whitelisted Domains** section, enter the domain (e.g., `yourcompany.com`)
2. Press Enter or click **+**
3. All emails from that domain bypass spam checks
Whitelist your own company domain and any trusted partners who order frequently.
## Viewing Blocked Attempts
The **Blocked Attempts** section shows all orders that were stopped by spam protection:
* **Date**: When the attempt occurred
* **IP Address**: Where it came from
* **Email**: The email used (if provided)
* **Name**: The name entered
* **Reason**: Why it was blocked (Bot Detected, Rate Limited, Country Blocked, etc.)
* **Risk Score**: How suspicious the attempt was (higher = more suspicious)
### Filtering Blocked Attempts
Use the search box and dropdown to filter:
* Search by IP, email, or name
* Filter by reason (CAPTCHA Failed, Country Blocked, etc.)
### Unblocking an IP
If a legitimate customer gets blocked:
1. Click **Unblock IP** in Quick Actions
2. Enter their IP address
3. Click **Unblock**
They can immediately try checkout again.
## Statistics
At a glance, see how your protection is performing:
* **Blocked (24h)**: Attempts blocked in the last day
* **Blocked (7 days)**: Attempts blocked in the last week
* **Unique IPs**: Different IP addresses that were blocked
* **Avg. Risk Score**: Average suspiciousness of blocked attempts
## Best Practices
The default sensitivity and rate limits work well for most businesses. Only adjust if you see issues.
Check regularly to ensure you're not blocking legitimate customers. Look for recognizable emails or company names.
If you have key accounts or partners, whitelist their email domains so they never get blocked.
Only block countries where you genuinely don't do business or see consistent fraud. Don't block countries where you have real customers.
Remember that VPN users may appear to be from different countries. Consider keeping your contact information visible for edge cases.
## Frequently Asked Questions
No. The checks happen instantly in the background. Customers won't notice any delay.
They'll see an error message asking them to try again or contact support. You can unblock their IP manually, or whitelist their email for future orders.
Country detection is based on the customer's IP address. If someone uses a VPN, they'll appear to be from the VPN's location. This is why the blocked message includes contact information for support.
Whitelisted emails bypass all checks. For others, protection only applies to new checkout attempts - existing orders and subscriptions are not affected.
Yes. The blocked attempts log shows the exact reason, risk score, and any issues detected for each blocked attempt.
Very accurate. PayRequest uses Cloudflare's infrastructure when available, which provides reliable country detection. IP-based lookups are used as a fallback.
No. Spam protection only applies to shop checkout. Customers paying invoices through payment links are not affected.
## Need Help?
If you're seeing unexpected blocks or need help configuring spam protection, contact us at [support@payrequest.io](mailto:support@payrequest.io).
# Vacation Mode
Source: https://docs.payreque.st/shop-and-checkout/vacation-mode
Temporarily pause orders for your shop and PayRequest Pages during holidays or maintenance
# Vacation Mode
Take a break without worrying about incoming orders. Vacation Mode lets you temporarily disable all new orders from your shop and PayRequest Page links while keeping your storefront visible.
## When to Use Vacation Mode
Vacation Mode is perfect for:
* **Holidays**: Going on vacation and can't fulfill orders
* **Inventory**: Restocking products and need to pause sales
* **Maintenance**: Updating your shop or products
* **Seasonal Breaks**: Closing during off-season periods
* **Personal Time**: Taking time off from your business
## How It Works
When Vacation Mode is enabled:
* **Shop**: Customers can still browse your products but cannot place orders
* **PayRequest Pages**: Direct product links show a vacation message instead of checkout
* **Existing Orders**: Current orders and subscriptions are not affected
* **Invoice Payments**: Customers can still pay existing invoices
Vacation Mode only blocks **new** orders. Existing subscriptions continue to bill normally, and customers can still pay outstanding invoices.
## Enabling Vacation Mode
1. Go to **Shop** in your dashboard
2. Click the **Shop Settings** tab
3. Find the **Vacation Mode** card
4. Toggle the switch to enable
### Setting an End Date
You can optionally set an automatic end date:
1. Enable Vacation Mode
2. Click the date picker under "Auto-disable vacation mode on"
3. Select the date when you want to resume accepting orders
4. Click **Save Vacation Settings**
When the end date passes, Vacation Mode automatically disables and your shop resumes normal operation.
Leave the end date empty if you want to manually re-enable orders when you're ready.
### Custom Message
Personalize the message your customers see:
1. Enable Vacation Mode
2. Enter your message in the "Custom message for customers" field
3. Click **Save Vacation Settings**
**Example messages:**
* "We're on holiday until January 2nd. Happy New Year!"
* "Closed for inventory. Back next week!"
* "Summer break - see you in September!"
If you don't set a custom message, customers will see a default vacation notice.
## What Customers See
### On Your Shop
Customers visiting your shop will see an amber notification banner at the top of the page with your vacation message and end date (if set).
### On PayRequest Page Product Links
When customers try to purchase via a direct product link, they'll see a vacation notice instead of the payment form. The product information is still visible, but checkout is disabled.
## Monitoring Vacation Mode
When Vacation Mode is active:
* A **Vacation** badge appears on the Shop Settings tab
* The Vacation Mode card has an amber border
* A warning message reminds you that orders are blocked
## Disabling Vacation Mode
To resume accepting orders:
1. Go to **Shop** → **Shop Settings** tab
2. Toggle the Vacation Mode switch off
3. Orders are immediately accepted again
Alternatively, if you set an end date, Vacation Mode disables automatically at midnight on that date.
## Best Practices
If possible, announce your vacation period through email or social media before enabling Vacation Mode.
Use the custom message to tell customers exactly when you'll be back and accepting orders again.
Before enabling Vacation Mode, make sure you've fulfilled or addressed any pending orders.
Set an end date so you don't forget to re-enable orders when you return.
## Frequently Asked Questions
No. Active subscriptions continue to bill normally. Vacation Mode only prevents new orders and subscriptions from being created.
Yes. Existing invoices can still be paid during Vacation Mode. Only new product purchases are blocked.
Your shop remains fully visible. Customers can browse products and view prices - they just can't complete checkout.
Currently, Vacation Mode applies to your entire shop. To disable individual products, set their status to "Archived" or toggle "Show in shop" off.
The end date uses your business timezone (Europe/Amsterdam). Vacation Mode disables at midnight on the selected date.
# Archiving Subscriptions
Source: https://docs.payreque.st/subscriptions/archiving-subscriptions
Permanently shelve subscriptions you no longer need — keep your list clean while preserving all history
# Archiving Subscriptions
Over time, your subscription list fills up with entries that are no longer relevant: customers who switched to a different plan, one-time projects that ended, businesses that closed down. Canceling keeps them visible in your list and in the customer portal. Archiving removes them from view entirely — while keeping every invoice, transaction, and note intact for your records.
Archived subscriptions are hidden from the customer portal, excluded from billing, and not counted in MRR calculations. They stay in your database for audit and reference purposes.
## When to Archive
Archiving is the right choice when a subscription has run its course and no longer needs to be in your day-to-day view.
A customer moved from **Basic** to **Professional**. The old subscription is canceled but still clutters your list. Archive it to keep focus on the active plan.
A customer left permanently — they closed their business, moved to a competitor, or simply don't need the service anymore. Archive their subscription to keep your list current.
A fixed-term project or seasonal subscription (event hosting, campaign website, temporary license) is finished. Archive it instead of leaving it in your canceled list.
Two companies merged, or a customer restructured and consolidated multiple subscriptions into one. Archive the old entries to avoid confusion.
### More Use Cases
* **Product discontinued** — You stopped offering a service. Archive all subscriptions for that product so they don't show up in reports or confuse your team.
* **Free trial that never converted** — The customer tried your service, never paid, and the trial expired months ago. Archive it to separate real customers from leads that didn't convert.
* **Billing dispute resolved** — After a chargeback or dispute, you agreed to end the service. Archive the subscription to signal it's fully resolved — not just canceled.
* **Internal or test subscriptions** — Subscriptions you created for demos, testing, or internal use that are no longer needed.
* **Seasonal customer** — A customer only needs your service during summer or a specific quarter. Archive between seasons to keep your active list focused, reactivate when they return.
* **Duplicate from migration** — After importing subscriptions from another system, duplicates may exist. Archive the extras without losing their payment history.
Archiving is not the same as canceling. Canceled subscriptions still appear in the customer portal and in your subscription list. Archived subscriptions are hidden from both.
### Archiving vs. Canceling vs. Deleting
| | **Cancel** | **Archive** | **Delete** |
| - | - | - | - |
| Visible to customer | Yes | No | No |
| Visible in subscription list | Yes | Only in Archived tab | Gone |
| Invoices & transactions | Preserved | Preserved | Lost |
| Can be reactivated | Yes | Yes | No |
| Counted in reports | As canceled | Not counted | Not counted |
| **Best for** | Customer might come back | Done permanently, keep records | N/A (not supported) |
## How to Archive a Subscription
Go to **Subscriptions**, find the subscription, and open its detail page.
A subscription must be **canceled** before it can be archived. If it's still active, cancel it first.
On a canceled subscription, click the **Archive Subscription** button below the Reactivate button.
A confirmation dialog explains what archiving does. Click **Archive Subscription** to confirm.
The archive button only appears on canceled subscriptions. This two-step flow (cancel → archive) prevents accidentally archiving an active subscription.
## What Happens When You Archive
* **Billing stops** — `next_billing_at` is cleared, the billing job skips it
* **Hidden from customer portal** — the customer no longer sees this subscription
* **Moved to Archived tab** — visible only under **Subscriptions > Archived** with a zinc/gray badge
* **MRR excluded** — not counted in your revenue calculations
* **Bulk action protected** — cannot be resumed or canceled via bulk actions
* **Duplicate detection cleared** — new subscriptions for the same customer + product are allowed
* **All data preserved** — invoices, transactions, orders, tags, and notes remain intact
* **Activity logged** — the archive action appears in the subscription's history
## Viewing Archived Subscriptions
Go to **Subscriptions** and click the **Archived** tab. The zinc-colored badge shows the count.
On the subscription detail page, archived subscriptions show:
* A **zinc/gray "Archived" badge** in the header
* An info message explaining no actions are available
* A **Reactivate Subscription** button for when you need to bring it back
## Reactivating an Archived Subscription
Sometimes a customer comes back, or you archived something by mistake. You can always reactivate:
1. Go to **Subscriptions > Archived** tab
2. Click the subscription to open its detail page
3. Click **Reactivate Subscription**
4. Set up the billing details (next billing date, payment mandate)
5. The subscription returns to **Active** status
Reactivation is the only action available on archived subscriptions. This prevents accidental status changes on subscriptions that should stay shelved.
## Best Practices
Don't archive immediately after canceling. Wait until any pending invoices are paid or resolved, chargebacks are settled, and the customer confirms they don't need reactivation. Then archive.
Tag subscriptions before archiving to make them easier to find later. For example: "churned-2026-Q1", "migrated-to-pro", or "dispute-resolved". Tags are preserved after archiving.
Once a quarter, glance at the Archived tab to verify nothing was archived by mistake. The count badge makes this easy — if it suddenly jumps, investigate.
When you stop offering a product, cancel all related subscriptions first, then archive them together. Use tags to mark the reason (e.g., "product-discontinued").
## FAQs
No. Archived subscriptions are completely hidden from the customer portal.
No. Only active subscriptions are counted in MRR and revenue reports.
No. All linked data is preserved. Archiving only changes the subscription status. You can still view all invoices and transactions on the subscription detail page.
No. You need to cancel it first, then archive. This two-step process prevents accidentally hiding a subscription that's still billing.
PayRequest doesn't support deleting subscriptions because of linked invoices and transactions. Archiving gives you the same clean-list result without breaking any data relationships.
Yes. Use the **Archived** tab in the subscription list, or search by customer name — archived subscriptions appear when you're on the Archived tab.
Open invoices are not automatically canceled when you archive from the UI. Review and cancel any open invoices manually before archiving, or they will remain open but unbilled.
## Related Articles
Understand all subscription statuses and transitions
Tag subscriptions for easy filtering and organization
Structured cancellation with notice periods
Temporarily halt service for non-paying customers
# Billing Cycles
Source: https://docs.payreque.st/subscriptions/billing-cycles
Configure payment intervals, timing, and billing behavior for subscriptions
## Overview
Billing cycles determine when and how often customers are charged for their subscriptions. PayRequest supports flexible billing intervals, custom timing, and automatic billing date management.
Choose billing cycles that match your business model. Monthly billing provides steady cash flow, while annual billing reduces churn and administrative overhead.
## Supported Billing Intervals
PayRequest supports the following billing intervals:
| Interval | Billing Frequency | Common Use Cases |
| - | - | - |
| **Monthly** | Every 30 days | SaaS, memberships, retainers |
| **Quarterly** | Every 3 months | Enterprise contracts, seasonal services |
| **Yearly** | Every 12 months | Annual subscriptions, domain renewals |
The billing interval is configured on the **product** level. All subscriptions using that product follow the same interval.
## How Billing Works
### Billing Date Calculation
When a subscription is created, PayRequest calculates the first and subsequent billing dates:
**Without Trial:**
```
Creation date: December 5, 2025
Interval: Monthly
First billing: January 5, 2026
Next billing: February 5, 2026
```
**With Trial:**
```
Creation date: December 5, 2025
Trial period: 14 days
Trial ends: December 19, 2025
First billing: December 19, 2025
Next billing: January 19, 2026
```
**With Custom Start Date:**
```
Creation date: December 5, 2025
Custom start: January 1, 2026
First billing: January 1, 2026
Next billing: February 1, 2026
```
### The Billing Process
Each day at **03:00 (Europe/Amsterdam timezone)**, PayRequest processes due subscriptions:
1. **Identify Due Subscriptions**: Find all active subscriptions where `next_billing_at` is in the past
2. **Validate Billing**: Check subscription status (active, not paused, not completed)
3. **Check Trial Status**: Skip billing if subscription is still in trial period
4. **Process Payment**: Charge via mandate or generate invoice
5. **Update Next Billing**: Calculate next billing date based on interval
6. **Record Transaction**: Create transaction record for payment tracking
Billing runs automatically. You don't need to manually trigger payments - just ensure subscriptions are set up correctly.
## Configuring Product Intervals
Set the billing interval when creating or editing a product:
### Step 1: Navigate to Products
Go to **Products** in the sidebar and click **Create Product** or edit an existing one.
### Step 2: Enable Recurring
Toggle **"Is Recurring"** to enable subscription billing for this product.
### Step 3: Set Interval
Choose the billing interval:
* **Monthly**: Charged every month
* **Quarterly**: Charged every 3 months
* **Yearly**: Charged every 12 months
### Step 4: Set Interval Count (Optional)
For custom intervals, set the interval count:
| Interval | Count | Result |
| - | - | - |
| Monthly | 1 | Every month |
| Monthly | 2 | Every 2 months |
| Monthly | 6 | Every 6 months |
| Yearly | 1 | Every year |
| Yearly | 2 | Every 2 years |
Changing a product's interval only affects **new** subscriptions. Existing subscriptions retain their original billing interval.
## Billing Date Management
### Viewing Billing Dates
Each subscription shows:
* **Last Billed At**: Date of most recent successful payment
* **Next Billing At**: Date of upcoming payment
View these in:
* Subscription list table
* Subscription detail page
* Customer profile (subscription section)
### Modifying Billing Dates
To change a subscription's next billing date:
1. Go to **Subscriptions** → Click the subscription
2. Click **Edit**
3. Modify **Next Billing Date**
4. Save changes
**Common reasons to modify billing dates:**
* Align multiple subscriptions to bill on the same day
* Accommodate customer payment cycles
* Correct an incorrectly set date
* Provide billing grace period
Changing the next billing date only affects that one cycle. Subsequent billing dates are calculated from the new date using the standard interval.
### Billing Date Alignment
For customers with multiple subscriptions, you may want to align billing dates:
**Before:**
```
Subscription A: Bills on 5th
Subscription B: Bills on 12th
Subscription C: Bills on 23rd
Result: 3 separate payments per month
```
**After alignment:**
```
Subscription A: Bills on 1st
Subscription B: Bills on 1st
Subscription C: Bills on 1st
Result: 1 combined payment per month (or 3 same-day payments)
```
PayRequest doesn't automatically combine payments. Each subscription generates its own payment, even if billing on the same day.
## Trial Period Impact
Trial periods affect the billing cycle:
### How Trials Work
1. **Subscription created** → Status = "Trial"
2. **Trial period counts down** → No billing occurs
3. **Trial ends** → Status changes to "Active"
4. **First billing** → Payment collected on trial end date
### Trial End Behavior
When a trial ends:
| Mandate Status | Result |
| - | - |
| Active mandate | Payment collected automatically |
| No mandate | Subscription moves to "Pending Mandate" |
| Failed payment | Subscription moves to "Failed" |
### Configuring Trials
Set trial periods on the product:
1. Go to **Products** → Edit product
2. Enable **"Has Trial"**
3. Set **Trial Days** (e.g., 14)
4. Optionally add **Trial Description** (shown to customers)
Common trial lengths: 7 days (quick evaluation), 14 days (standard), 30 days (complex products).
## Payment Timing
### Automatic Billing (Mandate-Based)
For mandate-based subscriptions:
**Daily Schedule:**
* **03:00**: Billing job runs, identifies due subscriptions
* **03:00-04:00**: Payments created in Mollie
* **Within 1-3 business days**: SEPA Direct Debit settles
**Payment Status Flow:**
```
Created → Open → Pending → Paid
↓
Failed (if declined)
```
### Invoice-Based Billing (Manual Payment)
For subscriptions set to **manual payment** (no mandate assigned):
**Daily Schedule:**
* **03:00**: Billing job identifies due subscriptions
* **03:00**: Invoice generated and emailed to customer
* **Customer action**: Customer pays via bank transfer, iDEAL, or payment link
**Invoice Due Date:**
* Default: 14 days from invoice date
* Configurable in invoice settings
You can switch any subscription between automatic and manual payment at any time. See [Payment Methods for Subscriptions](/subscriptions/payment-methods) for details.
### Billing Period on Invoices
Subscription invoices automatically display the billing period so customers know exactly what they're paying for:
| Interval | Period Format | Example |
| - | - | - |
| **Monthly** | Month name + Year | "November 2025" |
| **Quarterly** | Quarter + Year | "Q4 2025" |
| **Yearly** | Year | "2025" |
| **Other** | Date range | "20-11-2025 - 19-12-2025" |
**Where the period appears:**
1. **Invoice Reference**: The period is stored in the invoice reference field
2. **Invoice Item Description**: Each line item shows "Abonnement - November 2025"
3. **Customer Communications**: Email and PDF invoices include the period
**Example Invoice Item:**
```
Product: Directadmin Hosting
Description: Abonnement - November 2025
Quantity: 1
Unit Price: €15.00
Tax (21%): €3.15
Total: €18.15
```
The billing period helps with accounting reconciliation and reduces customer questions about which period an invoice covers.
## Fixed-Term Subscriptions
### Payment Limits
Set a maximum number of payments for fixed-term contracts:
```
Product: 12-Month Premium Plan
Payment limit: 12
Interval: Monthly
```
**Behavior:**
* After 12 payments, subscription status → "Completed"
* No further billing occurs
* Customer retains access based on your business logic
### Tracking Payments
Each subscription tracks:
* **Payments Made**: Number of successful payments
* **Payments Total**: Payment limit (if set)
* **Remaining**: Payments Total - Payments Made
View this information in the subscription detail page.
## Proration (Not Supported)
PayRequest does not currently support prorated billing. Full billing periods are charged regardless of when the subscription starts or changes.
**Workarounds:**
* Use custom pricing for partial first periods
* Offer credit notes for cancelled subscriptions
* Align subscription changes to billing cycle dates
## Billing Failures
When a billing attempt fails:
### Automatic Retry
PayRequest automatically retries failed payments:
| Retry | Timing |
| - | - |
| 1st attempt | Immediately (billing date) |
| 2nd attempt | 2 days later |
| 3rd attempt | 2 days after 2nd |
| Final | 2 days after 3rd |
After max retries (default: 3), subscription status → "Failed"
### Manual Retry
To manually retry a failed payment:
1. Go to **Subscriptions** → Click failed subscription
2. Review failure reason
3. Click **Retry Payment**
### Common Failure Reasons
| Reason | Solution |
| - | - |
| Insufficient funds | Wait and retry, or contact customer |
| Mandate revoked | Request new mandate authorization |
| Account closed | Contact customer for new payment method |
| Technical error | Retry automatically, contact support if persistent |
See [Failed Payment Handling](/subscriptions/failed-payment-handling) for complete dunning configuration.
## Pausing and Billing
When a subscription is paused:
* **Billing stops** immediately
* **Next billing date** is preserved
* **Resume behavior** depends on configuration:
### Resume Options
**Option A: Resume at next billing date (default)**
```
Paused on: December 10
Next billing: January 5
Resumed on: December 20
Next billing: January 5 (unchanged)
```
**Option B: Resume with new cycle**
```
Paused on: December 10
Original next billing: January 5
Resumed on: December 20
New next billing: January 20 (recalculated)
```
Configure resume behavior when pausing the subscription.
## Billing Reports
### Monthly Summary
View subscription billing summaries in **Analytics** → **Subscriptions**:
* **MRR (Monthly Recurring Revenue)**: Total monthly subscription value
* **Active Subscriptions**: Count by status
* **Upcoming Billings**: Next 30 days projection
### Transaction History
All subscription payments appear in **Transactions**:
* Filter by "Subscription" source
* Export to CSV for accounting
* Link transactions to specific subscriptions
## Best Practices
### ✅ Do's
* **Bill on consistent dates** when possible (1st or 15th of month)
* **Monitor failed payments** daily and follow up quickly
* **Test billing** with a test subscription before going live
* **Set appropriate trial lengths** - long enough to evaluate, short enough to convert
* **Document billing terms** clearly for customers
### ❌ Don'ts
* **Don't change intervals** on active subscriptions without customer communication
* **Don't ignore failed payments** - they indicate customer or mandate issues
* **Don't set billing dates** on dates that don't exist (e.g., 31st for monthly)
* **Don't modify billing dates** right before a scheduled billing run
## Troubleshooting
### Subscription Didn't Bill
**Causes:**
1. Subscription status is not "Active"
2. Subscription is paused
3. Trial period not ended
4. Next billing date is in the future
5. Payment limit reached (completed)
**Solution:**
* Check subscription status and next billing date
* Verify trial end date if applicable
* Review subscription details page for status
### Wrong Amount Charged
**Causes:**
1. Quantity changed after subscription creation
2. Custom field markup not calculated
3. Price override was set
**Solution:**
* Review subscription recurring amount
* Check transaction details for breakdown
* Edit subscription if amount needs correction
### Billing Date Keeps Shifting
**Causes:**
1. Month-end dates on 31st shift to 28th/30th
2. Manual billing date modifications
3. Billing failures causing date adjustments
**Solution:**
* Use dates that exist in all months (1st-28th)
* Avoid modifying billing dates unless necessary
* Review billing history for patterns
## Related Documentation
Set up new subscriptions
Configure dunning and retries
Temporary subscription stops
Configure free trials
## Frequently Asked Questions
Yes! Use the "Custom Start Date" option when creating a subscription. Set it to the desired day of the month, and subsequent billing will follow that pattern.
For months with fewer days, billing occurs on the last day of the month. February 28th (or 29th), April 30th, etc. This can cause billing date drift over time.
Currently, you cannot change the interval of an existing subscription. You would need to cancel and create a new subscription with the desired interval.
The billing job runs daily at 03:00 Europe/Amsterdam timezone. Subscriptions with `next_billing_at` in the past are processed.
Billing runs every day, including weekends and holidays. However, SEPA Direct Debit settlement may be delayed during bank holidays - payments are still created, just settled later.
Edit the subscription and move the `Next Billing Date` forward by the desired grace period. The customer won't be billed until that new date.
# Cancellation Requests
Source: https://docs.payreque.st/subscriptions/cancellation-requests
Handle subscription cancellations with notice periods, reason collection, and automatic domain management
# Cancellation Requests
Instead of instantly canceling subscriptions, PayRequest lets you collect cancellation requests with a configurable notice period. This gives you time to retain customers, properly wind down services, and automatically disable domain auto-renewals.
Cancellation requests integrate with the [Support Requests](/customer-management/support-requests) system. Each request creates a support ticket you can review and respond to before the cancellation takes effect.
## Overview
Configurable notice period (default 30 days) before the subscription actually cancels
Customers select a reason and can leave a message explaining why they're canceling
Linked domain auto-renewals are automatically disabled when a cancellation is requested
## How It Works
From the customer portal subscription detail page, the customer clicks **Cancel Subscription**. A modal asks for their cancellation reason and an optional message.
The system calculates the effective cancellation date as the later of:
* Today + the configured notice period (default: 30 days)
* The next billing date (so the customer gets what they've already paid for)
A **Cancel Subscription** support request is automatically created with the customer's reason and message, linked to the specific subscription. When submitting from the portal, the subscription selection is required — the dropdown shows subscription names with amounts and status for easy identification. You can review the request from the Support Requests page.
If the subscription has a linked domain registration with auto-renew enabled, it's automatically turned off at the domain registrar (OpenProvider).
A daily scheduled job checks for subscriptions past their effective cancellation date and cancels them automatically. The linked support request is marked as resolved.
## Cancellation Reasons
When requesting cancellation, customers choose from these reasons:
| Reason | Description |
| - | - |
| **Too Expensive** | Price is a concern |
| **Switching Provider** | Moving to a different service |
| **No Longer Needed** | Service is no longer required |
| **Other** | Custom reason with free text |
Customers can also add a personal message explaining their situation in more detail.
## Product-Level Settings
Each product has its own cancellation configuration. Edit a product and scroll to the **Cancellation Settings** section:
| Setting | Options | Default |
| - | - | - |
| **Cancellation Mode** | Request (with notice period) / Immediate | Request |
| **Notice Period** | 1–365 days | 30 days |
| **Allow Cancel** | Enable/disable the cancel button in the portal | Enabled |
| **Allow Pause** | Enable/disable the pause button in the portal | Enabled |
Set **Cancellation Mode** to **Immediate** if you want the old behavior where clicking cancel stops the subscription right away — no notice period, no support request.
## Managing Pending Cancellations
### Customer Portal
When a cancellation is pending, the customer sees:
* An amber banner showing the requested date and effective cancellation date
* A **Withdraw Cancellation** button if they change their mind
* The cancel button is hidden while a request is pending
### Admin Dashboard
On the **subscription detail page**, admins see:
* A cancellation pending callout with requested and effective dates
* **Withdraw Cancellation** — cancels the request and keeps the subscription active
* **Cancel Now** — immediately cancels without waiting for the notice period
* A link to the related support request for review and communication
On the **support request detail page**, the linked subscription shows a hover popover with status, amount, billing interval, next billing date, and cancellation details. Two dedicated action buttons let you handle the request directly:
* **Approve & Cancel** — Cancels the subscription and resolves the support request in one click
* **Reject & Keep Active** — Clears the cancellation fields from the subscription and rejects the request
The approve/reject buttons appear only while the request is still open or in review. Use these for quick decisions without navigating to the subscription detail page.
## Automatic Processing
A scheduled command runs daily at 06:15 to process cancellation requests:
* Finds all active subscriptions where the effective cancellation date has passed
* Cancels each subscription automatically
* Closes the linked support request as resolved
Once a subscription is automatically canceled after the notice period, it cannot be undone. Use the **Withdraw Cancellation** option before the effective date if the customer wants to stay.
## Frequently Asked Questions
The effective cancellation date is always the later of the notice period end and the next billing date. This ensures customers aren't charged again after requesting cancellation while still getting the service they've already paid for.
Yes. On the subscription detail page, you can use the regular **Cancel Subscription** action for immediate cancellation, or use **Cancel Now** on a pending cancellation request.
The cancellation request is removed, the support request is closed, and the subscription continues as normal. If a domain auto-renew was disabled, you may need to re-enable it manually.
The cancellation creates a support request, so you can communicate with the customer through the ticket. You can also send email notifications from the support request detail page.
## Next Steps
Temporarily pause subscriptions instead of canceling
Manage cancellation requests alongside other support tickets
Configure what customers can do in the portal
Understand the full subscription status flow
# Creating Subscriptions
Source: https://docs.payreque.st/subscriptions/creating-subscriptions
Set up recurring billing for your customers with automatic payment collection
## Overview
Subscriptions enable you to automatically collect recurring payments from customers at regular intervals. PayRequest handles the entire subscription lifecycle: from initial setup and payment authorization, through billing cycles, to pausing, resuming, and cancellation.
Subscriptions are ideal for SaaS products, memberships, retainers, maintenance contracts, and any service with regular billing.
## Key Features
* **Flexible Billing Intervals**: Monthly, quarterly, or yearly billing
* **Free Trials**: Offer trial periods before billing starts
* **SEPA Direct Debit**: Automatic payments via bank mandate
* **Invoice-Based Billing**: Send invoices instead of automatic collection
* **Quantity Support**: Bill per seat, user, or unit
* **Custom Pricing**: Override product prices per subscription
* **Custom Start Dates**: Schedule subscriptions to start in the future
* **Payment Limits**: Set fixed number of payments (e.g., 12-month contracts)
* **Custom Fields**: Collect additional information per subscription
## Prerequisites
Before creating subscriptions, ensure you have:
1. **Payment Provider Connected**: Mollie account configured in Settings → Payment Providers
2. **Recurring Product**: At least one product marked as "Recurring" or type "Subscription"
3. **Customer Record**: The customer you want to bill
Products must have **"Is Recurring"** enabled or product type set to **"Subscription"** to appear in the subscription product dropdown.
## Creating a Subscription (Dashboard)
Navigate to **Subscriptions** in the sidebar, then click **Create Subscription**.
### Step 1: Select Customer
Choose the customer who will be billed for this subscription.
**Customer Selection Tips:**
* Search by name or email
* Customer must have a valid email address
* For mandate-based billing, customer needs a linked Mollie customer ID (created automatically on first payment)
### Step 2: Select Product
Choose a recurring product from your catalog.
**What appears here:**
* Products with "Is Recurring" enabled
* Products with type "Subscription"
* Only active products are shown
When you select a product, the form automatically loads:
* Base price and billing interval from product settings
* Trial period configuration (if product has trial enabled)
* Custom fields defined on the product
### Step 3: Configure Subscription Details
#### Quantity
Set the number of units to bill. Common uses:
* **Per seat pricing**: Charge per user (e.g., 5 users × €10/month = €50/month)
* **Tiered quantity**: Higher quantities for bigger packages
* **Default**: 1 unit
#### Custom Price (Optional)
Enable **"Use custom price"** to override the product's default price:
```
Product price: €49/month
Custom price: €39/month (promotional pricing)
```
Custom pricing is per unit. Total = Custom Price × Quantity.
#### Trial Period
If the product has a trial period configured, it applies automatically. You can also manually set trial days:
```
Trial days: 14
Result: Customer can use service for 14 days before first charge
```
**Trial Behavior:**
* Subscription status = "Trial" during trial period
* No payment collected during trial
* First billing occurs when trial ends
* Trial end date shown clearly in subscription details
#### Custom Start Date
Enable **"Use custom start date"** to schedule when billing begins:
**Use cases:**
* Start billing on the 1st of next month
* Align with customer's fiscal year
* Replace an expiring subscription seamlessly
```
Today: December 5, 2025
Custom start date: January 1, 2026
Result: First payment collected on January 1, 2026
```
### Step 4: Payment Method
Choose how payments will be collected:
#### Mandate-Based (Automatic)
**How it works:**
1. Customer authorizes payments via SEPA Direct Debit
2. PayRequest automatically charges their bank account each billing cycle
3. No action needed from customer after initial authorization
**Requirements:**
* Customer must complete mandate authorization (via email link or checkout)
* Mollie payment provider configured
* Supported: SEPA Direct Debit, credit cards (with recurring capability)
**Mandate Status Scenarios:**
| Scenario | Result |
| - | - |
| Customer has active mandate | Subscription starts immediately |
| No mandate exists | Email sent to customer to authorize |
| Mandate pending | Subscription status = "Pending Mandate" |
#### Invoice-Based (Manual)
**How it works:**
1. PayRequest generates an invoice each billing cycle
2. Invoice emailed to customer with payment link
3. Customer pays invoice manually (iDEAL, bank transfer, card, etc.)
**When to use:**
* Customers prefer to review charges before paying
* Business customers requiring invoice approval
* Markets where SEPA Direct Debit isn't common
Invoice-based subscriptions require Shop settings to enable this option. Go to **Shop Settings** → **Enable Invoice Subscriptions**.
### Step 5: Custom Fields
If the product has custom fields configured, fill them in:
**Common custom field types:**
* **Text**: Company name, project reference
* **Email**: Technical contact email
* **URL**: Website being hosted
* **Number**: Additional seats, storage GB
* **Toggle**: Add-on features with extra cost
* **Select**: Service tier, support level
Toggle and select fields can have **price markup** - enabling them automatically increases the recurring amount.
### Step 6: Review Summary
Before creating, review the summary panel showing:
* **Customer name**
* **Product and quantity**
* **Recurring amount** (including any markup from custom fields)
* **Billing interval** (monthly/quarterly/yearly)
* **Trial period** (if applicable)
* **First billing date**
* **Payment method** (mandate or invoice)
### Step 7: Create
Click **Create Subscription** to finalize.
**What happens next:**
| Payment Method | Customer Has Mandate | Result |
| - | - | - |
| Mandate | Yes | Subscription active, billing scheduled |
| Mandate | No | Email sent to customer with authorization link |
| Invoice | N/A | Invoice created and emailed (if billing soon) |
## Creating Subscriptions via Shop Checkout
Customers can self-subscribe through your shop:
### Customer Flow
1. Customer visits your shop
2. Selects a recurring product
3. Proceeds to checkout
4. Completes payment (first payment or mandate authorization)
5. Subscription created automatically
### Shop Configuration
Configure subscription checkout behavior in **Shop Settings**:
* **Allow trial signups**: Let customers start trials without payment
* **Show billing cycle**: Display "€49/month" or "€499/year" clearly
* **Require immediate payment**: Collect first payment at checkout
* **Enable invoice subscriptions**: Allow invoice-based billing
## Subscription Statuses
After creation, subscriptions progress through various statuses:
| Status | Meaning | Actions Available |
| - | - | - |
| **Active** | Billing normally | Pause, Cancel, Edit |
| **Trial** | In free trial period | Convert early, Cancel |
| **Pending Mandate** | Awaiting payment authorization | Resend email, Cancel |
| **Paused** | Temporarily stopped | Resume, Cancel |
| **Failed** | Payment collection failed | Retry, Update payment method |
| **Canceled** | Permanently ended | Reactivate (create new) |
| **Completed** | Reached payment limit | N/A |
See [Subscription Lifecycle](/subscriptions/subscription-lifecycle) for detailed status transitions.
## Use Cases
### 1. SaaS Monthly Subscription
```
Product: Pro Plan
Price: €49/month
Trial: 14 days
Payment: Mandate (automatic)
```
**Result**: Customer gets 14-day trial, then €49 charged automatically each month.
### 2. Annual Retainer
```
Product: Maintenance Contract
Price: €2,400/year
Custom start: January 1
Payment: Invoice
```
**Result**: Invoice sent on January 1 each year for customer to pay.
### 3. Per-Seat Pricing
```
Product: Team Plan
Price: €10/user/month
Quantity: 15
Custom field: Company Name = "Acme Corp"
```
**Result**: €150/month charged automatically for 15 seats.
### 4. Fixed-Term Contract
```
Product: 12-Month Premium
Price: €99/month
Payment limit: 12 payments
```
**Result**: 12 monthly payments, then subscription automatically completes.
### 5. Domain Renewal
```
Product: Domain Registration
Price: €15/year (based on TLD)
Custom field: Domain = "example.nl"
Interval: Yearly
```
**Result**: Annual renewal charged automatically for domain.
## Best Practices
### ✅ Do's
* **Use clear product names** that explain what's being billed
* **Set appropriate trial lengths** (7-30 days typical)
* **Configure payment reminders** for invoice-based subscriptions
* **Use tags** to organize subscriptions by type, customer segment, or sales rep
* **Review "Pending Mandate" subscriptions** regularly - follow up if not completed
* **Test the flow** by creating a test subscription for yourself
### ❌ Don'ts
* **Don't create duplicate subscriptions** for the same service
* **Don't use trial for invoice-based** (customers might not pay after trial)
* **Don't forget setup fees** - configure them on the product if applicable
* **Don't ignore failed payments** - configure [dunning](/subscriptions/failed-payment-handling)
* **Don't change product prices** without considering existing subscriptions
## After Creation
Once a subscription is created:
1. **Monitor the dashboard** for status updates
2. **Check transaction history** for payment records
3. **Review customer portal** - customers can see their subscriptions
4. **Set up automations** for status changes (failed payment notifications)
## Troubleshooting
### Customer Didn't Receive Mandate Email
**Causes:**
1. Invalid email address
2. Email in spam folder
3. Mail delivery issues
**Solutions:**
* Verify customer email address
* Ask customer to check spam
* Resend mandate email from subscription detail page
* Check email delivery logs in Settings
### Subscription Stuck at "Pending Mandate"
**Causes:**
1. Customer hasn't clicked authorization link
2. Customer abandoned the mandate process
3. Bank rejected the mandate
**Solutions:**
* Contact customer to complete authorization
* Resend mandate email
* Consider switching to invoice-based billing
* Check Mollie dashboard for mandate errors
### Wrong Amount Being Charged
**Causes:**
1. Product price changed after subscription creation
2. Custom field markup not calculated correctly
3. Quantity mismatch
**Solutions:**
* Edit subscription to update amount
* Subscription amounts are fixed at creation (product price changes don't affect existing subscriptions)
* Update quantity if seats changed
### Trial Not Applied
**Causes:**
1. Product doesn't have trial configured
2. Trial days set to 0
3. Customer already had a trial (if trial-once logic exists)
**Solutions:**
* Check product settings for trial configuration
* Manually set trial days when creating subscription
* Create new subscription with correct trial settings
## Related Documentation
Understand status transitions
SEPA authorization management
Configure payment intervals
Handle payment failures
## Frequently Asked Questions
Yes! Edit the subscription and update the recurring amount. The new price applies from the next billing cycle. Customers are not automatically notified of price changes - consider sending a manual email.
SEPA mandates don't expire, but they can be revoked by the customer or bank. If this happens, the subscription status changes to "Failed" and you'll need to request a new mandate authorization.
Yes, customers can have unlimited active subscriptions. Common scenarios include multiple products, different billing entities, or separate projects.
Create subscriptions manually for each customer. Set a custom start date to align with their current billing cycle. For mandate-based billing, they'll need to authorize payments once.
Yes! If a subscription was created separately and needs to be associated with an order, go to the **Order Detail** page. In the **Order Subscriptions** card, use the "Link an existing subscription" dropdown to select and connect the subscription. This is useful for reconciling historical data or fixing accidentally unlinked subscriptions.
Yes! Use the "Custom price" option when creating each subscription. This lets you offer promotional pricing, grandfathered rates, or negotiated enterprise pricing.
**Pausing** temporarily stops billing - the subscription can be resumed later and retains all settings. **Canceling** permanently ends the subscription - to restart, you'd create a new subscription.
## Need Help?
Create recurring products
Configure free trials
Link subscriptions to orders
Connect Mollie/Stripe
# Crypto Recurring Payments
Source: https://docs.payreque.st/subscriptions/crypto-recurring-payments
Use USDC on Base for subscription billing — customers pay each invoice manually from their crypto wallet
# Crypto Recurring Payments
Subscriptions can now be paid with **USDC on the Base network**. When a subscription uses crypto as its payment method, an invoice is generated each billing cycle and the customer pays it from their own crypto wallet — directly to your wallet, with no intermediary holding the funds.
This is an **invoice-based recurring flow**, not a mandate-based automatic charge. The customer receives an invoice each period and pays it manually with USDC. Crypto subscriptions use the same [FeeSplitting smart contract](/payment-processing/crypto-payments#how-the-feesplitting-contract-works) — 98% goes straight to your wallet, 2% covers the platform fee.
## Why Use Crypto for Subscriptions
USDC payments are irreversible once confirmed on-chain. No disputes, no chargeback fees, no refund fraud — even for recurring billing.
Crypto works everywhere. No country restrictions, no currency conversion. Anyone with USDC on Base can subscribe — even without a bank account or credit card.
The smart contract sends 98% directly to your wallet in the same on-chain transaction. PayRequest never holds your subscription revenue.
SEPA mandates or credit card tokens aren't required. Your customer just needs a wallet with USDC on Base — no banking relationship necessary.
## How It Works
When creating or editing a subscription, set the payment method to **Crypto (USDC)**. If the customer doesn't have a crypto payment preference yet, you can switch an existing subscription to crypto anytime.
On each billing date, PayRequest creates an invoice with the subscription amount and sends it to the customer. The invoice includes a **Pay with Crypto** option — just like a one-time payment.
The customer opens the invoice link, selects **Pay with Crypto**, scans the WalletConnect QR code with their wallet app, and confirms the USDC amount. The transaction is signed and sent to the Base network.
The FeeSplitting contract splits the payment atomically: 98% goes directly to your wallet, 2% to PayRequest — all in one on-chain transaction. Base confirms it in under a second. The invoice is marked as paid automatically.
**No action needed from you.** The entire payment flow — from invoice generation to on-chain confirmation — happens automatically. You'll see the payment reflected in your dashboard and your wallet balance within seconds.
## Setting Up Crypto for a Subscription
### New Subscriptions
1. Create or edit the product and ensure **Crypto (USDC)** is enabled in your [Provider Settings](/payment-processing/crypto-payments#connect-your-wallet)
2. When creating a subscription for a customer, select **Crypto (USDC)** as the payment method
3. Complete the subscription creation — the customer will receive an invoice at the next billing date with a crypto payment option
### Existing Subscriptions
1. Open the subscription detail page
2. Click **Change** next to the current payment method
3. Select **Crypto (USDC)** from the payment method options
4. Save — the next billing cycle will generate a crypto-payable invoice
Switching to crypto doesn't affect the current billing period. The change takes effect from the next billing date. Any pending mandate on the subscription stays on file but won't be charged.
## Customer Experience
Your customers don't need a bank account or SEPA mandate — just a wallet with USDC on Base. Here's what they see:
The invoice email includes a **Pay with Crypto** button alongside any other active payment methods.
A WalletConnect QR code appears on the invoice payment page. Customers scan it with MetaMask, Coinbase Wallet, or any WalletConnect-compatible wallet.
The exact USDC amount is shown. The customer reviews and confirms the transaction in their wallet. Gas fee is minimal (under \$0.01 on Base).
Base confirms the transaction in under 1 second. The invoice updates to paid automatically. The next billing date is calculated normally.
## When to Use Crypto for Subscriptions
### Good Fit For
* **International customers** who don't have access to SEPA or iDEAL
* **Privacy-conscious customers** who prefer not to share bank details
* **High-value subscriptions** where chargeback protection matters
* **Digital products and services** with a tech-savvy customer base
* **Customers without a bank account** or credit card
### Less Suitable For
* **Fully automatic billing** — crypto is invoice-based (customer must manually pay each period)
* **Very small amounts** (under \~€5) — the Base gas fee, while minimal, may feel noticeable relative to the invoice total
* **Non-crypto-native customers** who may find wallet setup unfamiliar
## Switching Between Crypto and Other Methods
You can switch a subscription between crypto and other payment methods at any time:
* **Crypto → Automatic (Mandate):** Switch to a SEPA or credit card mandate for hands-off billing
* **Crypto → Manual (Bank Transfer):** Send invoices that customers pay via regular bank transfer
* **Automatic → Crypto:** Switch to crypto when a mandate expires or the customer prefers wallet payments
Switching methods doesn't delete the previous payment configuration. A saved mandate remains on file even when crypto is active, so you can switch back seamlessly.
## Frequently Asked Questions
No — crypto payments are **invoice-based**, not mandate-based. Each billing cycle generates an invoice that the customer pays manually from their wallet. This is similar to how manual bank transfer subscriptions work, but with instant on-chain settlement instead of 1–3 day bank delays.
Yes. The customer needs a WalletConnect-compatible wallet with USDC on the Base network. Popular options include MetaMask, Coinbase Wallet, and Rabby. See the [supported wallets guide](/payment-processing/crypto-supported-wallets) for details.
Yes. If a product has a free trial and the subscription uses crypto as payment method, the trial works normally. When the trial ends, an invoice is generated that the customer can pay with USDC.
The invoice remains unpaid. PayRequest handles unpaid invoice management the same way as any other payment method — you can send reminders, apply late fees, or suspend the subscription based on your business rules.
No extra fees. The same 2% platform fee applies to each crypto payment, enforced on-chain by the FeeSplitting contract. There are no monthly minimums, no statement fees, and no chargeback fees.
Not currently. Each billing cycle requires the customer to approve and sign a new transaction. Most wallets don't support recurring automated transactions. If fully automatic billing is essential, use SEPA Direct Debit or credit card mandates instead.
The invoice shows a fixed USDC amount (converted from EUR at the time of invoice creation). The payment page locks this amount — the customer must pay exactly the invoiced USDC amount. Any exchange rate fluctuation between invoice creation and payment doesn't affect the total.
Yes! Each subscription has its own payment method setting. A customer could have one subscription on automatic SEPA, another on crypto, and a third on manual bank transfer — all at the same time.
## Related Documentation
Full guide to USDC payments on Base — wallet setup, smart contract details, and supported wallets.
Overview of all subscription payment methods — automatic, manual, and crypto.
How subscriptions work from creation to cancellation.
Which wallets work with PayRequest's crypto payment system.
# Customer Self-Service
Source: https://docs.payreque.st/subscriptions/customer-self-service
Configure what subscription actions customers can perform from the customer portal
# Customer Self-Service
Control which subscription management actions are available to your customers in the customer portal. You can independently enable or disable pausing and canceling per product.
Self-service settings are configured per product. Go to **Products** > edit a product > **Customer Portal Actions** to manage these settings.
## Portal Actions
Customers can temporarily pause their subscription from the portal. Billing stops until they resume.
Customers can request cancellation. Depending on the cancellation mode, this either creates a cancellation request with a notice period or cancels immediately.
## Configuring Per Product
Each product has two independent toggles in the **Customer Portal Actions** section:
| Setting | What It Controls | Default |
| - | - | - |
| **Allow Subscription Pause** | Shows/hides the Pause button in the customer portal | Enabled |
| **Allow Subscription Cancel** | Shows/hides the Cancel button in the customer portal | Enabled |
These toggles work independently — you can allow pausing but not canceling, or vice versa.
For high-value subscriptions, consider disabling self-service cancellation and directing customers to contact you directly. You can keep the pause option enabled as a middle ground.
## Cancellation Modes
[VPNresellers subscriptions](/integrations/vpnresellers) do not support customer pausing. New VPN products use immediate cancellation, while VPN access remains available until the end of the already-paid period. Credential management and configuration downloads are available to authorized customers in the subscription's **VPN** tab while access is active.
When cancellation is enabled, you can choose between two modes:
### Request Mode (Default)
The customer submits a cancellation request with a reason and optional message. A support ticket is created, and the subscription remains active during the notice period. This gives you the opportunity to:
* Understand why the customer is leaving
* Offer alternatives or discounts
* Properly wind down linked services (domains, etc.)
See [Cancellation Requests](/subscriptions/cancellation-requests) for full details.
### Immediate Mode
The subscription is canceled instantly when the customer clicks cancel, after a confirmation prompt. No notice period, no support request.
## What Customers See
### When Both Actions Are Enabled
The subscription detail page shows both **Pause Subscription** and **Cancel Subscription** buttons in the actions area.
### When Only Pause Is Enabled
Only the **Pause Subscription** button appears. Customers who want to cancel need to contact you through support.
### When Only Cancel Is Enabled
Only the **Cancel Subscription** button appears.
### When Both Are Disabled
No self-service action buttons are shown. Customers must contact support for any subscription changes.
## Next Steps
Set up notice periods and reason collection for cancellations
Learn how subscription pausing works
Overview of the full customer portal experience
Manage customer communications and cancellation requests
# Failed Payment Handling
Source: https://docs.payreque.st/subscriptions/failed-payment-handling
How PayRequest automatically handles failed subscription payments and chargebacks
# Failed Payment Handling
PayRequest automatically handles failed subscription payments and chargebacks to help you recover revenue without manual intervention.
## How Automatic Retries Work
When a subscription payment fails (due to insufficient funds, expired card, or chargeback), PayRequest automatically schedules retry attempts.
### Retry Schedule
* **First Retry**: 3 days after the failed payment
* **Second Retry**: 10 days after the failed payment
* **Default Maximum**: 2 retry attempts (configurable per subscription)
Your billing schedule stays the same. Retries don't affect your regular monthly billing dates.
## What Triggers a Retry?
PayRequest creates automatic retry attempts for specific failure reasons:
* **Insufficient Funds (AM04)**: Not enough money in customer's bank account
* **Multiple Reasons (MS03)**: Can indicate insufficient funds or similar recoverable issues
* **Payment Method Error**: Temporary payment processing issues
Not all chargebacks trigger retries. Fraud, customer disputes, or irreversible chargebacks will mark the subscription as "Payment Failed" without scheduling retries.
## Viewing Retry Status
On the **subscription detail page**, you'll see a **Payment Retry Status** card when there are failed payments. The same retry information also appears on the **invoice detail page** when an invoice has chargeback status, so you can see the full picture without navigating between pages.
The retry card shows:
* **Failed Attempts**: Current failures vs maximum allowed (e.g., "1 / 2")
* **Last Failure**: When the most recent failure occurred
* **Next Retry Scheduled**: When the next automatic retry will happen
* **Retry History**: Complete timeline of all retry attempts
## Retry History
The retry history shows every attempt with:
* Attempt number
* Date and time
* Status (Chargeback, Pending, Paid)
* Failure reason (e.g., "Insufficient funds")
* Amount
This gives you full visibility into payment recovery efforts.
## Configuring Retry Attempts
You can customize the maximum number of retry attempts per subscription:
1. Go to **Subscriptions** in your dashboard
2. Click on a subscription
3. Navigate to the **Settings** tab
4. Change **Max Retry Attempts** (1-5 attempts)
5. Click **Save Changes**
For high-value subscriptions, consider increasing retry attempts to 3-4 for better recovery rates.
## What Happens After Max Retries?
When all retry attempts are exhausted:
* Subscription status changes to **Payment Failed**
* You'll see a warning: "Max retry attempts reached - Subscription requires attention"
* No further automatic retries will occur
* You can manually contact the customer or cancel the subscription
## Understanding Billing vs Retry Dates
Retries don't change your regular billing schedule.
### Example Timeline
Let's say you have a monthly subscription that bills on the 5th of each month:
| Date | Event | Billing Date |
| - | - | - |
| **Sept 5** | Regular monthly billing | Next: Oct 5 |
| **Sept 11** | Chargeback received | Next: Oct 5 ✓ |
| **Sept 14** | First retry attempt (3 days later) | Next: Oct 5 ✓ |
| **Sept 21** | Second retry attempt (10 days after failure) | Next: Oct 5 ✓ |
| **Oct 5** | Next regular billing as scheduled | Next: Nov 5 |
Your regular billing dates remain unchanged regardless of retry attempts.
## When the Retry Payment is Successful
Once a retry payment is confirmed:
* **Failed Attempts**: Reset to 0
* **Retry Fields**: Cleared automatically
* **Subscription Status**: Returns to "Active"
* **Retry Card**: Hidden (no active failures)
* **Next Billing**: Remains on original schedule
The subscription continues normally from the next scheduled billing date.
## Chargebacks
When a customer disputes a payment through their bank:
1. PayRequest receives the chargeback notification
2. Invoice status changes to **Chargeback**
3. Subscription is marked with a failed attempt
4. System checks the chargeback reason code:
* **AM04 / MS03** (Insufficient funds) → Automatic retry scheduled (3 days later)
* **Other reasons** (Fraud, dispute, etc.) → Subscription marked "Payment Failed" without retry
5. You're notified in your activity log
Only chargebacks with recoverable reasons (insufficient funds) are automatically retried. Fraud or customer disputes require manual intervention.
## Notifications
You'll be notified when:
* A payment fails or is charged back
* A retry attempt is scheduled
* All retry attempts are exhausted
* A retry payment is successful
Check your **Activity Log** for complete payment recovery tracking.
## Best Practices
* **Standard subscriptions**: 2 retries
* **High-value subscriptions**: 3-4 retries
* **Annual subscriptions**: 4-5 retries
Check subscriptions with active retries weekly to:
* Identify patterns (same customer, same failure reason)
* Reach out to customers proactively
* Update payment methods before max retries
If the first retry fails, consider:
* Sending a friendly reminder email
* Asking them to update their payment method
* Offering alternative payment options
For subscriptions that exhausted all retries:
* Contact the customer directly
* Offer a manual payment link
* Consider pausing instead of canceling
## FAQs
No. Each retry is a separate payment attempt. The customer is only charged once when a payment succeeds.
Yes. Go to the subscription detail page and click "Process Payment" to create an immediate payment attempt.
The next scheduled retry will automatically use the updated payment method.
No. Retry attempts are included in PayRequest at no additional cost.
Yes. Set "Max Retry Attempts" to 0 in the subscription settings to disable automatic retries.
If the subscription was canceled before the retry, the retry will not be attempted.
## Related Articles
* [Managing Mandates](/subscriptions/managing-mandates)
* [Subscription Lifecycle](/subscriptions/subscription-lifecycle)
* [Handling Chargebacks](/payment-processing/handling-chargebacks)
* [Customer Self-Service](/subscriptions/customer-self-service)
# Managing Mandates
Source: https://docs.payreque.st/subscriptions/managing-mandates
Set up and manage SEPA Direct Debit authorizations for automatic subscription payments
## Overview
A mandate is a payment authorization that allows you to automatically collect payments from a customer's bank account. PayRequest uses SEPA Direct Debit mandates via Mollie to enable automatic subscription billing without requiring customer action each billing cycle.
Mandates are the foundation of automated subscription billing. Once a customer authorizes a mandate, you can collect payments automatically - no payment links, no waiting.
## How Mandates Work
### The Authorization Flow
1. **Customer receives email** with mandate authorization link
2. **Customer clicks link** and lands on Mollie's secure payment page
3. **Customer completes authorization** via iDEAL (creates SEPA mandate) or enters card details
4. **Mandate created** in Mollie, linked to customer
5. **Subscription activated** - automatic payments enabled
### Mandate Types
PayRequest supports mandates created via:
| Payment Method | Mandate Type | Speed | Fees |
| - | - | - | - |
| **iDEAL** | SEPA Direct Debit | 1-3 business days | Lower |
| **Credit Card** | Card recurring | Instant | Higher |
| **Bancontact** | SEPA Direct Debit | 1-3 business days | Lower |
iDEAL is the most common method in the Netherlands. When a customer pays with iDEAL, Mollie automatically creates a SEPA mandate from the bank account used.
## Viewing Customer Mandates
### From Customer Profile
1. Go to **Customers** → Select customer
2. View the **Mandates** section
3. See all active and expired mandates
### From Subscription
1. Go to **Subscriptions** → Select subscription
2. View **Mandate** in subscription details
3. Click mandate ID to see details
### Mandate Information Displayed
| Field | Description |
| - | - |
| **Mandate ID** | Mollie mandate reference (e.g., `mdt_xxx`) |
| **Method** | iDEAL, Credit Card, etc. |
| **Status** | Valid, Pending, Invalid |
| **Account** | Last 4 digits of bank account (SEPA) |
| **Created At** | When mandate was authorized |
## Creating New Mandates
### Method 1: During Subscription Creation
When creating a subscription for a customer without an existing mandate:
1. Create subscription with **Payment Method: Mandate**
2. If no mandate exists, email sent automatically to customer
3. Customer completes authorization
4. Subscription changes from "Pending Mandate" to "Active"
### Method 2: Via First Payment
Mandates are created automatically when customers make a first payment via:
* **Shop checkout** (recurring product purchase)
* **Payment page** (first subscription payment)
* **Invoice payment** (using iDEAL)
### Method 3: Dedicated Mandate Request
Request mandate authorization without creating a subscription:
1. Go to **Customers** → Select customer
2. Click **Request Mandate**
3. Customer receives email with authorization link
4. Once completed, mandate available for future subscriptions
## Mandate Status Lifecycle
```
Customer Notified → Pending → Valid → Used for Payments
↓
Failed/Expired
```
### Status Definitions
| Status | Meaning | Can Bill? |
| - | - | - |
| **Valid** | Authorization complete, ready to use | ✅ Yes |
| **Pending** | Authorization in progress | ❌ No |
| **Invalid** | Revoked or failed | ❌ No |
| **Expired** | No longer usable | ❌ No |
## Managing Mandate Issues
### Customer Without Mandate
**Symptoms:**
* Subscription status: "Pending Mandate"
* Cannot create mandate-based payments
**Solutions:**
1. **Resend authorization email**:
* Go to Subscription → Click **Resend Mandate Email**
2. **Switch to manual payment**:
* Go to Subscription → Click **Change** next to payment method
* Select **Manual Payment** → Save
* Customer will receive invoices to pay via bank transfer
* See [Payment Methods for Subscriptions](/subscriptions/payment-methods) for details
3. **Contact customer**:
* Verify email address is correct
* Ask customer to check spam folder
### Mandate Revoked by Customer
Customers can revoke mandates through their bank. When this happens:
**Impact:**
* Next payment attempt fails
* Subscription status → "Failed"
* No automatic payments possible
**Solutions:**
1. Contact customer to understand reason
2. Request new mandate authorization
3. Consider switching to invoice-based billing
### Mandate Revoked by Bank
Banks may revoke mandates for:
* Account closure
* Fraud prevention
* Customer request through bank
**Detection:**
* Payment failure with "mandate revoked" reason
* Mandate status changes to "Invalid"
**Resolution:**
* Contact customer for new mandate
* Verify customer's payment details
## Synchronizing Mandates
### Automatic Sync
PayRequest automatically syncs mandate status with Mollie:
* **Every 8 hours**: Full mandate sync for active customers
* **On payment failure**: Immediate mandate status check
* **On subscription billing**: Mandate verification before payment
### Manual Sync
To manually refresh mandate data:
1. Go to **Settings** → **Payment Providers**
2. Find Mollie provider
3. Click **Sync Mandates**
Manual sync is rarely needed. Automatic sync handles most scenarios.
## Customer Portal Mandate Management
Customers can manage their mandates through the Customer Portal:
### What Customers Can Do
* **View saved payment methods**: See their active mandates
* **Add new payment method**: Create additional mandate via new payment
* **See mandate details**: View account info (last 4 digits)
### What Customers Cannot Do
* **Revoke mandates directly** (must go through bank)
* **Edit mandate details** (mandates are immutable)
* **Transfer mandates** (tied to specific bank account)
### Enabling Customer Portal Mandate Access
Configure in **Shop Settings** → **Customer Portal**:
* **Show saved payment methods**: Display mandates to customers
* **Allow new payment method**: Let customers add methods
## Mandate Best Practices
### ✅ Do's
* **Use iDEAL for Dutch customers** - Creates SEPA mandate automatically
* **Send reminders** for pending mandate authorizations
* **Monitor "Pending Mandate" subscriptions** - Follow up within 48 hours
* **Keep customer contact info updated** - Ensures emails are delivered
* **Explain the authorization process** - Customers unfamiliar with mandates may hesitate
### ❌ Don'ts
* **Don't create multiple pending mandates** for the same customer
* **Don't ignore mandate failures** - They indicate customer or bank issues
* **Don't assume mandates last forever** - Monitor for revocations
* **Don't use mandates for one-time payments** - Use direct payment instead
## Troubleshooting
### Authorization Email Not Received
**Causes:**
1. Incorrect email address
2. Email in spam/junk folder
3. Email delivery failure
**Solutions:**
* Verify customer email in profile
* Ask customer to check spam folder
* Resend authorization email
* Check email delivery status in logs
### Mandate Authorization Stuck at Pending
**Causes:**
1. Customer started but didn't complete authorization
2. Bank verification pending
3. Technical issue during authorization
**Solutions:**
* Resend authorization email
* Contact customer to complete process
* Wait 24-48 hours for bank processing
* Check Mollie dashboard for status
### Payment Failing Despite Valid Mandate
**Causes:**
1. Insufficient funds in customer account
2. Bank temporarily blocking debits
3. Mandate about to be revoked (not yet updated)
**Solutions:**
* Check Mollie payment failure reason
* Contact customer about bank account status
* Retry payment after a few days
* Request new mandate if issues persist
### Customer Has Multiple Mandates
This is normal and expected. Customers may have mandates from:
* Different payment methods (iDEAL vs card)
* Multiple bank accounts
* Previous authorizations
**PayRequest behavior:**
* Uses most recently created valid mandate
* You can select specific mandate when creating subscription
## Technical Details
### Mandate Data Stored
PayRequest stores minimal mandate data for efficiency:
```
mandate_id: "mdt_xxxxxxxxxxxxx"
customer_id: "cst_xxxxxxxxxxxxx"
method: "directdebit"
status: "valid"
```
Full mandate details are retrieved from Mollie API when needed.
### Mandate Verification Before Billing
Before each billing attempt, PayRequest:
1. Checks mandate status in database
2. Verifies with Mollie API (if billing imminent)
3. Fails gracefully if mandate invalid
4. Updates subscription status accordingly
### Webhook Integration
Mandate status changes trigger webhooks:
* **Mandate created**: Activates pending subscriptions
* **Mandate revoked**: Marks subscriptions for attention
* **Mandate expired**: Updates customer records
## SEPA Direct Debit Specifics
### Settlement Timeline
| Day | Event |
| - | - |
| Day 0 | Payment created |
| Day 1-2 | Bank processes debit |
| Day 2-3 | Payment status → Paid |
| Day 3-5 | Funds available in Mollie |
SEPA Direct Debits are not instant. Plan for 2-3 business day settlement time.
### Chargeback Window
Customers can dispute SEPA Direct Debits:
* **8 weeks**: Unconditional refund right for authorized debits
* **13 months**: For unauthorized debits (mandate issues)
**Impact:**
* Chargeback creates negative transaction
* Customer may lose access (configure your policy)
* Review and contact customer
### Cross-Border Payments
SEPA mandates work across the Single Euro Payments Area:
**Supported Countries:**
All EU countries, plus Iceland, Liechtenstein, Norway, Switzerland, Monaco, San Marino, Andorra, Vatican City.
**Limitations:**
* EUR currency only (for SEPA Direct Debit)
* Some banks may have slower processing
## Related Documentation
Switch between automatic and manual payment
Set up subscriptions with mandates
Handle payment failures
Configure Mollie integration
## Frequently Asked Questions
SEPA mandates don't expire automatically. They remain valid until revoked by the customer through their bank, or if the bank account is closed. It's good practice to verify mandate status periodically.
Yes, customers can have multiple mandates from different payment methods or bank accounts. PayRequest uses the most recently created valid mandate by default, but you can select a specific mandate when creating subscriptions.
The next billing attempt will fail, and the subscription status will change to "Failed". You'll need to contact the customer to understand why they revoked and potentially request a new mandate or switch to invoice-based billing.
Yes! Mandates are linked to customers, not subscriptions. When creating a new subscription for a customer with an existing valid mandate, that mandate is automatically available for use.
Some banks require additional verification after mandate creation. This can take 24-48 hours. Wait and retry, or check Mollie dashboard for specific error messages from the bank.
Yes, SEPA mandates work across all SEPA member countries (EU and some additional European countries). However, the mandate must be in EUR currency, and some banks may have slower processing times for cross-border debits.
Unfortunately, banks don't notify merchants before mandate revocation. You'll find out when the next payment fails. Regular communication with customers and prompt follow-up on failed payments helps catch issues early.
A **mandate** is a standing authorization to collect payments. A **payment method** is how a specific payment is made (iDEAL, card, etc.). When a customer pays with iDEAL, both a payment and a mandate are created. The mandate enables future automatic payments.
## Need Help?
Customer payment method management
Understand subscription states
Configure your payment provider
Debug payment issues
# Pausing & Resuming
Source: https://docs.payreque.st/subscriptions/pausing-and-resuming
Temporary subscription holds with optional auto-resume
# Pausing & Resuming
Pausing a subscription temporarily stops billing without canceling. This is useful when a customer wants to take a break, or when you need to hold billing for a specific period.
## Pausing a Subscription
1. Go to **Subscriptions** and click on the subscription
2. Click **Pause Subscription** in the Subscription Actions card
3. The subscription status changes to **Paused** (blue badge)
Billing stops immediately. The customer's payment mandate remains active for when you resume.
### Auto-Resume
You can optionally set a **resume date** when pausing. When the date arrives, the subscription automatically returns to Active and billing resumes on the normal schedule.
## Resuming a Subscription
1. Go to the paused subscription's detail page
2. Click **Resume Subscription**
3. The subscription returns to **Active** status
Billing resumes from the next scheduled billing date.
## Who Can Pause?
Both admins and customers (via the customer portal) can pause subscriptions. The activity log records who initiated the pause.
## Pausing vs. Suspending
If you need to halt service because a customer isn't paying, use **Suspension** instead of pausing. Suspension:
* Sends the customer an email notification
* Shows an orange badge (instead of blue)
* Auto-reactivates when the overdue invoice is paid
* Appears in the Insights dashboard Action Required section
Learn more: [Suspending Subscriptions](/subscriptions/suspending-subscriptions)
## Related Articles
* [Subscription Lifecycle](/subscriptions/subscription-lifecycle)
* [Suspending Subscriptions](/subscriptions/suspending-subscriptions)
* [Customer Self-Service](/subscriptions/customer-self-service)
# Payment Methods for Subscriptions
Source: https://docs.payreque.st/subscriptions/payment-methods
Choose between automatic payments and manual invoicing for each subscription, and switch between them at any time
## Overview
Every subscription in PayRequest can be billed in one of two ways: **automatically** via a payment mandate (SEPA Direct Debit or credit card), or **manually** by sending invoices that the customer pays via bank transfer. You can switch between these methods at any time from the subscription detail page.
**Automatic payments** are ideal when customers have authorized a mandate — payments are collected without any action needed. **Manual payments** work well for customers who prefer bank transfers, or when no mandate is available.
## Payment Method Options
| Method | How It Works | Best For |
| - | - | - |
| **Automatic Payment** | Customer is charged automatically via their saved mandate (SEPA or credit card) | Recurring SaaS, memberships, ongoing services |
| **Manual Payment** | An invoice is generated and emailed each billing period — customer pays via bank transfer | Customers without mandates, large invoices, B2B clients |
## Viewing the Current Payment Method
On each subscription detail page, you'll see the current payment method displayed:
* **Mandate assigned**: Shows the mandate reference (e.g., `mdt_jLqzL4cB6H`), payment type (Credit Card, SEPA), and status (Valid)
* **Manual Payment**: Shows a blue "Manual Payment (Bank Transfer)" label
* **No payment method**: Shows a red "No mandate assigned" warning
## Switching Payment Methods
You can switch between automatic and manual payment at any time.
### Step 1: Open Payment Method Settings
Go to **Subscriptions** → click on the subscription → click **Change** next to the payment method display. This opens the **Manage Payment Method** modal.
### Step 2: Choose Payment Type
At the top of the modal, you'll see two options:
* **Automatic Payment** — Charge customer automatically via SEPA or credit card mandate
* **Manual Payment** — Send invoice each period for customer to pay via bank transfer
Select the option you want.
### Step 3: Configure
**If switching to Automatic Payment:**
1. Select a mandate from the dropdown list
2. Only valid mandates for this customer are shown
3. Review the mandate details (method, status, signature date)
4. Click **Save Payment Method**
**If switching to Manual Payment:**
1. No additional configuration needed
2. Review the info box confirming how manual billing works
3. Click **Save Payment Method**
When you switch to manual payment, the existing mandate is not deleted — it's just unlinked from this subscription. You can switch back to automatic payment at any time using the same mandate.
### Step 4: Confirm
After saving, the subscription detail page updates to reflect the new payment method. An activity log entry is created to track the change.
## How Each Method Affects Billing
### Automatic Payment Billing
When a subscription with a mandate reaches its billing date:
1. PayRequest creates a payment via Mollie using the linked mandate
2. The customer's bank account or credit card is charged automatically
3. A transaction is recorded and the invoice is marked as paid
4. Next billing date is calculated based on the interval
**No action required** from you or the customer.
### Manual Payment Billing
When a subscription without a mandate reaches its billing date:
1. PayRequest generates an invoice for the billing period
2. The invoice is emailed to the customer with a payment link
3. The customer pays via bank transfer, iDEAL, or other available method
4. Once payment is received, the invoice is marked as paid
5. Next billing date is calculated based on the interval
With manual payment, there may be a delay between the billing date and when the customer actually pays. Monitor unpaid invoices and send reminders if needed.
## When to Use Each Method
### Use Automatic Payment When:
* Customer has authorized a SEPA mandate or saved a credit card
* You want hands-off billing with no manual follow-up
* Payment reliability is important (e.g., monthly SaaS)
* Customer prefers not to pay manually each month
### Use Manual Payment When:
* Customer prefers paying via bank transfer
* No mandate is available and customer doesn't want to authorize one
* Large B2B invoices that require internal approval before payment
* Customer wants to review each invoice before paying
* You're using the **Allow Manual Payment (Bank Transfer)** product setting
## Manual Payment on Invoices
When you manually mark an invoice as paid (for example, after receiving a bank transfer), PayRequest now automatically:
1. **Updates the invoice** status to paid
2. **Updates the linked order** status to completed (if applicable)
3. **Creates a subscription** for recurring products in the order
4. The subscription is set to **active** if the product allows manual payment, or **pending mandate** if automatic payment is expected
This means you can accept orders for subscription products via bank transfer — just mark the invoice as paid, and everything is set up automatically.
## Managing Payment Methods in Bulk
If you need to switch multiple subscriptions to the same payment method:
1. Go to each subscription's detail page
2. Click **Change** next to the payment method
3. Select the desired method and save
Bulk payment method changes are currently done one subscription at a time. This ensures you can verify each change individually.
## Common Scenarios
### Customer Lost Their Mandate
**What happened**: The customer's bank revoked their mandate, or their card expired.
**Solution**:
1. Open the subscription → **Change** payment method
2. Switch to **Manual Payment** temporarily
3. Send the customer a new mandate request
4. Once they authorize a new mandate, switch back to **Automatic Payment**
### Moving from Manual to Automatic
**What happened**: A customer who was paying manually now wants automatic payments.
**Solution**:
1. Ensure the customer has a valid mandate (check the mandate dropdown in the modal)
2. If no mandate exists, send a mandate request from the customer profile
3. Once the mandate is valid, open the subscription → **Change** → select **Automatic Payment** → choose the mandate
### Customer Wants Bank Transfer Instead
**What happened**: A customer with an active mandate prefers to pay manually.
**Solution**:
1. Open the subscription → **Change** payment method
2. Select **Manual Payment**
3. Save — the mandate stays on file but won't be charged for this subscription
## Best Practices
### ✅ Do's
* **Start with automatic payments** when possible — it reduces admin work
* **Switch to manual** if a customer consistently has payment failures
* **Monitor manual payment subscriptions** — follow up on unpaid invoices
* **Keep mandates on file** even when using manual payment — easy to switch back
### ❌ Don'ts
* **Don't leave subscriptions without any payment method** — either assign a mandate or use manual payment
* **Don't forget to check invoice status** for manual payment subscriptions
* **Don't switch payment methods** right before a billing date — wait until after billing completes
## Frequently Asked Questions
No. The mandate remains valid and on file. It's simply unlinked from this subscription. You can switch back to automatic payment using the same mandate at any time.
The change takes effect from the next billing date. If a payment has already been processed for the current period, it won't be affected.
Yes! Each subscription has its own payment method setting. A customer could have one subscription on automatic payment and another on manual payment.
No automatic notification is sent. If you switch to manual payment, the customer will notice when they receive an invoice instead of being charged automatically. Consider informing them proactively.
If no valid mandates exist, you can either:
* Use **Manual Payment** and send invoices
* Send a **Mandate Request** email so the customer can authorize a new mandate
* The customer can also add a payment method through their Customer Portal
Yes! When you mark an invoice as paid for an order containing recurring products, PayRequest automatically creates the subscription. If the product allows manual payment, the subscription is set to active. Otherwise, it's set to pending mandate.
## Related Documentation
Set up and manage SEPA mandates
Configure billing intervals and timing
Accept bank transfer payments
Handle failed automatic payments
# Bulk Price Adjustments
Source: https://docs.payreque.st/subscriptions/price-adjustments
Apply inflation adjustments and price increases to multiple subscriptions at once with scheduling, rounding, and customer notifications.
# Bulk Price Adjustments
Adjust subscription prices in bulk to keep up with inflation, cost changes, or new pricing tiers. The price adjustment wizard lets you preview the impact before applying, schedule changes for the future, and notify customers automatically.
Bulk price adjustments are available from the **Bulk Actions** page at **Dashboard > Bulk Actions > Subscriptions > Apply Inflation Adjustment**.
Increase by percentage, fixed amount, or set a specific new price
Round results to the nearest EUR 0.50, EUR 1.00, or EUR 5.00
Apply immediately, on a specific date, or at each subscription's next renewal
Built-in Dutch law compliance with 30-day notice and cancellation rights
## How It Works
Go to **Bulk Actions** and select **Subscriptions** as the entity type. Choose the subscriptions you want to adjust — either manually or by filtering with tags.
Select **Apply Inflation Adjustment** as the action, then configure:
* **Increase method** — Percentage, fixed amount, or set specific price
* **Rounding** — Optional rounding to keep prices clean
* **Price cap** — Optional maximum price after increase
* **Schedule** — When the change should take effect
* **Customer notification** — Whether to send an email
Review the price change preview showing each subscription's current and new price, plus MRR impact cards showing total revenue change.
Review the summary and execute. For scheduled changes, the prices will be applied automatically on the configured date.
## Increase Methods
Choose how to calculate the new price for each subscription:
| Method | Description | Example |
| - | - | - |
| **Percentage** | Increase by a percentage of the current price | 5.2% on EUR 19.99 = EUR 21.03 |
| **Fixed Amount** | Add a fixed euro amount to each subscription | +EUR 2.00 on EUR 19.99 = EUR 21.99 |
| **Set Specific Price** | Override all selected subscriptions to one price | Set to EUR 24.99 regardless of current price |
## Rounding Options
After calculating the new price, you can apply rounding to keep prices clean:
| Option | Direction | Example (EUR 21.37) |
| - | - | - |
| **Round to nearest EUR 0.50** | Nearest | EUR 21.50 |
| **Round to nearest EUR 1.00** | Nearest | EUR 21.00 |
| **Round to nearest EUR 5.00** | Nearest | EUR 20.00 |
| **Round up to EUR 0.50** | Always up | EUR 21.50 |
| **Round up to EUR 1.00** | Always up | EUR 22.00 |
| **Round up to EUR 5.00** | Always up | EUR 25.00 |
| **Round down to EUR 0.50** | Always down | EUR 21.00 |
| **Round down to EUR 1.00** | Always down | EUR 21.00 |
| **Round down to EUR 5.00** | Always down | EUR 20.00 |
Use **Round up to EUR 1.00** for the cleanest pricing. This avoids awkward amounts like EUR 21.37 and rounds up to EUR 22.00.
## Price Cap
Set an optional **Maximum Price Cap** to prevent subscriptions from exceeding a certain amount after the increase. This is useful when you have a mix of price tiers and want to ensure no subscription goes above a specific limit.
For example, with a 10% increase and a cap of EUR 50.00, a subscription at EUR 48.00 would increase to EUR 50.00 instead of EUR 52.80.
## Scheduling Options
Control when the price change takes effect:
| Schedule | Description | Best For |
| - | - | - |
| **Immediately** | Price updates right away, takes effect on the next billing cycle | Urgent corrections |
| **On a Specific Date** | Price changes on a future date you choose | Annual inflation adjustments |
| **At Next Renewal** | Each subscription changes at its own next billing date | Customer-friendly rollout |
Scheduled price increases are processed automatically every day at 04:45 AM (before billing runs at 05:00 AM). This ensures the new price is in place before the next invoice is generated.
## Customer Notifications
When enabled, PayRequest automatically sends a price increase notification email to each affected customer. The email includes:
* **Current and new price** clearly displayed
* **Effective date** of the price change
* **Cancellation link** to the customer portal
* **Business contact information**
### Dutch Law Compliance
Dutch consumer law (ACM guidelines) requires a **minimum 30-day advance notice** for subscription price increases. The notification must include the customer's right to cancel before the increase takes effect.
PayRequest helps you stay compliant:
* A warning is shown if the scheduled date is less than 30 days away
* The notification email automatically includes a cancellation link
* Validation checks flag subscriptions with renewals too close to the effective date
The email template can be customized from **Settings > Email Templates** under the **Subscription Price Increase** type. Available variables include `{{old_price}}`, `{{new_price}}`, `{{effective_date}}`, and `{{cancel_link}}`.
## MRR Impact Preview
Before executing, the validation step shows a full impact analysis:
* **Current MRR** — Total monthly recurring revenue from selected subscriptions
* **New MRR** — Projected MRR after the price change
* **MRR Increase** — Absolute euro increase
* **Percentage Change** — Overall percentage impact
Each subscription is listed with its current price, new price, and the difference. This lets you spot outliers and verify the changes before applying.
The MRR calculation normalizes all billing intervals to monthly. Weekly subscriptions are multiplied by 4.33, quarterly divided by 3, and yearly divided by 12.
## Audit Trail
Every bulk price adjustment is recorded in the **Bulk Action History** at the bottom of the Bulk Actions page. The history includes:
* Which subscriptions were affected
* Old and new prices for each subscription
* The increase method, value, and rounding used
* Whether it was applied immediately or scheduled
* Whether customer notifications were sent
Immediately applied changes cannot be automatically reversed. You can use the bulk action again with a decrease (negative fixed amount or lower set price) to revert. Scheduled increases that haven't been applied yet can be found in the database and cancelled.
Scheduled increases are automatically skipped for subscriptions that are no longer active. The increase status is set to "cancelled" and no change is applied.
The bulk action applies the same rate to all selected subscriptions. To apply different rates, run the wizard multiple times with different selections and configurations. Use tags to organize subscriptions into groups for easier selection.
PayRequest manages its own billing cycle. Price changes update the subscription amount in PayRequest, which is used when generating the next invoice. There is no reverse sync to Mollie subscription objects.
## Next Steps
Learn about all available bulk actions
Understand how billing intervals work
Customize the price increase notification email
Organize subscriptions with tags for targeted adjustments
# Subscription Lifecycle
Source: https://docs.payreque.st/subscriptions/subscription-lifecycle
Understand subscription statuses and how they transition
# Subscription Lifecycle
Every PayRequest subscription moves through a series of statuses during its lifetime. Understanding these statuses helps you manage billing, handle edge cases, and communicate clearly with your customers.
## Subscription Statuses
| Status | Color | Description |
| - | - | - |
| **Pending Mandate** | Amber | Waiting for customer to set up a payment method |
| **Trial** | Purple | Free trial period active, no billing yet |
| **Active** | Green | Subscription is live and billing normally |
| **Paused** | Blue | Temporarily on hold (voluntary), billing stopped |
| **Suspended** | Orange | Service halted by admin due to non-payment |
| **Failed** | Red | Payment failed, may be retrying automatically |
| **Completed** | Emerald | Fixed-term subscription finished all payments |
| **Canceled** | Red | Permanently ended, no further billing |
| **Archived** | Zinc | Removed from view, hidden from customer portal |
## Status Flow
```
┌──────────────────┐
│ Pending Mandate │──→ Active ──→ Paused ──→ Active
└──────────────────┘ │ ▲
│ │ │
▼ ├──→ Suspended ─────────┤
Trial ──→ Active │ (auto on payment) │
│ │
├──→ Failed ─────────────┘
│ (auto retry / manual)
│
├──→ Completed
│
└──→ Canceled
```
## Status Details
### Pending Mandate
The subscription has been created but the customer hasn't set up their payment method yet. You can send a mandate activation email from the subscription detail page.
**Transitions to:** Active, Trial, Canceled, Failed
### Trial
The customer is in a free trial period. No payments are collected during the trial. When the trial ends, the subscription automatically transitions to Active and billing begins.
**Transitions to:** Active, Canceled, Expired
### Active
The subscription is live. Payments are collected automatically on the billing schedule using the customer's payment mandate.
**Transitions to:** Paused, Suspended, Failed, Completed, Canceled, Archived
### Paused
A voluntary hold — either requested by the customer or set by the admin. Billing stops while paused. You can optionally set a resume date for automatic reactivation.
**Transitions to:** Active, Canceled
Learn more: [Pausing & Resuming](/subscriptions/pausing-and-resuming)
### Suspended
An admin-initiated hold for customers who aren't paying. Unlike pausing, suspension:
* Sends the customer an email notification
* Shows an orange badge (distinct from blue "paused")
* Auto-reactivates when the overdue invoice is paid via Mollie
* Appears in the Insights dashboard Action Required section
**Transitions to:** Active (manual or auto on payment), Canceled
Learn more: [Suspending Subscriptions](/subscriptions/suspending-subscriptions)
### Failed
A payment attempt failed (insufficient funds, expired card, chargeback). PayRequest can automatically retry payments based on your retry settings.
**Transitions to:** Active (after successful retry), Suspended, Canceled
Learn more: [Failed Payment Handling](/subscriptions/failed-payment-handling)
### Completed
For fixed-term subscriptions (payment plans) that have reached their total number of payments. This is a terminal state.
### Canceled
The subscription has been permanently ended. No further billing occurs. Canceled subscriptions can be reactivated by an admin if needed.
**Transitions to:** Archived
### Archived
The subscription has been shelved and is hidden from the customer portal. Used for cleaning up ghost or duplicate subscriptions without deleting data. All linked invoices and transactions are preserved.
**Transitions to:** Active (reactivation only)
Learn more: [Archiving Subscriptions](/subscriptions/archiving-subscriptions)
## Automatic Transitions
Several status changes happen automatically:
| Trigger | From | To |
| - | - | - |
| Trial period ends | Trial | Active |
| Payment fails | Active | Failed |
| Retry payment succeeds | Failed | Active |
| Overdue invoice paid | Suspended | Active |
| Resume date reached | Paused | Active |
| All payments completed | Active | Completed |
## Billing Behavior by Status
| Status | Bills automatically? | Included in MRR? |
| - | - | - |
| **Active** | Yes | Yes |
| **Trial** | No (until trial ends) | No |
| **Paused** | No | No |
| **Suspended** | No | No |
| **Failed** | Retry attempts only | Yes (until canceled) |
| **Completed** | No | No |
| **Canceled** | No | No |
| **Archived** | No | No |
## Related Articles
* [Creating Subscriptions](/subscriptions/creating-subscriptions)
* [Suspending Subscriptions](/subscriptions/suspending-subscriptions)
* [Pausing & Resuming](/subscriptions/pausing-and-resuming)
* [Failed Payment Handling](/subscriptions/failed-payment-handling)
* [Archiving Subscriptions](/subscriptions/archiving-subscriptions)
* [Billing Cycles](/subscriptions/billing-cycles)
# Suspending Subscriptions
Source: https://docs.payreque.st/subscriptions/suspending-subscriptions
Halt service for non-paying customers with automatic reactivation on payment
# Suspending Subscriptions
Suspension is an admin-initiated status for customers who are not paying. Unlike **pausing** (which is a voluntary hold the customer can request), **suspension** signals that service has been halted due to non-payment and notifies the customer via email.
Suspended subscriptions are automatically reactivated when the overdue invoice is paid. No manual action required.
## When to Use Suspension
Use suspension when a customer has overdue invoices and you want to:
* **Halt their service** (e.g., disable their Google Workspace, hosting, or domain)
* **Notify them** that their subscription is on hold due to non-payment
* **Track the status** in PayRequest so your team knows what's happening
* **Auto-reactivate** once they pay — no manual follow-up needed
### Suspension vs. Pausing vs. Cancellation
| Action | Initiated by | Color | Billing | Auto-reactivate | Email sent |
| - | - | - | - | - | - |
| **Pause** | Customer or admin | Blue | Stops | On resume date | No |
| **Suspend** | Admin only | Orange | Stops | On invoice payment | Yes |
| **Cancel** | Customer or admin | Red | Stops permanently | No | No |
## How to Suspend a Subscription
1. Go to **Subscriptions** and click on the subscription you want to suspend
2. In the **Subscription Actions** card on the right, click **Suspend Subscription**
3. Optionally enter a reason (e.g., "Non-payment of invoice INV-2026-001")
4. Click **Confirm Suspension**
The subscription status changes to **Suspended** (orange badge), and the customer receives an email notification.
Suspension only changes the status in PayRequest. You still need to manually disable the actual service (e.g., suspend their Google Workspace account, disable hosting, etc.). PayRequest tracks the status so your team knows what's been suspended.
## What Happens When You Suspend
When you suspend a subscription:
* **Status** changes from Active to **Suspended** (orange)
* **Suspended at** timestamp is recorded
* **Suspension reason** is saved (if provided)
* **Customer email** is sent with details about the suspension and how to pay
* **Activity log** records the suspension
* **Billing stops** — the subscription won't be billed while suspended
* **Insights dashboard** shows suspended subscriptions in the Action Required section
## Suspended Subscription View
On the subscription detail page, you'll see:
* An **orange "Suspended" badge** in the header
* A **warning callout** showing when it was suspended and the reason
* **Unsuspend** and **Cancel** buttons in the actions card
* **Suspended At** and **Suspension Reason** in the dates section
## Auto-Reactivation on Payment
When the customer pays their overdue invoice through Mollie (iDEAL, credit card, etc.):
1. PayRequest receives the payment webhook
2. The subscription is automatically set back to **Active**
3. `suspended_at` and `suspension_reason` are cleared
4. An activity log entry records the auto-reactivation
5. Billing resumes on the normal schedule
You don't need to manually unsuspend — just send the customer their overdue invoice link and let the system handle the rest.
## Manual Unsuspend
If you want to reactivate a suspended subscription manually (e.g., the customer paid via bank transfer):
1. Go to the subscription detail page
2. Click **Unsuspend Subscription**
3. The subscription returns to **Active** status immediately
## Suspension Email
When a subscription is suspended, the customer receives an email with:
* The subscription name and amount due
* A notice that their service has been suspended
* Instructions to pay the outstanding invoice to restore service
* Your business contact information
You can customize this email template under **Settings > Email Templates > Subscription Suspended**.
Email deduplication prevents the same suspension email from being sent multiple times within a short period.
## Monitoring Suspended Subscriptions
### Subscription Table
The subscription list has a dedicated **Suspended** tab (orange) showing all currently suspended subscriptions with a count badge.
### Insights Dashboard
The **Action Required** section on the Insights page shows suspended subscriptions as an amber alert item:
* Shows the count of suspended subscriptions
* Subtitle: "Service halted, awaiting payment"
* Click to navigate directly to the suspended subscriptions tab
## Status Transitions
Suspended subscriptions can transition to:
* **Active** — via manual unsuspend or auto-reactivation on payment
* **Canceled** — if you decide to cancel instead of waiting for payment
Subscriptions can be suspended from:
* **Active** — the most common case
* **Failed** — when payment retries have been exhausted
## Best Practices
When suspending, include the specific invoice number in the reason field (e.g., "Non-payment of INV-2026-042"). This makes it easy for your team to identify which invoice triggered the suspension.
Make sure the customer has received their invoice and payment reminders before suspending. The suspension email tells them to pay, but they need to know where to pay.
For long-overdue accounts, consider opening a [debt collection case](/debt-collection/overview) alongside the suspension. This gives you a structured escalation process while the service is suspended.
The Action Required section shows suspended subscriptions. Review these weekly to follow up with customers or decide whether to cancel.
## FAQs
No. Suspension is admin-only. The customer can only resolve it by paying the overdue invoice, which triggers automatic reactivation.
No. Suspended subscriptions are excluded from billing. Billing resumes only after reactivation.
You'll need to suspend each subscription individually from its detail page.
Yes. Go to **Settings > Email Templates** and edit the "Subscription Suspended" template to match your tone and branding.
The subscription will show as "Suspended" in the customer's portal view, but they can still access the portal and pay invoices.
## Related Articles
* [Subscription Lifecycle](/subscriptions/subscription-lifecycle)
* [Pausing & Resuming](/subscriptions/pausing-and-resuming)
* [Failed Payment Handling](/subscriptions/failed-payment-handling)
* [Debt Collection Overview](/debt-collection/overview)
* [Business Insights Dashboard](/analytics-and-reporting/insights-dashboard)
# Sync Product Changes
Source: https://docs.payreque.st/subscriptions/sync-product-changes
Understand what happens to existing subscriptions when you edit a product, and how to selectively sync custom field changes.
# Sync Product Changes
When you edit a product, PayRequest does **not** automatically change any existing subscriptions built from that product. Prices and custom fields are captured on the subscription at the moment it's created — editing the product afterward only affects *new* subscriptions going forward.
Existing subscriptions are never silently changed by a product edit. If you need to update existing subscribers, use one of the tools below — both require you to explicitly opt in.
## What Gets Captured at Creation
The subscription's `recurring_amount` is set once when the subscription is created and stored independently — it does not reference the product's current price.
The subscription stores its own copy of the product's custom field configuration at signup time.
## Updating Prices on Existing Subscriptions
Product price changes don't propagate to existing subscriptions automatically. To intentionally change the price on subscriptions that already exist, use the **Bulk Price Adjustments** wizard — see [Bulk Price Adjustments](/subscriptions/price-adjustments) for the full guide covering percentage/fixed/set-price increases, scheduling, rounding, and required customer notice periods.
## Syncing Custom Fields to an Existing Subscription
If you add, modify, or remove a custom field on a product, subscriptions created before that change keep their original field configuration. The **Sync with Product** tool on each subscription's detail page lets you review and selectively apply those differences — one subscription at a time.
Go to the subscription's detail page. The **Sync with Product** card shows whether it's **In Sync** or **Out of Sync** with the product's current custom field configuration — this is checked automatically every time you load the page.
Click **Sync Fields** (or **Check for Updates** if already in sync) to open the sync modal. Each difference is labeled:
* **New Field** — exists on the product but not on this subscription
* **Modified** — the field exists on both but its configuration differs
* **Removed from Product** — exists on this subscription but no longer on the product
Check the boxes for the changes you want to apply. New and modified fields are pre-selected by default; removed fields are not. Applying a "Removed" change deletes the field's current value from this subscription.
Click to sync the selected fields. Only this subscription is updated.
Sync changes apply to **that subscription only** — other subscriptions on the same product are not affected. There is no bulk version of this tool; to sync many subscriptions, you'd repeat this per subscription.
## FAQ
No. The new price only applies to subscriptions created after the change. To update existing subscriptions, use [Bulk Price Adjustments](/subscriptions/price-adjustments).
No. Use the **Sync with Product** tool on each subscription's detail page to add it manually.
Not currently — the Sync with Product tool works one subscription at a time from that subscription's detail page.
Applying a "Removed from Product" change deletes that field's value from the subscription along with its configuration. The sync modal shows a warning with the current value before you confirm.
## Next Steps
Push price changes to existing subscriptions in bulk
Learn how custom fields work on products
Understand subscription statuses and billing
# Common Issues
Source: https://docs.payreque.st/troubleshooting/common-issues
Quick fixes for frequent problems
# Common Issues
Quick answers to problems that come up often. For anything more specific, use the other troubleshooting pages linked below.
## Shop Shows "Vacation Mode" / Customers Can't Order
If your shop displays a vacation message and blocks new orders, **Vacation Mode** is turned on in **Shop Settings**. While it's active, customers can't place new orders through your shop or direct payment links.
* Toggle it off from **Shop Settings → Vacation Mode**
* If you set an end date, it turns off automatically on that date — otherwise it stays on until you disable it manually
## Amounts Look Wrong / Wrong Currency Symbol
PayRequest displays amounts in your business's preferred currency, set in your business details. If a product or invoice shows an unexpected currency symbol, check the currency configured there rather than assuming a display bug — amounts are stored as decimal values (never in cents), so a mismatch is almost always a currency-setting issue rather than a calculation error.
## Transaction/Subscription Data Looks Out of Date
If a transaction, customer, or subscription from Mollie or PayPal isn't showing up or shows a stale status, this is a provider sync issue rather than data loss. See [Sync Problems](/troubleshooting/sync-problems) for the manual sync actions available on each page (Mollie Transactions, Customers, Subscriptions, Chargebacks, and individual transaction/mandate detail pages).
## A Payment Shows as Failed, Canceled, or Expired
These are three different outcomes with different causes — see [Payment Failures](/troubleshooting/payment-failures) for how to tell them apart and what to check first (including the per-transaction **Sync with Mollie**/**Sync with PayPal** action).
## Emails to Customers Aren't Arriving
Check whether the customer's email address has an active bounce or complaint suppression — see [Email Delivery Issues](/troubleshooting/email-delivery-issues) for how to find and fix it. Use the **Email Issues** filter on the Customers page to spot affected customers quickly.
## Custom Domain Not Working
Custom domain setup depends on DNS records propagating correctly at your registrar/DNS provider, which can take time after you first configure it. See [Custom Domains](/shop-and-checkout/custom-domains) for the required DNS setup and how to verify it.
## Subscription Stuck in "Payment Failed"
This means all automatic retry attempts were exhausted. See [Failed Payment Handling](/subscriptions/failed-payment-handling) for the retry schedule, what triggers a retry vs. not, and how to manually reprocess a payment from the subscription detail page.
## FAQ
Most changes in PayRequest save immediately. If something provider-synced (a Mollie/PayPal transaction, customer, or subscription) looks stale, it's a sync timing issue — see [Sync Problems](/troubleshooting/sync-problems) for the manual sync action on that specific page.
Use your support channel to report it with as much detail as possible: the exact page, what you expected vs. what happened, and (if relevant) the customer/transaction/invoice ID involved.
## Next Steps
Fix provider data that looks out of date
Diagnose declined or stuck payments
Fix bounced or undelivered customer emails
DNS setup for your shop or payment page domain
# Email Delivery Issues
Source: https://docs.payreque.st/troubleshooting/email-delivery-issues
Diagnose and fix email bounces, spam complaints, and delivery failures in PayRequest
# Email Delivery Issues
When emails fail to reach your customers, PayRequest's bounce suppression system kicks in to protect your sender reputation. This guide helps you understand why emails bounce and how to resolve delivery problems.
PayRequest uses [Resend](https://resend.com) for email delivery and automatically tracks bounces, complaints, and failures via webhooks.
***
## Common Bounce Reasons
| Error Message | Meaning | Fix |
| - | - | - |
| `550 5.1.1 ... does not exist` | Email address doesn't exist | Ask the customer for their correct email and update it |
| `550 5.2.1 ... mailbox full` | Recipient's mailbox is full | Wait and retry later, or contact the customer via other channels |
| `421 ... temporarily unavailable` | Server is temporarily down | Usually auto-resolves — the **Failed** status will clear on next successful delivery |
| `User marked as spam` | Customer clicked "Report Spam" | Contact the customer directly to resolve; they may need to whitelist your address |
***
## How to Fix a Bounced Customer
Navigate to **Customers** and click the affected customer. A red **Email Delivery Blocked** warning appears at the top.
The warning shows the bounce type, date, and SMTP error message. Use this to determine whether the email is permanently invalid or temporarily unreachable.
If the address is wrong, click **Edit Customer** and enter the correct email. This automatically clears the suppression and removes any "Invalid Email" tags.
If the email address is correct (e.g., a temporary issue was resolved), click **Clear Suppression** to resume sending.
***
## Finding Affected Customers
Use the **Email Issues** filter on the customer list to quickly find all customers with active bounce or complaint issues:
1. Go to the **Customers** page
2. Open the **Status** filter dropdown
3. Select **Email Issues** (only appears when issues exist)
4. Customers with active suppression show a red **Bounced** badge
***
## Preventing Bounces
Set up the **Email Bounce → Add Invalid Email Tag** automation in your automations settings. This automatically tags customers when their email bounces, making them easy to find and fix in bulk.
* **Validate emails at entry** — Use proper email validation on your shop checkout and customer forms
* **Monitor the Email Issues filter** regularly to catch and fix bounce issues early
* **Keep contact info updated** — Ask customers to confirm their email when they log into the portal
***
## Delivery Confirmation
PayRequest tracks when Resend confirms delivery of invoice reminders. Look for the green **Email Delivered** event in the invoice timeline to verify a reminder reached the customer.
If a reminder shows as sent but never shows a delivery confirmation, the email may have been silently dropped by the recipient's mail server (e.g., caught by a spam filter without generating a bounce).
***
## Next Steps
Full guide to the bounce suppression system
Configure automatic reminder schedules
# Payment Failures
Source: https://docs.payreque.st/troubleshooting/payment-failures
Debugging declined payments
# Payment Failures
When a payment doesn't go through, the first step is figuring out which of PayRequest's status buckets it landed in — that tells you whether it's worth retrying, whether the customer needs to act, or whether it's already handled automatically.
This page is about diagnosing a single failed payment as a merchant. For automatic retry behavior on **subscriptions**, see [Failed Payment Handling](/subscriptions/failed-payment-handling) — that page covers the retry schedule and chargeback reason codes in detail and isn't repeated here.
## Reading the Status
Transactions and Mollie payments use a small set of statuses. On the **Transactions** page or a transaction's detail view, look for:
| Status | Meaning |
| - | - |
| **Paid** | Payment completed successfully |
| **Pending** | Payment is initiated but not yet confirmed (e.g. bank transfer in progress) |
| **Open** | Checkout was started but not yet completed by the customer |
| **Failed** | The payment attempt was declined or errored |
| **Canceled** | The customer (or you) canceled the payment before completion |
| **Expired** | The checkout session timed out before the customer completed it |
| **Refunded** | Payment was completed and later refunded |
**Failed**, **Canceled**, and **Expired** are all "didn't result in money" outcomes, but they mean different things: Failed usually means the payment method itself was declined (e.g. by the customer's bank or card issuer); Canceled means someone actively backed out; Expired means the customer simply never finished the checkout session in time.
## Diagnosing a Specific Payment
Find it under **Transactions**, or from the related customer/invoice/order.
The detail view shows `Failed Date` or `Canceled Date` where applicable, alongside the payment method used.
Mollie-based transactions have a **Sync with Mollie** action on their detail page that re-fetches the latest status directly from Mollie — useful if you suspect PayRequest's copy hasn't caught up yet. PayPal transactions have an equivalent **Sync with PayPal** action.
One failed payment from one customer is usually just a declined card or an abandoned checkout. Multiple failures across different customers in a short window is more likely a provider-side or configuration issue — check your payment provider's own dashboard/status page.
## Common Causes
* **Card declined by the issuing bank** — insufficient funds, fraud flags, or the card being blocked for online/international payments. The customer needs to contact their bank or use a different method.
* **iDEAL/bank redirect abandoned** — the customer started the bank redirect flow but didn't complete authorization; this typically shows as **Canceled** or **Expired** rather than **Failed**.
* **Checkout session expired** — the customer took too long to complete the payment page.
* **Chargeback/dispute on a subscription payment** — handled by the automatic retry system; see [Failed Payment Handling](/subscriptions/failed-payment-handling).
## Abandoned Checkouts
If a customer starts a checkout but never completes it (no payment attempt was even made, so there's no Failed/Canceled transaction at all), that's tracked separately as an abandoned checkout, with optional recovery reminders. See [Checkout Recovery](/shop-and-checkout/checkout-recovery).
## FAQ
Use the **Sync with Mollie**/**Sync with PayPal** action on the transaction to pull the latest status directly from the provider — PayRequest's copy may just be behind. If the provider also shows it as failed, the customer's bank likely reversed an authorization that never settled; ask them to check with their bank.
Don't do this to "fix" a status — Transaction records should reflect what actually happened at the provider. If you received payment by another means (e.g. a manual bank transfer), record it through the appropriate manual payment flow rather than editing a failed transaction's status.
Only for subscriptions, and only for specific recoverable reasons (insufficient funds). One-off payment page or Smart Link payments do not auto-retry — the customer needs to try again.
## Next Steps
Automatic retries and chargeback handling for subscriptions
Recover abandoned checkouts before they become failed payments
When transaction data looks out of date
# Performance Tips
Source: https://docs.payreque.st/troubleshooting/performance-tips
Optimize your account
# Performance Tips
Most "PayRequest feels slow" reports come down to working with large lists one row at a time. These are practical habits — not code-level tuning — for keeping your dashboard fast and your workflow efficient as your customer, product, and transaction counts grow.
## Use Tags to Narrow Down Large Lists
Rather than scrolling through hundreds of customers, subscriptions, or products, tag records into meaningful groups (e.g. "Enterprise", "Annual Review", "Legacy Pricing") and filter by tag. This is faster to work with and makes [Bulk Actions](/organization-and-automation/bulk-operations) selection much quicker too, since tag filters support AND/OR logic.
## Use Bulk Actions Instead of One-by-One Edits
If you're about to make the same change to more than a handful of records — a price adjustment, a status change, a tag — do it once through [Bulk Actions](/organization-and-automation/bulk-operations) rather than opening each record individually. It's faster for you and produces a single auditable entry in the action history instead of dozens of individual edits.
## Export Instead of Browsing Thousands of Rows
For analysis, reporting, or just reviewing large volumes of data, export to CSV via [Export Functions](/analytics-and-reporting/export-functions) and work in a spreadsheet. Paging through thousands of dashboard rows is slower than filtering/sorting the same data locally once it's exported.
## Search and Filter Rather Than Scroll
List pages (Transactions, Customers, Products) support search and status/method filters — use them instead of paging through results manually, especially on accounts with a long transaction history.
## Keep Automations and Tags Purposeful
A very large number of tags or automation rules can make the dashboard itself harder to navigate (not technically slower, just noisier). Periodically review and retire tags/automations you no longer use.
## FAQ
Large datasets naturally take more time to query and render than small ones. Using the built-in search/filter to narrow what's displayed, or exporting to CSV for offline analysis, is usually faster than scrolling through everything.
There's no documented hard limit tied to your plan tier for these — if you're operating at a scale where dashboard performance is a real bottleneck, contact support so we can look at your specific account.
Not meaningfully on its own, but an unwieldy tag list makes tag-based selection slower to use effectively. Keep tags purposeful and periodically prune ones you no longer need.
## Next Steps
Make mass changes instead of editing records one at a time
Organize large datasets for faster filtering
Work with large datasets offline
# Sync Problems
Source: https://docs.payreque.st/troubleshooting/sync-problems
Resolving data synchronization
# Sync Problems
PayRequest keeps a local copy of data from connected providers (Mollie, PayPal) so your dashboard loads fast. Most of the time this happens automatically in the background, but if something looks out of date — a transaction stuck as "pending" when it was actually paid, or a subscription missing from your list — most areas that pull from an external provider have a manual sync action you can trigger yourself.
Sync problems are almost always about one connected provider's data lagging behind, not about PayRequest's own core records (invoices, customers, orders), which are updated directly and don't need "syncing."
## Signs You Might Have a Sync Problem
* A transaction's status in PayRequest doesn't match what you see in your Mollie or PayPal dashboard
* The Transactions page shows a **"Sync gap detected"** banner
* A subscription, customer, or mandate that exists in your provider account doesn't show up in PayRequest
## Manual Sync Actions
These are available directly on the relevant page:
| Where | Action | What it does |
| - | - | - |
| **Mollie Transactions** page | **Fill Gap** | Appears when a gap is detected between your last full sync and your most recent transactions; re-syncs the missing range |
| **Mollie Transactions** page | **Reset Sync** | Clears a sync that appears stuck, so you can retry |
| A single transaction's detail page | **Sync with Mollie** / **Sync with PayPal** | Re-fetches that one transaction's current status directly from the provider |
| **Mollie Customers** page | **Sync Customers** | Pulls customer records from Mollie |
| **Mollie Subscriptions** page | **Sync Subscriptions** | Pulls subscription records from Mollie |
| **Mollie Chargebacks** page | **Sync Chargebacks** | Pulls chargeback records from Mollie |
| A mandate's detail page | **Re-Sync Mandate** | Re-fetches that mandate's current status from Mollie |
| Mollie connection settings | **Sync Now** | Kicks off a background sync of your Mollie customers after (re)connecting |
If the **Mollie Transactions** page shows "Sync in progress," it's importing transactions in the background and will update automatically — you don't need to do anything unless it looks stuck, in which case use **Reset Sync**.
## The "Sync Gap Detected" Banner
This appears on the Mollie Transactions page when PayRequest notices your last full sync happened a while ago, but you have transactions from more recently than that — meaning there could be transactions in between that were never pulled in. Click **Fill Gap** to sync that specific date range.
## Why Sync Can Lag
* The webhook from your provider didn't arrive or was delayed (see [Webhook Configuration](/organization-and-automation/webhook-configuration) if you're troubleshooting your own outgoing webhook — this is about PayRequest's *incoming* sync with Mollie/PayPal, which is separate)
* A background sync job is still running for a large account
* The provider connection needs to be re-authorized (check your provider connection status in Settings)
## FAQ
Give it a minute — most syncs run in the background and the page updates once complete. If a transaction-level sync (e.g. "Sync with Mollie") still shows stale data after that, double-check the same payment's status directly in your Mollie dashboard; if Mollie itself shows the old status, PayRequest is correctly reflecting it.
Use **Fill Gap** when you suspect specific transactions are missing (the gap banner will tell you this). Use **Reset Sync** only if a sync appears stuck/in-progress for an unreasonably long time and you need to clear it before retrying.
No — your provider (Mollie/PayPal) remains the source of truth for what actually happened with a payment. A sync problem just means PayRequest's local copy hasn't caught up yet; running the relevant sync action pulls the current state back in.
## Next Steps
Diagnose a specific declined or stuck payment
Your own outgoing payment notifications, separate from provider sync