Recurring Payments and Dunning for Perfex CRM

Recurring Payments and Dunning for Perfex CRM

Preview Recurring Payments and Dunning for Perfex CRM

Perfex creates the invoice. It does not take the money.

Perfex CRM’s own documentation says it plainly: a recurring invoice is used only to re-create
the invoice on a specific date. The document goes out on schedule, correctly numbered, with the
right items on it – and then nothing happens. No card is charged. No mandate is debited. Somebody
in your office still opens the list every month, works out who has not paid, and writes the
emails.

This module is the other half. Your customer authorises a card or a bank debit once, from your
own client portal. After that, when Perfex generates the recurring invoice, the money is
collected automatically – and when a charge fails, a dunning engine works the decline until the
money arrives or you decide to stop.

Dunning is the automated sequence of retries and emails that chases a payment which failed.
It is the part no option inside Perfex covers today – see the table below – and it is where the
money is.

Stripe, in its own engineering post on Smart Retries, writes: “Twenty-five percent of lapsed
subscriptions are purely due to payment failures.” Recurly’s published churn benchmarks put the
overall churn rate at 3.60%, of which 1.25 points are involuntary – revenue lost to a card that
failed rather than to a customer who decided to leave – and Paddle puts involuntary churn at
20-40% of overall churn. That share is what a dunning engine exists to win back.

It is worth winning back, and the timing is most of the job. Recurly reports that 90% of
recovered transactions occur within the first 10 days of a failed payment. Baremetrics,
measuring over a million dunning emails sent by its Recover customers, puts recovery at 13.25%
for the email sent the day the payment fails, against 4.22% for the one sent on day 15; across
almost 300,000 pre-dunning emails, the notice sent 30 days before a card expires recovers
14.37% – the best result in the set, because it arrives before anything breaks. And Recurly,
analysing one enterprise merchant’s failed transactions, found that merchant’s existing retry
logic recovering roughly 53% of eligible failures, and optimised retry timing reaching roughly
71% on the same transactions.

Every figure above is another vendor’s, measured on that vendor’s own network and published on
that vendor’s own site. This module ships the machinery those figures describe – a retry
schedule you set, decline classification, an escalating email sequence and a card-expiry
warning – inside Perfex. It does not promise you their recovery rates.

This is a module for Perfex CRM, not a standalone script

You need a licensed, working Perfex CRM 3.4.x installation, sold separately. This module
installs into it under Setup > Modules and adds one sidebar section. It modifies no core file,
and it uninstalls cleanly.

This is an independent third-party module. It is not published by, affiliated with or endorsed
by the authors of Perfex CRM, and it is not affiliated with Stripe, GoCardless or Paystack.

What Perfex already does, and what this adds

Every row below is a statement about published behaviour or shipped code, and every one can be
checked.

<thead>

</thead>
<tbody>

</tbody>

Perfex recurring invoices Perfex Stripe subscriptions Free Perfex gateway modules This module
Generates the invoice on a schedule Yes Yes, driven by Stripe Not applicable Yes, in both modes
Collects the money with the customer not present No Yes – but Stripe owns the schedule and the charge No: a gateway only runs when someone clicks Pay Yes
Charges an invoice that Perfex created No No – Stripe bills its own subscription Only if the customer pays it themselves Yes
Plans defined inside Perfex Not applicable No – plans are created in the Stripe Dashboard Not applicable Yes: interval, amount, trial, setup fee, taxes, item lines
Free trial Not applicable No – the vendor’s documentation states trials are not supported Not applicable Yes, per plan and per customer
Works with a gateway other than Stripe Not applicable No One gateway each, on-session only Stripe, GoCardless and Paystack
Retries a declined payment No Stripe’s own retries, outside Perfex No Yes, on a schedule you set
Tells a soft decline from a hard one No No No Yes – and never retries a hard decline
Emails escalate as the failure ages Overdue reminders, keyed to the due date, same message each time One “payment failed” email No Three-step sequence, plus card-expiring, dead-mandate and confirmation-needed messages
Single-use link to clear a bank security check on your own invoice No An email points to Stripe’s hosted invoice No Yes – single-use, expiring, no login
Customer can pause, resume or cancel without logging in No No No Yes
Staff can see stored payment methods and revoke one No No No Yes: brand, last four, expiry, status
Per-attempt audit trail No No No Attempt number, decline code, transaction id, next retry
MRR, ARR, churn and involuntary churn No No No Yes, one row per currency
Warns before a card expires No No No Yes, on your own notice days

If the description editor strips the table, use this instead:

Perfex core re-creates the recurring invoice and can send an overdue reminder; it never
charges anything. Perfex’s built-in subscriptions do charge, but only through Stripe, only for
plans you create in the Stripe Dashboard, with no trial support and no retry logic of their
own. The free Perfex payment-gateway modules on GitHub are on-session gateways: they run when
a customer clicks Pay and cannot charge anybody afterwards. This module charges a stored
authorisation off-session against your own Perfex invoices, on three rails, and then works the
decline.

A note on Stripe’s own retries. Stripe’s Smart Retries applies to Stripe’s own invoices and
subscriptions. A plain payment intent raised against a CRM invoice is never retried by Stripe.
That is precisely the case this module covers.

How this differs from the other paid modules you will find

Perfex CRM has over 25,000 installations, and there is already a paid module for almost every
individual piece of the recurring-money problem: reminder emails before a renewal, a single
direct-debit rail, a prepaid customer wallet. Three of them are worth naming, so you can tell
which one you actually need – and so you can see what none of them does.

Products and services for Perfex CRM ($39) lets you sell products and services as Stripe
subscriptions and sends renewal notification emails 7, 30 and 60 days ahead. If a heads-up email
before renewal is what you are missing, that item is cheaper and it does that. What it does not
carry is retry logic: when the payment fails, the sequence ends. This module starts there.

GoCardless Payment Gateway ($49) adds GoCardless to Perfex and can set up a GoCardless
subscription that debits on its own schedule. If every one of your customers pays by UK or EU
bank debit and you never touch a card, that covers the collection. What it is not is a
multi-rail engine: the recurring schedule lives at GoCardless rather than against your Perfex
invoices, there is no card rail beside it, and there is no decline classification, dunning
sequence, MRR reporting or client-portal method management around it. Here GoCardless is one of
three rails, the schedule is your Perfex invoice, and the recovery layer is the product.

Wallet Module ($49) gives each customer a prefunded balance inside Perfex and settles their
recurring invoices from it automatically. For customers who are happy to keep a deposit with
you, that is a simpler answer than anything here. But the money has to be in the wallet already –
somebody topped it up. There is no card vault behind it, no gateway retry and no decline
handling, because there is no gateway in the loop. This module takes money the customer has not
pre-paid, from their bank or their card, and handles it when that fails.

One more thing worth knowing. When a customer pays a Perfex invoice through the built-in
Stripe gateway, Perfex already asks Stripe to keep that card for future off-session use. The
authorisation is sitting there. Nothing in Perfex ever charges it again. This module is the part
that does.

Features

Collecting the money

  • Two modes, both usable on the same install.
    Auto-charge a recurring invoice – Perfex keeps generating its recurring invoices exactly as
    it does today, with your numbering and your items, and the module collects each one the moment
    it appears. Subscription plan – the module owns the clock, builds the period’s invoice from a
    plan you defined, then charges it.
  • One switch for everything. Turn on Auto-charge every recurring invoice and any customer
    with a saved default payment method is collected automatically, with no subscription to create
    by hand.
  • Charges at a sensible hour. Collections are placed at a configurable local hour (2 a.m. by
    default) in the subscription’s own timezone, which is what card issuers expect from a
    subscription merchant.
  • Respects part payments. A retry collects what is still owed, never the original amount
    again.
  • Charge now, from the subscription screen, behind its own staff permission – with an honest
    message when the engine refuses rather than a claim that money moved.
  • The invoice is never edited. The document exists and carries its final number before any
    money is requested, and a decline never modifies it. That immutability is what makes retries
    safe.

Three payment rails

  • Stripe – cards worldwide. Capture through Stripe Checkout, off-session charging, 3-D
    Secure recovery links, and handling for cards the network updates automatically.
  • GoCardless – bank debit through the Billing Request Flow (Bacs, SEPA and the other schemes
    GoCardless selects from the payer’s country). Settlement is recorded from the confirmation
    webhook, not at submission.
  • Paystack – card authorisations for Nigeria, Ghana, South Africa and Kenya.
  • Each rail has its own webhook endpoint, its own signature verification and its own event list.
    Credentials are entered once as encrypted Perfex gateway settings.
  • Currency handling that is actually right: zero-decimal currencies sent as whole units,
    three-decimal at x1000, everything else at x100, always rounded rather than truncated.
  • Run two rails side by side – Stripe for international customers, GoCardless for domestic ones.
    Each saved method carries its own gateway, and the module always charges the one that customer
    actually authorised.

When a payment fails

  • A decline classifier that reads the gateway’s advice code first and the decline code
    second.
    A soft decline (insufficient funds, issuer unavailable, processing error) is
    retried on your schedule. A hard decline (lost or stolen card, revoked authorisation,
    incorrect number) is never retried – the card networks bill per attempt and issuers read
    repeated retries as fraud probing. An authentication failure gets a confirmation link
    instead of a blind retry. A dead mandate stops collection and asks for re-authorisation. And
    when the failure is your own misconfiguration – wrong API key, currency not enabled – your
    staff are told and the customer is never dunned for it.
  • Dunning policies you edit: retry days, email days, maximum attempts, a give-up day, the
    charge hour, staff notification, and a terminal action (mark past due, pause, cancel, or stop
    billing and ask a human about portal access).
  • A live preview that re-draws the whole timeline from the values in the form before you
    save, and warns you about the mistakes that are invisible when the three limits are read
    separately – retries planned beyond the attempt cap, steps falling after the give-up day, no
    retry days at all, no email days at all.
  • Every offset is measured from the first failure, never from whenever the last cron run
    happened. A missed day does not stretch a 14-day sequence into a month.
  • Each step is claimed before it is sent. A customer can never receive the same dunning step
    twice, however often the cron runs, and after an outage only the latest due step is sent
    rather than three landing in the same minute.
  • A velocity ceiling no policy can raise: 8 attempts per stored instrument per 14 days,
    across all invoices. Past that the module stops and asks you to speak to the customer.
  • Card-expiry warnings on your own notice days (30 and 7 by default) – the cheapest recovery
    is the one that costs no failed charge at all.
  • Any payment recorded against the invoice by any route – the module, the customer’s own Pay
    button, or your staff typing it in – closes the open dunning, stands down the queued retries,
    and puts a past-due subscription back to active.

Emails your customers actually get

Eight Perfex email templates, seeded into Setup > Email Templates and editable exactly like any
other: three failed-payment notices, card expiring, payment authentication required, receipt,
payment authorisation cancelled, and an upcoming-payment notice. Merge fields cover card brand,
last four digits, amount due, retry date, decline reason, the update-card link and the
confirm-payment link. Customers see plain-language decline reasons, never the gateway’s raw
error text, and a placeholder that cannot be resolved is stripped rather than shown.

What your customers can do themselves

  • A Billing & Cards page in the client portal: their subscriptions, their saved payment
    methods with brand, last four and status, a past-due banner, and add / replace / remove.
    Replacing a card moves every live subscription onto the new one – “update card” actually
    changes what gets charged.
  • A self-service subscription page reachable without a login, authorised by the
    subscription’s own hash: pause for up to three months, resume, or cancel. Cancelling always
    passes a retention step first, and a customer-initiated cancellation always takes effect at
    the end of the paid period – they keep what they paid for and nothing further is charged.
  • A 3-D Secure confirmation page, also without a login, on a single-use expiring token that
    is stored hashed. Unknown, expired and already-used links all return the same neutral page, so
    the endpoint cannot be used to probe for valid tokens.
  • A read-only payment history, shown only to contacts who hold the Perfex invoices
    permission.

Knowing where you stand

  • A dashboard that answers three questions: how recurring revenue is doing, what needs a human,
    and whether the machinery is running.
  • MRR (monthly recurring revenue – what your live subscriptions are worth in a month; a
    yearly plan of 1,200 counts as 100) and ARR, taken as a daily snapshot, one row per
    currency, never converted and never added together.
    No FX is performed, and a single blended
    total would be a fiction.
  • Churn (subscriptions that ended in the period and the monthly revenue that left with them)
    and involuntary churn – the customers you lost to a payment failure rather than to a
    decision, which is exactly what dunning exists to prevent.
  • Recovered this month: payments that only succeeded because an earlier attempt had failed.
  • MRR movement over 12 months – new, expansion, contraction, churned – reconciling exactly.
  • Success rate per gateway, with in-transit and awaiting-customer attempts counted but kept
    out of the ratio, so a bank-debit rail does not read as broken.
  • Top decline reasons and cohort retention by signup month.

Running it

  • Eight admin screens: Dashboard, Subscriptions, Plans, Payment Methods, Charge Attempts,
    Dunning, Reports and Settings.
  • Seven staff capabilities, including separate ones for viewing stored payment methods and for
    manual collection.
  • A Diagnostics screen built to answer “why did nothing get charged?” – per-gateway
    configuration and webhook state, the webhook URL to register, the age of the last cron run,
    all eight cron jobs with their last error, unprocessed events, stuck attempts, and
    subscriptions waiting for a payment method. API keys are never decrypted or printed, so the
    screen is safe to screenshot.
  • Cron health on the dashboard, with a red banner and a staff notification when the cron has
    been silent longer than your threshold.

Built so it cannot charge twice

Five independent guards, all enforced by the database rather than by hopeful code: a single-flight
lock around the cron; deterministic idempotency keys (never random ones), so a repeated charge
makes the gateway replay its original answer instead of taking money again; one attempt row per
invoice and attempt number; the gateway transaction claimed before any payment is written into
Perfex; and webhook de-duplication on the gateway’s own event id. On top of that the module asks
Perfex’s own ledger whether that transaction already exists on the invoice.

Card data never reaches your server

Card numbers are entered on the payment provider’s own page and go straight to the provider.
Your server holds the token, the brand, the last four digits and the expiry – nothing PCI DSS
treats as in scope. There is no card field anywhere in this module, deliberately not in the
admin area either: your staff should never be in a position to type a customer’s card number
into your CRM. The consent your customer gives is recorded with its timestamp, IP address,
browser and a snapshot of the exact wording, so you can evidence it later.

And the housekeeping

  • Multi-tenant safe: every table name goes through Perfex’s prefix helper, the installer is
    idempotent, settings live in the options table rather than on disk, and email templates are
    seeded per tenant database.
  • No licence call at all. An offline format check on your purchase code, and nothing
    outbound – a network problem can never stop your invoicing.
  • Deactivating is safe: charging stops, data is untouched, and webhook endpoints answer 503
    so gateways re-deliver rather than dropping events. Reactivating creates no duplicates.
  • Uninstalling keeps your data by default. Dropping the tables is an explicit opt-in you set
    before you remove the module. Perfex invoices and payments are never touched.
  • Deleting a client cancels their subscriptions, detaches each stored token at the gateway, and
    removes the local rows.

What version 1.0 does not do

Stated here rather than discovered after you buy.

  • Three gateways only – Stripe, GoCardless and Paystack. There is no PayPal and no Razorpay
    integration. Your existing Perfex gateways keep working for manual, on-session payments; they
    simply cannot be charged off-session by this module.
  • No automatic late fees. A fee would have to modify an invoice that already carries its
    final number, which is unacceptable in most tax jurisdictions. The policy screen carries the
    fields for a later release; version 1.0 never applies one.
  • GoCardless advance notices are sent by GoCardless, not by this module, and its
    notifications must be left switched on. Bank debit schemes require the payer to be told before
    money is taken, and the “module sends it” option is visible but deliberately disabled so
    nobody can switch off the only notice being sent.
  • GoCardless payments are never retried by the module. Re-submitting a mandate from our side
    would be a second collection, not a retry. GoCardless Success+ owns that; for GoCardless the
    email schedule is the whole recovery path.
  • Flat pricing only on the plan screen. The engine already computes per-unit, tiered and
    metered pricing, and version 1.0 ships no screen for them. The same is true of coupons and of
    the plan flag “visible in client portal”.
  • Customers cannot sign themselves up to a plan. Subscriptions are created by staff; the
    portal manages what already exists.
  • Adding or replacing a stored card needs a client-portal login. Confirming a bank security
    check and managing a subscription do not.
  • Reconciliation is a state sweep, not an API poll. Once a day the module finds charge
    attempts that never reached a final state and tells you; it does not query the three gateway
    APIs to compare balances. You resolve those from the gateway dashboard.
  • No migration wizard from Perfex’s built-in Stripe subscriptions. Moving a customer across
    is a manual, documented procedure – and you must never run the same customer on both at once.
  • English only. One language file ships, using Perfex’s own translation mechanism, so a
    translation drops in as an extra file.

Requirements

  • Perfex CRM 3.4.x, licensed and working. Sold separately; this is a module, not a
    standalone script.
  • PHP 8.1, 8.2, 8.3 or 8.4.
  • The MySQL or MariaDB server your Perfex already runs on. Tables are created with your
    install’s own character set and collation.
  • HTTPS, reachable from the public internet. Gateways will not deliver webhooks to plain
    HTTP, and card authorisation pages must not be reached over it.
  • A working Perfex cron job. This is not optional and it is not a second cron – the module
    registers into the one you already run. Without it nothing is charged, no retry fires and no
    dunning email is sent. Cron health is on the dashboard, and you are notified when it goes
    quiet.
  • Outbound HTTPS from your server to your gateway’s API. Locked-down hosting that blocks
    outbound connections cannot charge anything.
  • Working email through Perfex’s own SMTP settings.
  • A merchant account with at least one of Stripe, GoCardless or Paystack, with API keys.
    Each provider approves accounts on its own terms; approval, fees and any compliance
    requirement are between you and them.
  • No PHP extensions beyond what Perfex itself requires. No core file is modified.

Demo

Demo: https://recurring.104.171.139.106.sslip.io/admin
Username: [email protected]
Password: RecurringDemo2026

Read-only account. Demo data resets nightly.

Documentation

Full documentation ships in the download as HTML and is published online: installation, cron
setup, per-gateway setup for all three rails, the two modes, dunning policy, the client portal,
PCI and data handling, a FAQ and the changelog.

Documentation: https://recurring.104.171.139.106.sslip.io/modules/autobill/docs/index.html

Support and updates

Item support is included for 6 months from the purchase date. That is Envato’s standard term,
and it is bundled in the price. At checkout you can add extended item support, increasing the
support period up to a maximum of 12 months from the date of purchase. Afterwards Envato sells
6-month extensions while your period is still running, and 6-month renewals once it has expired,
from your Envato Downloads page or this item page. Envato sets the eligibility rules and the
price – support is costed as a percentage of the item price, not by us.

What your support period covers. During it, we are available to:

  • answer general questions about the module and how to use it;
  • answer specific questions about its features and functionality, and explain the way it is
    designed – the two modes, dunning policy and retry schedules, the MRR rows, the cron job, and
    how the module talks to each of the three payment rails;
  • take reported bugs and defects: report one, discuss it with us, and where a fix is appropriate
    we will issue it. A defect fixed in a general version update reaches every buyer, not just you;
  • keep the module working with new Perfex releases and with gateway API and security changes,
    delivered as version updates available to all buyers.

Raise something while your support is valid and we see it through – even if the fix lands after
your support period has ended.

Before you write in, read the documentation in the download and check this item’s FAQ and
comments. Cron setup, API keys, webhook URLs and the per-gateway walkthroughs are all covered
there step by step, and you will have the answer faster than we can type it.

Response time. We aim to reply within one business day. It is an aim, not a guarantee:
response times vary with the volume of requests and with what is being asked, and a defect that
needs a fix, a test and a release can take days. Any extended break is announced on this item’s
Support and Comments tabs before it starts. Support runs through the item comments and the
contact form on our profile page.

What item support does not include. Envato’s Item Support Policy draws the line and we
follow it rather than invent our own:

  • Customisation. Modifying or extending the module beyond the features, style and
    functionality described on this page.
  • Installation. Item support does not include help to install the item on your server or on a
    CMS. Installing Perfex, uploading the module archive and adding the server cron entry are yours
    to do. We will answer your questions about how it is done – the documentation walks through all
    of it – but we do not do it for you.
  • Your hosting, server environment or software. PHP settings, outbound HTTPS, SSL
    certificates, mail delivery, and whether your host will run cron every five minutes. Those sit
    with your host, not with the module.
  • Anything not included in this download, including conflicts with other third-party Perfex
    modules. Test on a staging tenant first.
  • Your gateway account. Its approval, fees, payout timing, and any compliance decision your
    gateway makes about your business.
  • A modified module. Anything arising from editing the code – including self-hosting a
    gateway’s JavaScript, which changes your own PCI scope.

Installation and customisation are the two things buyers ask for most often that support cannot
cover. Ask us and we will quote them as private paid work, separately from the item. They are not
part of what you bought here.

Updates are free for the life of the item. Every buyer, supported or not, receives updates
that keep the module working as described and protected against major security issues, plus the
further improvements we release. New versions appear automatically on your Envato Downloads page.
Perfex has no auto-update mechanism for modules, so applying one is a download and an upload:
take the new archive from your Downloads page and upload it under Setup > Modules > Upload
Module. The module compares the version header and runs any migration needed. Your settings,
subscriptions, stored tokens and charge history are kept. A full changelog is published with the
documentation and ships in the download.

What is coming

Planned for future releases. None of it is in version 1.0, and no release dates are
promised – buy this for what is on the page above.

  • Late fees, in a form that never edits an invoice already carrying its final number.
  • More rails. PayPal and Razorpay were deferred rather than forgotten: each needs its own
    mandate model, and neither maps cleanly onto the stored-token, charge-off-session pattern the
    three shipped rails share. A half-built rail that silently fails to collect is worse than
    three that work.
  • Usage-based and tiered pricing screens. The engine already computes them; there is no
    screen yet.
  • Coupon screens, on the same footing.
  • Customer self-signup to a plan from the client portal.
  • A migration path from Perfex’s built-in Stripe subscriptions.
  • Reconciliation that queries the gateway APIs rather than sweeping local state.
  • More language files.
Download Recurring Payments and Dunning for Perfex CRM Nulled
Download Recurring Payments and Dunning for Perfex CRM

Note: If you are having trouble with Recurring Payments and Dunning for Perfex CRM Nulled free Download, try to disable AD blocking for the site or try another Web Browser. If disabling AD blocker or change Web Browser not help to you please contact us.

Prev