Uploading Billing Data via Drag & Drop

Uploading Billing Data via Drag & Drop

Learn how to upload a billing CSV or ZIP file directly into Ternary without configuring cloud storage permissions.


Ternary's file upload option for Bring Your Own Data (BYOD) lets you ingest a billing export by dragging and dropping a file — or clicking to browse — directly from your computer. No bucket, role ARN, or IAM configuration is required.

This is the fastest way to get a one-off or infrequently updated dataset into Ternary. For datasets that update automatically or exceed 100 MB, use a cloud storage source such as Google Cloud Storage, Amazon S3, or Azure Blob Storage instead. See Bring Your Own Data (BYOD) for a full comparison of available source types.

Requirements and prerequisites

Access

  • You must be signed in to Ternary as an Admin.
  • The File Upload source type must be enabled for your tenant. If the option is not visible when creating a new integration, contact your Ternary account team.

File requirements

RequirementDetail
Supported formats.csv, .zip (ZIP must contain exactly one CSV file)
Maximum file size100 MB
Header rowRequired — the first row must contain column names
Date columnAt least one column containing dates in YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ format is required for ingestion scheduling

The integration name cannot contain spaces. Use underscores or hyphens, for example saas_spend_q2.

How to upload a billing file in Ternary

Step 1: Start a new integration

Sign in to Ternary as an Admin and navigate to Admin → Integrations. Click New Integration and select Bring Your Own to open the integration setup form.

Step 2: Select File Upload as the source type

In the Source Type dropdown, select File Upload. The form updates to show a file picker in place of the cloud storage fields.

Note: If File Upload does not appear in the dropdown, the feature is not enabled for your tenant. Contact your Ternary account team to request access.

Step 3: Enter an integration name

Enter a name for the integration. Names must start with a letter and may only contain letters, numbers, underscores, and hyphens — no spaces. For example: azure_billing_upload or saas_spend_june.

Step 4: Upload your file

Drag your .csv or .zip file onto the Billing file drop zone, or click the drop zone to open a file browser.

Once a file is selected, Ternary reads the column headers and displays a detected billing format — for example, AWS, Azure, or GCP — if the column names match a known export schema. If the format is not recognized, you will see: "Format not recognized. You'll be able to map columns manually." Either outcome is fine; column mapping happens in the next step.

If the file cannot be read, one of the following errors will appear:

ErrorCause
"File type not supported. Please upload a .csv or .zip file."The selected file is not a CSV or ZIP
"The zip archive does not contain a CSV file."The ZIP does not include a CSV
"We couldn't find any columns in this file. Please upload a CSV with a header row."The CSV is empty or has no header row
"Could not read this file. Please ensure it is a valid CSV or ZIP containing a CSV."The file is corrupted or malformed

Resolve the issue and re-select the file before continuing.

Step 5: Assign the table schema

After a valid file is loaded, the form advances to column mapping. This step works identically to other BYOD source types:

  • Select the Charge Period Start column — this is required and must be a date or timestamp field.
  • Map remaining columns to existing Ternary fields, or define them as new dimensions (categorical) or measures (numeric).
  • Ternary suggests auto-mappings based on detected column names. Review and adjust as needed.

See Bring Your Own Data (BYOD) — Step 3: Assign table schema for detailed guidance on column mapping.

Step 6: Review and submit

Review the integration name, detected source format, and column mappings. When everything looks correct, click Submit.

A progress modal appears showing the upload status. Do not close this tab while the upload is in progress. The file is transferred directly to Ternary's secure storage. Uploads up to 100 MB typically complete within a few minutes depending on your connection speed.

Note: The upload link expires after 15 minutes. If the upload is interrupted and cannot be resumed, click Cancel upload, re-open the integration, and try again.

Once the upload completes, the integration is saved and ingestion begins automatically.

Using uploaded data in reports

Once ingestion completes, the uploaded dataset appears as a new data source in the Reporting Engine under Custom Data.

  • Combine it with cloud billing data from other providers in the same report.
  • Group by custom dimensions or tags defined during column mapping.
  • Build dashboards to analyze the dataset alongside cloud spend.

Data from a file upload is ingested once at submission time. To update the dataset, edit the integration from Admin → Integrations and upload a new file.

Troubleshooting

IssuePossible CauseResolution
File Upload option not visible in source type dropdownFeature not enabled for this tenantContact your Ternary account team to request access
Upload fails with a network errorConnection interrupted during transferCheck your network connection and retry. If the issue persists, submit a support ticket
Upload fails with "Upload link expired"The 15-minute signed URL TTL elapsed before the upload completedCancel the upload, re-open the integration, and try again
Upload fails with a server errorTransient server-side issueWait a moment and retry. If the issue persists, contact support
No date columns detected during mappingCSV lacks a date or timestamp columnAdd a ChargePeriodStart column in YYYY-MM-DD format and re-upload
Column mapping shows no auto-suggestionsColumn names did not match a known billing schemaMap columns manually. See the BYOD article for guidance

FAQ

1. When should I use file upload instead of a cloud storage integration?
File upload is best for one-off datasets, quick evaluations, or data that does not update automatically. For datasets that refresh on a schedule, configure a GCS, S3, or Azure Blob source so Ternary can pull updates every four hours automatically.

2. Is there a file size limit?
Yes. Files must be 100 MB or smaller. If your export is larger, consider splitting it by month or converting it to a cloud storage integration. Parquet files via GCS or S3 are the most efficient option for large datasets.

3. Can I upload a ZIP file?
Yes, as long as the ZIP contains exactly one CSV file. Multi-file ZIPs are not supported.

4. How do I update the data after the initial upload?
Navigate to Admin → Integrations, open the integration, and upload a replacement file. The existing dataset is replaced on the next ingestion cycle.

5. Can I delete an uploaded integration?
Yes. Removing the integration from Admin → Integrations stops ingestion and removes the dataset from all reports, dashboards, budgets, and forecasts.

6. Is the uploaded file stored securely?
Yes. Files are transferred over HTTPS using a short-lived signed URL and stored in Ternary's managed Google Cloud Storage environment. The signed URL expires 15 minutes after it is issued.