# Printer Accounting Basics

CUPS supports a variety of printer accounting schemes. Aside from the built-in quota and page logging support, there are several third-party solutions that can be found on www.cups.org.

## Quota Support

CUPS supports page and size-based quotas for each printer. The quotas are tracked individually for each user, but a single set of limits applies to all users for a particular printer. For example, you can limit every user to 5 pages per day on an expensive printer, but you cannot limit every user except Johnny.

The `job-k-limit`, `job-page-limit`, and `job-quota-period` options determine whether and how quotas are enforced for a printer. The `job-quota-period` option determines the time interval for quota tracking. The interval is expressed in seconds, so a day is 86,400, a week is 604,800, and a month is 2,592,000 seconds. The `job-k-limit` option specifies the job size limit in killobytes. The `job-page-limit` option specifies the number of pages limit.

For quotas to be enforced, the period and at least one of the limits must be set to a non-zero value. The following options will enable weekly quotas with the given size and page count limits:

    /usr/sbin/lpadmin -p printer -o job-quota-period=604800 \
        -o job-k-limit=1024 ENTER
    /usr/sbin/lpadmin -p printer -o job-quota-period=604800 \
        -o job-page-limit=100 ENTER

Or, you can combine all three options on the same line.

While there is no way to query the current quota state for a particular user, any application can request a list of jobs for a user and printer that can be used to easily determine that information.

## Page Logging

CUPS logs every page that is printed on a system to the page_log file. Page logging is only available for drivers that provide page accounting information, typically all PostScript and CUPS raster devices. Raw queues and queues using third-party solutions such as Foomatic generally do not have useful page accounting information available.