CoreInto

Automated invoicing for web hosting, run by a single cron job

CoreInto generates renewal invoices ahead of their due dates, sends the reminders, adds late fees, suspends and terminates unpaid services, charges saved cards and keeps the exchange rates current, all from one cron job on an ordinary hosting account.

Daily billing run moving an invoice from generation through reminder to payment and service

What the billing engine does without anyone signed in

Every item below is part of every CoreInto plan. The settings under Automation Settings decide the timing; the cron job does the work.

  • Invoices ahead of due dates

    Renewal invoices are generated a set number of days before each service or domain falls due, numbered by the scheme you choose, with a PDF carrying your logo.

  • Reminders and late fees

    Unpaid and overdue notices go out on the days you set, and a late fee is added to invoices that pass their due date, using the editable email templates.

  • Suspension and termination

    Services with unpaid invoices are suspended with a reason after the grace period you configure, and terminated later if the invoice is still unpaid.

  • Saved cards with automatic capture

    Clients who save a card through Stripe are charged when an invoice is due; card expiry notices warn them before a stored card stops working.

  • Multi-currency with daily rates

    Sell in several currencies with exchange rates refreshed by the daily run, and show visitors the currency of their country using GeoIP.

  • Tax rules and proration

    Tax rates by country and state, inclusive or exclusive, with a tax ID label on invoices; renewal dates and proration keep upgrades and term changes fair.

The daily run: one cron job, every billing task

CoreInto needs exactly one cron job on your hosting account. It calls cron.php, which runs the daily tasks once a day and the frequent tasks every time it fires. The daily tasks cover invoice generation, reminders, late fees, suspension, termination, domain syncing and renewal notices, exchange rate updates, database backups and pruning of old records; the frequent tasks send the email queue, fetch ticket mailboxes and work the module queue. Utilities > Automation Status shows when each task last ran and what it did, and any task can be started by hand from the same page when you want to check a setting without waiting for tomorrow.

php /path/to/coreinto/cron.php
  • Invoice generation the set number of days before each due date
  • Unpaid and overdue reminders on the days you choose
  • Late fees added once an invoice passes its due date
  • Suspension with a reason, then termination, for unpaid services
  • Domain sync, renewal notices and currency exchange rates
  • Email queue, ticket mailboxes and module queue on every run

From invoice to payment to service

  1. The invoice is generated

    Ahead of the due date the daily run creates the renewal invoice, applies tax rules and the client's currency, numbers it by your scheme and emails it with a PDF.

  2. Reminders go out

    Unpaid reminders are sent on the configured days before and after the due date; a late fee can be added when the date passes.

  3. The payment arrives

    A saved card is captured automatically, or the client pays through a gateway, applies credit, or a staff member records a manual payment. The transaction is logged.

  4. The service is kept running

    Payment marks the invoice paid and moves the service's next due date forward. If no payment arrives, the service is suspended with a reason and the client is told why.

  5. Termination or recovery

    Paying a suspended service unsuspends it through the server module. A service that stays unpaid past the termination period is terminated and the invoice cancelled.

Billing features at a glance

  • Invoice statuses, numbering schemes, split, merge and cancel
  • PDF invoices with your logo and a batch PDF export under Reports
  • Transactions, reversals and refunds, including refunds through the gateway
  • Credit balance per client in their own currency, with Add Funds
  • Billable items, quotes that convert to invoices, credit and debit notes
  • Disputes recorded against payments
  • Mass pay: several invoices settled in one payment
  • Tax rules by country and state, inclusive or exclusive, tax ID label
  • Per-term prices from monthly to triennial, one-time and free, with setup fees
  • Renewal dates and proration for upgrades and changed terms
  • Currencies with exchange rates and per-country currency by GeoIP
  • Automation Status page with every task's last run

Renewal invoice generation ahead of due dates

Every service and domain in CoreInto carries a next due date, and the billing engine works backwards from it. The daily run looks for anything falling due within the number of days you set under Automation Settings and creates the invoice then, so the client has time to pay before the service is at risk. A client with three hosting accounts and two domains due in the same week receives invoices for each, or, where the dates match, lines on one invoice, which keeps the inbox tidy and the payment simple.

Invoice numbering follows a scheme you choose, so your sequence stays continuous after a move from another system and your accountant sees the format they expect. Each invoice has a status, can be split into two or merged with another, and can be cancelled rather than deleted, which keeps the record honest. The PDF carries your logo and the tax ID label from the tax configuration, and the client receives it by email from a template you can edit in every language you have installed.

The invoice itself is built from the catalogue. The product's per-term price, any configurable options and add-ons, the setup fee on first order, promotions still in force and the client's currency all come together on the lines. Because the invoice is created by the same code whether the daily run, a staff member or an order triggers it, the result is consistent, and a staff member who needs an invoice today can create one by hand or run the generation task from Automation Status.

Payment reminders and late fees on hosting invoices

An invoice that nobody is reminded about is an invoice that is paid late, so CoreInto sends reminders on a schedule you define. Unpaid reminders go out on the days you set before the due date, overdue notices follow on the days you set after it, and each message is an email template with merge fields for the amount, the due date and a direct link to pay. Templates are editable, and a client who has chosen Urdu or another installed language receives the version written for that language.

Late fees are a setting rather than a manual chore. When an invoice passes its due date the daily run can add a late fee according to the setting you chose, and the client is told about it in the overdue notice. Staff can see on the invoice that the fee was applied automatically and can remove it where goodwill is the better choice; the transaction record shows what happened either way.

Reminders tie into everything else on the account. A client who signs in sees the amount due and a Pay now button on their dashboard, and the My Invoices page opens with tiles for unpaid and overdue invoices and what was paid this year. Staff see the same picture from the client page, including the full email history, so a support question about a reminder can be answered with the exact message that was sent and the time it went out. Mass messages can be used when a payment provider changes or a bank account moves, so every client hears it once.

Automatic suspension and termination of unpaid services

Chasing non-payment by hand does not scale, so CoreInto suspends and terminates on a schedule. Automation Settings holds the number of days after the due date at which an unpaid service is suspended and the later number at which it is terminated. On the day, the daily run calls the server module, intoPanel or cPanel & WHM, to suspend the account with a reason that the client sees on their service page, and sends the suspension email. The reason matters because support staff and the client both know at once that payment, not a fault, is the cause.

Paying the invoice reverses the process without a ticket. The payment marks the invoice paid, the service is unsuspended through the same module, and the next due date moves forward by one term. When a module action cannot be completed immediately, for example because a server is unreachable, it waits in the Pending Module Actions queue and is retried, so a short outage does not leave a paying client suspended.

Termination is deliberate and later. A service that remains unpaid past the termination period is terminated through the module and the invoice is cancelled, which stops the account from carrying a debt for a product the client never kept. Settings that govern services decide how the automation treats each stage, and staff can suspend or unsuspend from the service page at any time with their own reason. Every action is written to the module log with secrets hidden, so the sequence can be reviewed afterwards.

Saved cards and automatic capture for recurring hosting payments

The simplest invoice to collect is one the client never has to think about. With Stripe set up, a client can save a card during checkout or from Payment Methods in their account, and the card token is stored encrypted with the key kept in your configuration file. When a renewal invoice is generated the daily run attempts capture against the saved card, and a successful charge marks the invoice paid before the first reminder would have been sent.

Captures do fail, and CoreInto handles the ordinary cases. A declined charge leaves the invoice unpaid and the normal reminder schedule takes over, so the client is told in time to pay another way. Card expiry notices go out before a stored card reaches its expiry month, prompting the client to add a new one, and the Gateway Log under Billing records every request and answer from the provider so a staff member can see exactly what Stripe said.

Clients stay in control of their own methods. The Payment Methods page lists saved cards and lets a client remove one, and staff can restrict which gateways a particular client may use. Where a client prefers not to store a card, the same invoice can be paid from the client area through PayPal, JazzCash, Easypaisa or a manual bank transfer, or settled from the credit balance. Automatic capture is one option among several rather than a requirement, which suits hosting companies serving markets where card use is not the norm.

Credit balance, add funds and mass pay for clients

Every client in CoreInto has a credit balance in their own currency, and that balance is the quiet workhorse of billing. Staff can add credit for goodwill, for a refund that stays on the account, or as part of a migration, and the balance is applied to invoices as they are generated or when the client chooses. The client page shows the balance alongside invoices and transactions, so there is never a question about where a figure came from.

Add Funds lets clients top up the balance themselves. From the client area they choose an amount, pay it through any gateway open to them, and the deposit becomes credit that future invoices draw down. For clients who pay by bank transfer or mobile wallet once a quarter, this turns several small payments into one deposit, which reduces fees and the number of times a staff member has to match a transfer to an invoice.

Mass pay solves the other common case: a client with several invoices due at once. Instead of paying each one separately, the client selects the open invoices and settles them in a single payment through a gateway, and CoreInto allocates the money across the invoices and records one transaction per invoice. Combined with credit, mass pay means a client with a hosting plan, two domains and an add-on due in the same month pays once. Refunds, reversals and disputes have their own records under Billing, so the audit trail is complete whichever way the money moved.

Quotes, credit notes, debit notes and billable items

Not every charge starts as a renewal. Quotes let staff put a priced proposal in front of a client: priced lines with tax and notes, sent by email. The client sees it under Quotes in their account and can accept it, at which point CoreInto turns it into an invoice without anyone retyping the lines. Quotes that are not accepted simply expire, so the pipeline of proposals stays visible without cluttering the invoice list.

Billable items cover work that does not fit a product: a migration, an hour of help, a custom licence. A staff member records the item against the client with a description and amount, and it is invoiced through the same billing engine as a product. This keeps one-off work inside the same invoicing, reminder and payment flow as everything else rather than in a spreadsheet beside it.

Credit and debit notes correct the record without editing history. A credit note reduces what a client owes, or returns credit to the balance, with a reason attached; a debit note adds a charge after the fact. Both appear on the client's account and in reports, which is what an accountant expects when reconciling. Disputes are recorded against payments when a provider reports a chargeback, so staff can see the state of the money and the service together and decide whether to suspend while the dispute is open.

Tax rules and multi-currency exchange rates in hosting billing

Hosting companies sell across borders, so tax and currency are settings rather than afterthoughts. Settings > Tax Configuration holds tax rules with rates by country and state, applied inclusively or exclusively according to how your prices are set, and a label for the tax ID that appears on invoices. A client's country and state on their billing details decide which rule applies, and the invoice shows the tax line with the rate used so nothing has to be explained later.

Currencies live under Settings > Currencies. Each has a code, symbol, format and an exchange rate against your base currency, and the daily run refreshes those rates so prices shown in secondary currencies stay in step. Products carry prices per currency, which means you can round to sensible figures rather than displaying awkward conversions, and promotions and domain pricing follow the same pattern. A client's currency is fixed on their account, and the Change currency option in the client area is there for the cases where it should move.

Visitors see the right currency before they sign in. GeoIP-based currency by country maps each country to a currency, so a visitor from Pakistan sees rupees and one from Germany sees euros on the same store without choosing. Reports under the Reports menu, including income and new clients, filter by currency and export to CSV, and the batch invoice PDF export produces a period's invoices in one file for bookkeeping.

Automation Status page for monitoring the billing cron

Automation only earns trust when you can see it working. Utilities > Automation Status lists every task the cron job runs, with the time of its last run, what it processed and whether it finished cleanly. If the daily run has not fired since yesterday, the page says so, which is the first thing to check when invoices seem late. Each task has a Run now button, so a changed reminder setting can be tested immediately instead of waiting for the next scheduled run.

The daily tasks and the frequent tasks are separated on the page. Invoice generation, reminders, late fees, suspensions, terminations, domain sync and notices, currency rates, backups and prune run once a day; the email queue, ticket mailboxes and module queue run on every firing of the cron job. Settings under Settings > Automation Settings steer the daily run, with ten tabs covering the number of days for each stage, which emails are sent and which tasks are turned off.

When something looks wrong, the logs are nearby. The Email Message Log shows whether a reminder left the queue, the module log shows what a server said when a suspension was attempted, and the Gateway Log shows every automatic capture. Because the cron job is the only moving part, a hosting company can check with its host that the job is scheduled, confirm on Automation Status that it ran, and be certain that invoicing is current. The same page is where staff with shell access can match what php cli.php cron reports, which is useful on servers where the admin area is temporarily unreachable.

Frequently asked questions

How far ahead of the due date does CoreInto generate invoices?

That is a setting under Automation Settings. You choose the number of days before a service or domain falls due, and the daily run creates the invoice when a due date comes within that window. The invoice is numbered by your scheme, emailed with a PDF, and the reminder schedule starts from there.

Does CoreInto need more than one cron job?

No. One cron job calls cron.php. It runs the daily tasks once a day, including invoice generation, reminders, late fees, suspension, termination, domain sync, exchange rates, backups and prune, and the frequent tasks on every firing: the email queue, ticket mailboxes and the module queue. Automation Status shows each task's last run.

Can clients pay several invoices at once?

Yes. Mass pay lets a client select their open invoices and settle them in one payment through a gateway; CoreInto allocates the amount across the invoices and records a transaction for each. Clients can also use Add Funds to deposit credit that later invoices draw down automatically.

What happens if a saved card is declined?

The invoice stays unpaid and the normal reminder schedule continues, so the client is told in time to pay another way or add a new card. Card expiry notices are sent before a stored card expires, and every capture attempt and the provider's answer is recorded in the Gateway Log under Billing.

Will a short server outage leave a paying client suspended?

No. When a module action such as unsuspend cannot be completed because the server does not answer, it waits in the Pending Module Actions queue and is retried on later runs. Staff can see the queue under Utilities and run an action by hand, and the module log records each attempt with secrets hidden.

How are taxes and currencies handled for international clients?

Tax rules under Settings > Tax Configuration set rates by country and state, applied inclusively or exclusively, with a tax ID label on invoices. Currencies carry their own exchange rates, refreshed daily, and per-country currency by GeoIP shows visitors their local currency in the store before they sign in.

Can staff override what the automation did?

Yes. Staff can remove a late fee, suspend or unsuspend a service with their own reason, cancel or split an invoice, add credit, issue a credit or debit note and record a manual payment. Every change is a transaction or a log entry, so the account history stays complete after the override.

Put your renewals on autopilot

Start the 10-day free trial, add one cron job, and watch invoices, reminders and suspensions run themselves.

Start free trial
Submit a ticket