Skip to content
2E0JWR
PBNPorkbun for WHMCS

Limits and known gaps

Everything the module cannot do and why, all of it Porkbun API constraints: EPP retrieval, registrar lock, multi-year terms, premium domains, .uk transfers and rate limits.

Everything the module cannot do, and why. All of these are Porkbun API constraints rather than module decisions — but they are the things you need to know before committing, so they are stated plainly rather than buried.

Cannot be done through the API at all

GapDetailWorkaround
EPP / auth code retrievalNo API endpoint existsPorkbun dashboard: Domain Management → the domain → Get Authorization Code. Regenerated each time you view it
Registrar lock toggleNot exposedDashboard
ID protection toggleFree WHOIS privacy is applied automatically at registration; there is no after-the-fact switchAccount Security Settings sets the account default
Multi-year termsRegistration and renewal are for the registry-minimum term, usually one year, per callRenew additional years manually, or set the module to sell one-year terms only
Premium domainsCannot be registered, renewed or transferredHandle in the dashboard and invoice manually
.uk inbound transfersCannot be initiated via APIDashboard. Registration and management of .uk work normally
The account’s first ever registrationBlocked from the API as an anti-abuse measureRegister one domain manually, once

How the module handles each

It does not paper over them.

  • Premium domains are marked unavailable in search results, and registration and transfer refuse them before the customer is charged — rather than taking an order that will fail at the registrar with the money already taken.
  • Multi-year orders register one year and write a note to the module log. The pricing sync can switch years 2–10 off in WHMCS so the longer terms are never offered.
  • EPP retrieval returns a message telling the admin exactly where to get the code, rather than a generic failure.
  • Domains not opted in to API Access are flagged in the module log by the daily sync, before you find out at renewal time.

Operational constraints

Prepaid credit

The account runs on a balance you top up. There is no invoicing and no credit terms. A balance that hits zero overnight means failed renewals in the morning.

Turn on auto top-up. Porkbun also offers per-account monthly spend limits and low-balance alerts.

Rate limits

OperationDefault limit
Single availability check10 per 10 seconds
Bulk availability check200 domains per 60 seconds, max 25 per call
Registration attempts1 per second
Successful registrations1000 per 24 hours

All per account, and all configurable per API key on request. Comfortable for normal volumes.

The module is built to stay inside them: renewal prices come from the cached TLD price list rather than a lookup per domain, so a bulk renewal run makes one pricing call rather than one per domain; availability checks are batched 25 at a time against the separate bulk budget.

Webhook delivery requirements

Porkbun delivers only to https:// on port 443, resolving to a public address. Private, loopback, link-local and CGNAT targets are refused, re-checked before every delivery.

An endpoint that fails 20 deliveries in a row is disabled at Porkbun’s end, which is why the domain sync cron should stay enabled regardless.

Things that are easy to misread as bugs

The WHMCS DNS tab does nothing. The domain is probably not using Porkbun’s nameservers. The DNS tab manages Porkbun-hosted DNS; if you pointed the domain elsewhere, records live there.

Deleting a DNS record in WHMCS does not delete it at Porkbun. Full DNS sync (allow deletes) is off by default. Off, the module only adds and updates.

Two renewals on the same day produce one charge. The idempotency key includes the date, so a same-day repeat replays the original response. This is deliberate — the alternative failure mode is double-charging on a network timeout.

A transfer price of 0.00 is not free. Porkbun quotes 0.00 for transfers it does not price, .uk among them. The pricing sync leaves whatever WHMCS already holds rather than publishing a zero.

The nightly pricing sync is not running. Click Save Changes on the registrar config page. WHMCS only scans for the module’s hooks.php when the module is activated or saved.