Bill import with advanced file format
Bill import is a process to import multiple bills into UtilityManagement using an Excel or .csv file.
To get a sample advanced bill import file format:
1. Select several bills from a bill list.
2. Click Downloads.
3. Choose Bill Import File.
4. Open the file and review the column headers.
Bill import basic information
- Use a CSV or Excel file. To upload multiple CSV and/or Excel files at one time they can be combined into one zip file. Your zip file should only include CSV or Excel files.
- Only the first sheet of an Excel workbook is imported.
- Each row corresponds to one account/meter relationship. If you receive one bill for two meters (electric and natural gas), you need two separate consecutive rows.
The importer assumes rows for the same bill if all these items match in consecutive rows:
- Account code
- Start date
- End date
- Vendor code (if it exists)
- Each bill line item is represented in a column. For example, use for electric meters and use for natural gas meters exist in two separate columns.
- If a .csv file has a row with all commas, the row is ignored.
- An asterisk (*) as the first symbol in the column header causes the column to be skipped, except for columns used to autocreate objects.
Required
- Account code
- Start date
- End date
- A/C/E
- Metercode
Account
- Must be active.
- Must include the vendor code, if duplicate account numbers exist for different vendors.
Bill start and end date
- Must fall between the account service begin and end dates.
Account Alert messages are honored. Alerts can be configured to prevent bill entry:
- If a bill has an active alert, the message is added to the bill.
- If the account alert is set to block status, the bill is not imported.
Required format
The import file must include:
- A header row.
- The columns in the CORRECT order.
- ACCOUNTCODE: the alpha-numeric account code for the bill record, cannot be NULL.
- STARTDATE (YYYYMMDD): The billing period start date.
- ENDDATE (YYYYMMDD): The billing period end date.
- ACE: If blank A is used. The represents the bill type (A=Actual, C=Corrected, E=Estimated). Recommended to use C, if you may have overlapping history and to preserve any existing bills in the database.
- METERCODE: The metercode column is required, but can be populated with !AUTO! when only one meter per commodity exists or if you add a column for serial number and include the meter's serial number. If entering an account level charge this column is left blank.
- VENDORCODE: Optional. If duplicate account codes with different vendor codes exist, vendor code must be included.
- VPR: Optional. Recommended to help manage how existing bills in the database are handled during bill import.
Required sort order
The import file records MUST be sorted in the following sequence. Data must be grouped by account code, bill start date, and bill end date to have multiple body lines on the same bill. If the file is not sorted properly the import produces inconsistent results.
- Ascending account code.!
- Ascending vendor code (if included).
- Ascending start date.
- Ascending end date.
- Ascending meter code. If multiple meters are on the same account, all meters MUST appear on consecutive lines and all meters MUST have the same bill start and end dates.
Bill start date adjustment
As discussed in Bill Start and End Dates, some utility vendors do not follow this logic. An enhancement has been made to the bill import processor to identify bills with this one day gap (the begin date is one day after the end date).
The importer adjusts the start date of the bill to the end date of the prior bill.
Actual/Corrected/Estimated (A/C/E)
The A/C/E and V/P/R flags help you import bills with the same start date, end date, and account code.
These two columns provide specific instructions to the import processor on how to process bills already existing in the database.
If A/C/E column is included in the file and the field has any character other than A, C, or E the line is invalid and the bill record is kicked out. If the field is left blank A is the default.
Actual
- A indicates an actual bill.
- Any existing bills in the database with the same account and dates are deleted. This imported bill is assigned a new bill id (not the same id as the one it is replacing), this may impact bill export and cause the bill to be exported again.
Corrected
- C indicates a corrected bill.
- Any existing bills in the database with the same account and dates are NOT deleted. This could result in duplicate bills (the original bill and the corrected bill).
Estimated
- E indicates an estimated bill.
- Any existing bills in the database with the same account and dates are deleted. This imported bill is assigned a new bill id (not the same id as the one it is replacing), this may impact bill export and cause the bill to be exported again.
Void/Preserve/Reject (V/P/R)
If the V/P/R column is blank the bills are imported using the A/C/E logic.
If the column has any character other than V, P or R the line is invalid and the bill record is kicked out.
Void
V indicates the existing bill should be marked as Void and the new bill is created.
Preserve
P indicates any existing bill should be preserved, NOT deleted, and not voided and the new bill is created.
Reject
R indicates any existing bill should be preserved and a new bill is NOT created. A kickout is produced for the bill being imported.
How A/C/E and V/P/R work together
A/C/E |
V/P/R |
Logic applied |
Logic applied |
|
|
Create the new bill in database |
Existing bill is deleted |
A |
|
Create the new bill in database |
Existing bill is deleted |
A |
V |
Create the new bill in database |
Existing bill is voided |
A |
P |
Create the new bill in database |
Existing bill is preserved (possibly 2 overlapping bills) |
A |
R |
Reject the new bill |
Existing bill is preserved |
C |
|
Create the new bill in database |
Existing bill is preserved (possibly 2 overlapping bills) |
C |
V |
Create the new bill in database |
Existing bill is voided |
C |
P |
Create the new bill in database |
Existing bill is preserved (possibly 2 overlapping bills) |
C |
R |
Reject the new bill |
Existing bill is preserved |
E |
|
Create the new estimated bill in the database |
Existing bill is deleted |
E |
V |
Create the new estimated bill in the database |
Existing bill is voided |
E |
P |
Create the new estimated bill in the database |
Existing bill is preserved (possibly 2 overlapping bills) |
E |
R |
Reject the new estimated bill |
Existing bill is preserved |
Meter code rules
- If the meter code is NULL, the values are applied to the account ONLY.
- If the meter code is NULL, MONEY is assumed for the bill line item because no use information can be applied to an account.
- If the meter code exists for the account, the billing information is imported for the meter.
- If the meter code doesn't exist, an error (kickout) spreadsheet is created.
- If the meter code=!AUTO!
- If USE and only ONE meter exist for the account, the values are assigned to the meter.
- If more than one meter is assigned to the account an error (kickout) spreadsheet is created with the message too many matching meters.
- If the account has more than one meter on it of different commodities you can use !AUTO!:<COMMODITY> where COMMODITY is the commodity code of the meter. This lets you use the !AUTO! lookup feature for accounts with multiple meters of different commodity types. If the account has more than one meter of the commodity type in the !AUTO!:COMMODITY value, then the importer generates an error message indicating "Cannot determine meter code".
!AUTO!:<COMMODITY>
- If the meter code=!AUTO!:<COMMODITY> the application will try to match the bill import information to a meter by going through a series of steps.
- First the system checks to see if there is only one meter of that commodity linked to the account, if more than one meter continue.
- The system checks for a matching serial number within that commodity, if there is no match continue.
- Check to see if there is only one meter with a commodity in the same commodity category of the specified commodity, if there is more than one meter continue to the next step to try and find a match
- Check for a matching serial number within that commodity category.
- If there is no matching serial number within the commodity category the bill fails to import and a error (kickout) is created.
Most often used bill line types
The following are a list of the most often used Bill Line Types grouped by category.
(Entire list of available codes)
Billed Demand
- Billed Demand - BILLEDDEMAND
Billed Usage
- Billed Use - BILLEDUSE
Charge
- Charge - CHARGE
- Cost Adjustment Charge - COSTADJUSTCHARGE
- Fee - FEE
- Customer Charge - CUSTOMERCHARGE
- Total Pay Amount - TOTALPAYAMOUNT
- Info_Cost (Informational, not counted) - INFO_COST
Cost
- Total Cost - TOTALCOST
- Info Cost (information, not counted) - INFO_COST
- Prior Balance (Informational, not counted) - PRIORBALANCE
Demand
- Demand - DEMAND
- Mid-Peak Demand - MIDPEAKBILLDEM
- Off-Peak Demand - OFFPEAKDEM
- On-Peak Demand - ONPEAKDEM
Tax
- Tax - TAX
- State Tax - STATETAX
- City Tax - CITYTAX
Usage
- Use - USE
- Info_Use (Informational, not counted) - INFO_USE
- Off Peak Use - OFFPEAKUSE
- Mid Peak Use - MIDPEAKUSE
- On Peak Use - ONPEAKUSE
Use Reading
- Reading Use (Informational, not counted) - READINGUSE
Example column headers
This example import file produces the following bill. (If you are using the default label it does not need to be included.)
USE: |
USE: |
DEMAND: |
ONPKDEMAND: |
18000 |
100.00 |
30 |
0 |
For example, consecutive columns USE:KWH and USE:USDOLLARS result in a single line on the bill.
Bill line item column header format
Line Item Type:Unit:Label
To show use and cost on a single line on the bill (use/cost pair), you must enter the use column first and immediately follow with the cost. If two consecutive columns have the same TYPE, and the second column is a cost UNIT, a single line item is created on the bill using both the use and cost. For use/cost pairs, if used, both use and cost must have a value, even if 0.
Each row represents charges for a specific meter, some rows of data do not have values for some columns. The TYPE:UNIT:LABEL for water is different from electric, therefore some columns are empty.
For example, a file containing data for accounts with Electric Use and Cost, Electric Demand and Cost, and Natural Gas Use and Cost includes a header record of three use/cost pairs:
- USE:KWH
- USE:USDOLLARS
- BILLEDDEMAND:KW
- BILLEDDEMAND:USDOLLARS
- USE:CCF
- USE:USDOLLARS
USE: |
USE: |
BILLEDDEMAND: |
BILLEDDEMAND: |
USE: |
USE: |
1800 |
100.00 |
30 |
25.00 |
||
100 |
15.00 |
The body lines for Electric Use/Cost and Demand/Cost are typically associated with an electric meter and the body lines for Natural Gas Use/Cost are typically associated with a natural gas meter. The Natural Gas Use/Cost columns should not be populated in the electric meter row.
NULLS are not permitted
Using the example above, each half of the use/cost pair must exist in the spreadsheet and must be populated.
For example, the following produces an error:
Optional label
Normally the label is equal to the TYPE.
To create your own label use a third entry in the heading. For example:
- USE:KWH:ON-PEAK TIER 1
Optional label rules
- Label cannot have a colon
- If using a use/cost pair, only add the label to the first item in the pair
EndOfRecord
A column *END_OF_RECORD is HIGHLY recommended as the last column for your import file. Use a value of X for the column.
Begin the column header with an asterisk (*) to skip the import of the column.
Optional fields
After the mandatory columns, optional columns can be added with the column header defining the column contents. Optional columns can be left blank.
Column header |
Information |
BILLPERIOD |
MM:YYYY Forces the billing period assignment. See Determine Billing Period for more information. If blank uses UtilityManagement logic. |
DUEDATE |
YYYYMMDD |
STATEMENTDATE |
YYYYMMDD |
CONTROLCODE |
Used to associate a bill image with a bill when UtilityManagement is configured for this option. |
ACCTPERIOD |
MM:YYYY Enter the accounting period number, not the accounting period name. |
VENDORCODE |
Not required, but if used it must immediately follow METERCODE (Advanced File only). If duplicate account codes with different vendor codes exist, vendor code must be included. |
INVOICENUMBER |
The invoice number for the bill. |
METERSERIAL |
Serial number of the meter associated with the bill. A mismatch between the import sheet and UtilityManagement does not prevent a successful import. A bill audit can be configured to flag bills with a mismatch. |
RATECODE |
A mismatch between the value in the import sheet and UtilityManagement does not prevent a successful import. A bill audit can be configured to flag bills with a mismatch. |
BILLINGPERIOD |
!AUTO!, !START!, !MIDDLE!, !END! Determining Billing Period provides more details. |
BILLNOTE |
Import notes associated with the bill. Remember you are importing a CSV file and your comment cannot include a comma. |
Common import scenarios
Description | Billing Period Assigned |
A bill for March exists. | |
Billing period column set to !AUTO!, start date is 4/15/2018 and end date is 5/20/2018. (middle day is 5/2) | 201804 |
A bill for March exists. | |
Billing period column set to !AUTO!, start date is 4/15/2018 and end date is 5/21/2018 (middle day is 5/2) | 201804 |
A bill for March exists. | |
Billing period column set to !AUTO!, start date set to 4/30/2018 and end date is 5/5/2018 | 201804 |
A bill for April exists. |
|
Billing period column set to !AUTO!, start date set to 4/16/2018 and end date set to 5/16/2018 (middle day is 4/30) | 201805, logic creates a May bill as an April bill exists |
A bill for April exists. |
|
Billing period column set to !AUTO!, start date set to 4/26/2018 and end date set to 5/1/2018 (middle day is 4/28) | 201804, logic does not move the bill to May because the bill has no days in May |
A bill for April exists. |
201804 |
Billing period column set to !AUTO!, start date set to 4/26/2018 and end date is set to 5/2/2018 (middle day is 4/28) | 201805, bill has a May value |
Account level - No meter code in import file, matching serial number. | Bill with account level charge is created. |
Account level - No meter code or serial number in import file. | Bill with account level charge is created. |
Account level - No meter code in import file, use value included. | No bill created, unable to find meter. |
Example file
This bill is from the first line of the file above.