Contract Billing: Periodic Billing

Billing setup, schedules, templates, and troubleshooting

Periodic Billing

Overview

The Periodic Billing screen is used to generate invoices for recurring lease rentals.

It:

  • Pulls lease charges from the Contract Lease screen

  • Includes Credit and Inertia charges

  • Does not include:

    • Recharges

    • Booking invoices

Typical Use

  • Operating leases → Invoiced monthly (usually at the beginning of the month)

  • Novated leases → Invoiced according to pay cycle

  • Charges displayed are those due on or before today’s date

  • Due dates are set in Contracts → Billing

If transactions are missing:

  • Check Clients → Contract Defaults → Billing Type

  • Only “Periodic” or “Any” clients appear here

Note:
Packaged Contracts (linked to items) cannot be invoiced from this screen.


Automation (Highly Recommended)

Catch-e recommends scheduling Periodic Billing via the Scheduler.

Benefits:

  • “Set and forget” process

  • Emails sent automatically

  • Can run after hours

  • Reduces disruption caused by system locks

Important:
Billing creates system locks that prevent editing in various areas.


Channel Billing

If separate invoice templates exist for specific Channels:

  1. Select the required template from the bottom-right template list.

  2. Once selected:

    • The Channel Code field becomes read-only.

    • Other filters return only records for that Channel.

  3. Click Go to apply.

Example templates:

  • “Standard Periodic Invoice” (default)

  • “CHANNEL Periodic Invoice”


Filters

Use filters to invoice all clients or selected groups.

Channel Code (Lookup)

Search by Channel.

Group Code (Lookup)

Search by Client Group.

Client Code (Lookup)

Search by individual Client.

Reg No (Lookup)

Search by Registration Number.

Delivery (Drop Box)

Select:

  • Email

  • Post

⚠ The Invoice button remains disabled until delivery is selected.

Special case:

  • If Packaged Contracts are invoiced by a Channel Accounts user with Email selected:

    • Output defaults to Text (CSV)

    • Emailing is suppressed.

Group (Drop Box)

Filter by Contract Type Group.

Type (Drop Box)

Filter by Contract Type.

Pay Cycle (Drop Box)

Filters contracts based on the Periodic Interval field in Contracts → Billing.

Invoice From (Date)

Visible only if * = yes.

Adds a “From” date to the invoice header.

Invoice To (Date)

Visible only if * = yes.

Displays transactions with a Contract Lease “Period” date up to this date.

  • Default = today

  • Changing this updates the Invoice Date automatically.

Dated / Invoice Date (Date)

  • Default = today

  • Appears as:

    • “Dated” if * = no

    • “Invoice Date” if * = yes

  • Can be changed to invoice in advance

⚠ Warning:
If Invoice To and Invoice Date fall in different months, a reconciliation warning appears.

Go Button

Executes filtering.
If disabled, current filters are already applied.


Validations & Alerts

Invalid Date

“Invalid date! You must enter a valid date as DD/MM/YYYY”

Correct the date and try again.

Billing Locked

“Invoicing locked by user: '{user_login}'”

Another user is running billing.
Try again later.


Recharge Billing

Recharges are usually invoiced at month end but can be processed anytime.

Automation

Scheduling recharge billing is recommended for the same reasons as Periodic Billing:

  • Automated

  • Email included

  • Runs after hours

  • Reduces lock disruptions


Recharge Transactions

Recharge transactions come from:

  • Approvals

  • Registration / CTP Renewals

  • Card Services

They appear on:
Contracts → Maintenance

Before invoicing:

  • Displayed in blue text

  • Flagged as:

    • is = 'Y'

    • type = 'recharge'


Booking Charges

Recharge invoices can also include:

  • Bookings → Invoice transactions


Fuel Recharges

By default:

  • Fuel is excluded from standard recharge invoices.

  • Fuel transactions have Class = ‘F’.

Options:

  • Include fuel to create one combined recharge invoice
    OR

  • Use Billing → Recharge → Fuel to create separate fuel invoices

Fuel transactions are summarized to one row per contract.


Client Visibility Rules

If transactions are not visible:

  • Check Clients → Contract Defaults → Billing Type

  • Only clients with:

    • “Periodic”

    • “Any”

Will appear on this screen.


Recharge Filters

Channel Code

Filter by Channel.

Group Code

Filter by Client Group.

Client Code

Filter by Client.

Reg No

Filter by Registration Number.

Delivery

Select:

  • Email

  • Post

Invoice button remains disabled until selected.

Group

Filter by Contract Type Group.

Type

Filter by Contract Type.

Class

Filter by Budget/Class.

Dated

Displays transactions up to this date.
Invoice generated uses this date.

Default = today.

Exclude Fuel

Check to exclude fuel charges (Class ‘F’).

Go Button

Executes filtering.


Recharge Validations

Invalid Date

Must be DD/MM/YYYY or blank.

Billing Locked

Another user is running billing.
Wait and retry.


VaryContractBilling (Beta API)

Allows billing changes to a contract after billing has started.

Uses alternative authentication.


HTTP Method

POST


Headers

Required:

Content-Type: application/json

OR

Content-Type: application/hjson

Optional (if permitted):

Audit-User-Id

JSON Input Fields

Required

  • contract_id (int)

Optional

  • inertia_flag (“yes” or “no”)

  • billing_interval (valid pay cycle code)

  • remaining_billing_periods (1–999)

  • next_billing_date (YYYY-MM-DD)

  • billing_common_day (1–31 or “eom”)

  • payment_method:

    • direct-debit

    • cheque

    • cash

    • other

    • credit-card

    • eft

⚠ Do not use 29, 30, or 31 as billing_common_day due to date logic inconsistencies.


Example Request

POST https://api.catch-e.com/beta/fm/contract/billing/vary
{
 "contract_id": 100000,
 "inertia_flag": "no",
 "billing_interval": "monthly",
 "remaining_billing_periods": 10,
 "next_billing_date": "YYYY-MM-DD",
 "billing_common_day": 1,
 "payment_method": "direct-debit"
}

Successful Response

{
 "result": "OK"
}

Error Response Example

{
 "validation_messages": {...},
 "status": 422,
 "title": "Unprocessable Entity"
}

Common Validation Errors

Field

Error

Meaning

contract_id

noRecordFound

Contract does not exist

inertia_flag

notInArray

Must be ‘yes’ or ‘no’

billing_interval

noRecordFound

Invalid pay cycle

remaining_billing_periods

notGreaterThan

Must be ≥ 1

remaining_billing_periods

notLessThan

Must be < 1000

next_billing_date

dateFalseFormat

Must be YYYY-MM-DD

billing_common_day

regexNotMatch

Must be 1–31 or ‘eom’

payment_method

notInArray

Invalid payment method


Additional API Responses

422 – Unprocessable Entity

Validation failed.

423 – Locked

Contract is being edited or billing is running.

403 – Forbidden

User lacks permission.