Payable & Billable Charges Mass Upload Application

Overview

The Payable & Billable Charges Mass Upload application allows you to upload Payable and Billable Charges into Bullhorn One en masse using a configurable CSV file format. This article explains how to upload Payable and Billable charges, and how to view and resolve issues.

This is part of a suite of applications designed to enhance Bullhorn functionality by delivering efficiency savings through reduced clicks. This application allows you to mass-import expenses, miscellaneous fees, or time entries that need to bypass Time & Labor rules.

The application now supports Customer Required Fields (CRFs) for Billable Charges, allowing you to include custom data points defined at the company or placement level.

Enabling the Payable & Billable Charges Mass Upload Application

You must be live on a Bullhorn One (BH1) system and have paid for the configuration of the application. This will include enabling the solution with a predefined set of features. Additional configurations can be implemented at further cost.

To implement the Payable & Billable Charges Mass Upload Application, you must have a Non-Production Environment (NPE) with all Pay & Bill configurations completed and free of errors. While having a matching Pay & Bill configuration between your Production and Non-Production environments is not a requirement, it is highly encouraged.

Please contact your Bullhorn representative for further information.

Uploading Payable & Billable Charges

These steps are a guide based on the application’s standard functionality. Depending on your configuration, your system may not exactly match what is shown below

  1. Open the application by selecting Menu > Pay & Bill > Pay and Bill Mass Upload.
  2. In the first field, select a charge type.

  3. Use the File Picker to select a source file to upload.

    • The uploaded file must be a CSV with a maximum of 5000 rows. An example source CSV file is shown below:

      • Required headers:
        • firstName

        • lastName

        • client

        • placementID

        • periodEndDate

        • earnCodeID

        • transactionDate

        • quantity

        • payRate

        • billRate

      • Optional headers for Customer Required Fields:

        • You can include multiple columns following this format: CRF:{CRF Name}

          Examples: CRF:Purchase Order, CRF:Department, CRF:Job Code

          CRFs only apply to Billable Charges and will be ignored for Payable Charges

    • Download Template
  4. The source file will be validated for data input issues. After the file passes validation, click the Upload button.

    • A list of source file validations is below.
  5. Once the upload is completed, a summary of transactions will be displayed.
     
    • If any issues are found during the upload, you can view them in the Issues Log.
  6. Your imported payable and billable charges will be listed on the Payable Charges or Billable Charges tab on the Placement record.

Imported Billable Charges on a Placement record

Imported Payable Charges on a Placement record

Mass Upload Validations

The system performs the following validations:

Validations performed on the source file data Validations performed during the billable and payable charge creation
  • Checks that the provided file has a “.csv” file extension.
  • Checks that the file has the required headers.
    • Required headers: firstName, lastName, client, placementID, periodEndDate, earnCodeID, transactionDate, quantity, payRate, billRate
    • Download Template
  • Checks that the total number of rows doesn't exceed 5000.
    • While 5000 is the default maximum number of rows, your system may be configured with a lower value.
  • Checks that every entry has a Placement ID in the system (this generates a text output on the upload screen).
  • Checks that there is a configured Default Rate if one is not provided on the source record (this generates a text output on the upload screen).
  • Checks that the provided dates are valid (This generates a text output on the upload screen).
  • Checks that there are no columns with empty headers (columns with data but no header name).

  • Checks that optional field headers follow the format "CRF:{Field Name}".

  • Checks that there are no duplicate column header names.

Note: If any of the below do not pass validation, an issue is added to the Issue Log.

  • Checks that the rate (from the CSV or resolved default) is greater than 0.
  • Checks that a “Resolved” Earn Code is present. Resolved Earn Codes are the ones mapped from a code in the CSV to an ATS entity.
  • Checks if the Stipend Type is billable and if there is a billingProfile. This is necessary for ATS to create BillableCharges.
  • For Billable Charges with CRF data:

    • Validates that the CRF name matches a configured CRF for the Placement.

    • For CRFs with option lists (dropdowns), validates that the value is a valid option.

    • Validates that required CRFs have values provided.

    • Validates CRF effective dates against the transaction date.

  • If a Billable Charge with CRF data fails validation, both the Billable and corresponding Payable Charge creation will be skipped to maintain data consistency.

   

Viewing the Issues Log

If any issues are found during the source file upload, you’ll see a “Check Issues Log” message after the upload completes:

To view the Issues Log, select Menu > Pay & Bill > Issues. You can view an explanation of the issue in the Description column:

Issues related to Customer Required Fields will include specific error messages indicating:

  • Which CRF field caused the error

  • The type of validation failure (missing field, invalid option, data type mismatch, etc.)

  • The Placement ID associated with the error

After resolving the issue in the source file, you can reattempt the upload.

The Payable & Billable Charges Mass Upload application will generate a Payable and Billable charge for every record uploaded on the CSV file. When attempting to resolve conflicts, you will need to remove all the records that were previously processed correctly, as the application cannot automatically detect or skip duplicate entries.