How to create custom template for Quickbooks import
BalanceFlow's built-in templates cover ready-made workflows, but you can also create your own.
A custom template defines how one CSV format should be transformed into another. The source and destination don't have to be Stripe, QuickBooks, or any other specific platform.
If one application can export data as CSV and another can import CSV, you can create a BalanceFlow template that sits between them.
For example, you might need to:
- rename and reorder columns;
- convert dates into the format expected by another application;
- normalize monetary values;
- remove fields the destination doesn't need;
- provide fallback values when source data is missing;
- calculate output values from several source fields;
- turn a single source row into multiple output rows.
You define those rules once and reuse them whenever you receive another export in the same format.
Start with your source and destination
Before creating a template, look at the two CSV formats involved.
The source format tells you what data is available. This normally comes from an export produced by the application you're moving data from.
The output format is the CSV you want BalanceFlow to produce. Its structure should match whatever your destination application or workflow expects.
For example, your source might contain:
created_at · transaction_id · gross · processing_cost · buyer
while the destination expects:
Date · Reference · Amount · Fee · Customer
The template describes how to get from one structure to the other.
This makes custom templates useful beyond accounting software. They can be used anywhere you repeatedly need to reshape one CSV format into another.
1. Create a template
Open Templates and choose Create Template.
Give the template a descriptive name. Ideally, the name should tell you what the conversion does rather than describe one particular file.
For example:
Store Orders to Accounting
or:
Payment Export to Monthly Report
Once saved, the template becomes available when creating conversions.

2. Define the input columns
The Input columns section describes the structure BalanceFlow should expect from your source CSV.
Add the columns you need and choose the appropriate data type for each one.
You don't necessarily need to use every field contained in the original export. Include the columns that are required to build your output or perform your transformations.

The order is also important if conversions using this template match columns by position.
With position matching, the uploaded CSV is expected to follow the column order defined in the template.
BalanceFlow can alternatively match by header. In that mode, columns are identified by their names and can appear in a different order in the uploaded file.
3. Define the output columns
The Output columns section defines the CSV BalanceFlow will create.
Add the columns required by your destination software or workflow and arrange them in the required order.
For example:
Date · Description · Amount · Reference
The input and output structures don't have to resemble each other. You might start with a large export containing dozens of fields and produce a much smaller file containing only the information you need.

4. Create the primary row
The Primary row defines the main output row created from each source row.
For every value you want in the output, choose an input column and the output column it should populate.
A simple mapping might be:
Customer Name → Customer
or:
Transaction Date → Date
For a direct mapping, that's all you need.

More often, you'll want to change the value before it reaches the output. That's where operations come in.
5. Transform values
Operations let you modify a value between the input and output.
For example, a source application might export a timestamp in UTC while the destination expects a local calendar date.
Instead of changing the file manually, the template can:
take the source timestamp → convert its timezone → change its format → write the result to the output

The same principle applies to other types of data. A template can normalize amounts, substitute values, or perform calculations as part of the mapping.
The important part is that these transformations become part of the template. They don't have to be repeated manually for every new CSV.
6. Handle missing values
Real-world exports often contain optional or empty fields.
Mappings can define what BalanceFlow should do when a source value is missing.
For example, if a description is empty, you can provide a fixed fallback rather than producing an empty output field.

A fallback can also come from another source column. This is useful when an export provides a preferred value in some situations but a more general value is always available.
7. Work with amounts
Financial and reporting exports frequently require more than copying one number into another column.
BalanceFlow can normalize monetary values into a consistent format and apply operations before writing the result.
For example, an output amount could start with one source value, incorporate another value, and then be normalized into the format expected by the destination.

Keeping these calculations in the template means the same calculation is applied every time the template is used.
8. Create additional rows
Sometimes one input record needs to become more than one output record.
BalanceFlow supports split rows for these workflows.
For example, a single source record might contain both a main transaction and an associated charge. Instead of squeezing both values into one output row, a template can create:
Primary row → main transaction
Split row → associated charge
Each row can have its own mappings and transformations.

Split rows can also be conditional. If the additional row only makes sense when a particular value is present, the template can create it only when that condition is met.
You can add multiple split rows when a workflow requires them.
9. Save and test the template
Once the structure and mappings are ready, save the template and create a conversion with it.
Upload a representative source CSV and use Preview to inspect the result before processing the complete file.
It's worth testing more than the simplest record. If your exports can contain empty fields, zero values, unusual dates, refunds, different currencies, or other variations, include examples of those cases.
If the preview looks correct, run the conversion and download the resulting CSV.


From one CSV format to another
A custom template is essentially a reusable description of the conversion:
What does the source look like?
What should the output look like?
How should each value get from one to the other?
Once those rules are defined, the applications on either side aren't especially important to BalanceFlow.
Export the CSV from your source, run it through the template, and import the resulting CSV wherever it needs to go.
That's also where I think BalanceFlow's broader positioning starts to become visible: the built-in Stripe → QuickBooks templates are examples of what the engine can do, not the boundary of the product.