What this help guide covers:
Importing Staff Payroll Information
Before processing your first pay run in Tanda, you'll need to ensure you have updated payroll details for each employee, including:
Bank details
Tax Declaration
Address
Super Fund Membership
Leave Balances
To bulk update these details for employees, navigate to Payroll > Payroll Settings > Import / Export.
See below for import requirements to help troubleshoot any errors.
Staff Information
Address Details
Address Details
Column Name | Required | Valid Values | Errors if: | Prerequisite Fields |
street_line_one | No | Any text | Present without Country field | Country |
street_line_two | No | Any text | Present without Country AND Street Line One | Country, Street Line One |
city | No | Any text | Present without Country field | Country |
state | No | Any text | Present without Country field | Country |
postcode | No | Any text | Present without Country field | Country |
country | No | Valid country name | Invalid country name provided | None |
Bank Accounts
Bank Accounts
Column Name | Required | Valid Values | Errors if: |
bsb | Yes | 6 digits "XXXXXX" or "XXX-XXX" (must be a valid Aus BSB, can include dashes/spaces) |
|
account_number | Yes | Numeric text |
|
account_name | No | Any text | N/A |
payroll_payment_type | No (autoset to remaining_balance if not provided) |
|
|
payroll_payment_amount | No (defaults to 0.0 if not provided) | Numeric digit (decimals accepted) percentage: number from 0-100 fixed_amount: any positive dollar amount remaining_balance: 0 |
|
Super Fund Memberships
Super Fund Memberships
Column Name | Required | Valid Values | Errors If: |
fund_name | Yes | Any text |
|
member_number | No | Any text | N/A |
usi | No | Text, max 20 characters |
|
Notes:
Each employee can only have one membership per super fund
If importing a duplicate fund membership for the same user, it will update the existing membership's member_number
Member Number can be blank
Fund Creation Logic:
Super funds are auto-created upon import when the following are met:
Fund name doesn't already exist in the organisation
Fund name is provided
USI is provided
Super funds must pre-exist when:
USI is blank/missing
You're importing an SMSF (which doesn't have a USI)
Super Fund Contributions
Super Fund Contributions
Column Name | Required | Valid Values | Errors If |
fund_name | Yes (except for mandatory_contribution type) |
|
|
member_number | No (required when user has multiple memberships for same fund name) | exactly match the member number on the user's membership |
|
contribution_type | No (defaults to mandatory_contribution) |
|
|
fixed_amount | No | numeric value ≥ 0 |
|
earnings_percentage | No | number between 0 and 100 (inclusive) |
|
cap_at_maximum_super_contribution_base | No (defaults to true) | true, false |
|
expense_account | No | exactly match an existing payroll account |
|
Note: Must have exactly one of: mandatory_contribution, fixed_amount, or earnings_percentage
Tax Declarations
Tax Declarations
Column Name | Required | Valid Values | Errors If |
tax_file_number | No | 8 or 9 digit number (must be a valid Aus TFN) Or:
|
|
previous_family_name | No | Any text | N/A |
tax_free_threshold | No | true, false, 1, 0, yes, no | not a valid value |
senior_tax_offset | No | true, false, 1, 0, yes, no | not a valid value |
zone_overseas_carer | No | true, false, 1, 0, yes, no | not a valid value |
student_loan | No | true, false, 1, 0, yes, no | not a valid value |
financial_supplement_debt | No | true, false, 1, 0, yes, no | not a valid value |
tax_code | No | Any text | N/A |
employment_basis | Yes |
| missing or invalid value |
income_type | Yes |
| missing or invalid value |
australian_tax_residency_status | Yes |
| missing or invalid value |
tax_scale_type | Yes |
| missing or invalid value |
home_country | Yes, only if working_holiday_maker value present | Any text (valid country name) | missing when tax_scale_type or income_type = working_holiday_maker |
employment_type | Yes |
| missing or invalid value |
Leave Balances
Leave Balances
Column Name | Required | Valid Values | Errors If |
leave_type | Yes | Exactly match an existing leave type name | missing value, leave type doesn't exist, duplicate entry |
opening_balance | No (defaults to 0.0) | numeric value | non-numeric value entered |
hours_accrued | Ignored during Import | N/A | N/A |
hours_taken | Ignored during Import | N/A | N/A |
current_balance | Ignored during Import | N/A | N/A |
Autopaid Earnings Templates
Autopaid Earnings Templates
Column Name | Required | Valid Values | Errors If |
earnings_rate | Yes | exactly match an existing earnings rate |
|
primary | No (defaults to false) | true, false | invalid value |
account | No | exactly match an existing account | account not found |
percentage | No | Number between 0 (exclusive) and 100 (inclusive) |
|
annual_salary | No (defaults to 0) | non-negative number |
|
hours_per_week | No (defaults to 0) | non-negative number |
|
location | No | exactly match an existing location | location not found |
department | No | exactly match an existing department | department not found |
Recurring Deduction Templates
Recurring Deduction Templates
Column Name | Required | Valid Values | Errors If |
deduction_type | Yes | exactly match an existing deduction type |
|
fixed_amount | Yes, if percent_of_income not set (mutually exclusive) | number ≥ 0 |
|
percent_of_income | Yes, if fixed_amount not set (mutually exclusive) | number between 0 and 100 (inclusive) |
|
total_amount_to_be_paid | No | number ≥ 0 | fixed amount exceeds this value |
pay_child_support_in_aba | No (defaults to false) | true, false | invalid value |
aba_child_support-reference | Yes, if pay_child_support_in_aba set | text string | missing value when pay_child_support_in_aba set |
Importing Staff Opening Balances and YTD Earnings
See below for import requirements to help troubleshoot any errors.
Staff Payroll Opening Balances
Opening Balances: Earnings Rates
Opening Balances: Earnings Rates
Column Name | Required | Valid Values | Errors If |
earnings_type | Yes |
|
|
stp_type | Yes only if earnings_type is 'allowance' (leave blank otherwise) |
|
|
financial_year | Yes | date set to June 30 (last day of financial year). Example: 2025-06-30 for FY 24/25 |
|
amount | Yes | number ≥ 0 |
|
Note: Importing this file destroys all existing earnings rate opening balances for users in the import before creating new ones
Opening Balances: Deduction Types
Opening Balances: Deduction Types
Column Name | Required | Valid Values | Errors If |
stp_type | Yes |
|
|
financial_year | Yes | date set to June 30 (last day of financial year). Example: 2025-06-30 for FY 24/25 |
|
amount | Yes | numeric value |
|
Opening Balances: Leave
Opening Balances: Leave
Column Name | Required | Valid Values | Errors If |
stp_type | Yes |
|
|
financial_year | Yes | date set to June 30 (last day of financial year). Example: 2025-06-30 for FY 24/25 |
|
amount | Yes | numeric value |
|
Opening Balances: Tax
Opening Balances: Tax
Column Name | Required | Valid Values | Errors If |
tax_type | Yes |
|
|
financial_year | Yes | date set to June 30 (last day of financial year). Example: 2025-06-30 for FY 24/25 |
|
amount | Yes | numeric value |
|
Opening Balances: Super Contributions
Opening Balances: Super Contributions
Column Name | Required | Valid Values | Errors If |
fund_name | Yes | exactly match an existing super fund in account |
|
mandatory_contribution | Yes | true, false |
|
financial_year | Yes | date set to June 30 (last day of financial year). Example: 2025-06-30 for FY 24/25 |
|
amount | Yes | numeric value |
|
Additional payroll imports
Journal Configuration
Tracking Categories
Tracking Categories
Column Name | Required | Valid Values | Errors If |
Team ID | Yes | exactly match an existing department ID in account |
|
Tracking Category | No (column not imported) | any text | N/A |
Tracking Category ID | Yes | exactly match an existing tracking category ID in account |
|
Value | Yes | text string |
|
Team Wage Expense Accounts
Team Wage Expense Accounts
Column Name | Required | Valid Values | Errors If |
location/department | Yes | exactly match an existing location/department in account | location or department not found in account |
account | No |
|
|
Team Leave Accounts
Team Leave Accounts
Column Name | Required | Valid Values | Errors If |
location_name/department_name | Yes | exactly match an existing location/department in account |
|
leave_type_name | Yes | exactly match an existing leave type in account |
|
account_name | Yes | exactly match an existing payroll account in account |
|
accrual_account | No (defaults to false if blank) | true, false, 1, 0, yes, no |
|
Notes:
Accrual vs Expense: Set accrual_account=true for liability/provision accounts, accrual_account=false (or blank) for expense accounts
This import updates existing department leave account assignments and creates new ones without clearing other data
Journal Setup (Accounts)
Journal Setup (Accounts)
Column Name | Required | Valid Values | Errors If |
name | Yes | any text |
|
code | Yes | any text |
|
id | No | N/A (this is the internal Tanda ID) | N/A |
payroll_super_expense_account_id | No |
|
|
Update Logic: The import uses smart matching:
a. First tries to find account by both name AND code
b. If not found, tries to find by name only
c. If not found, tries to find by code only
d. If still not found, creates a new account
Earnings Rates
Earnings Rates
This file cannot be imported.
Draft Payslip Lines
Payslip Lump Sum Lines
Payslip Lump Sum Lines
Column Name | Required | Valid Values | Errors If |
lump_sum_type | Yes | exactly match an existing lump sum type in account |
|
amount | Yes | numeric value |
|
location | No (defaults to user default) | exactly match existing location for user |
|
department | No (defaults to user default) | exactly match existing department for user |
|
financial_year | Yes if lump sum is 'Type E'. Otherwise optional | date set to June 30 of financial year. Example: 2025-06-30 for FY 24/25 |
|
Payslip Reimbursement Lines
Payslip Reimbursement Lines
Column Name | Required | Valid Values | Errors If |
account | Yes | exactly match an existing payroll account |
|
amount | Yes | numeric value |
|
reason | No | any text | N/A |
Payslip Deduction Lines
Payslip Deduction Lines
Column Name | Required | Valid Values | Errors If |
deduction_type | Yes | exadctly match an existing deduction type in account |
|
account | Yes | exactly match an existing payroll account |
|
amount | Yes | numeric value |
|
pay_child_support_in_aba | No (defaults to false) | true, false |
|
aba_child_support_reference | No (required only if pay_child_support_in_aba set to true) | text string | N/A |
location | No | exactly match an existing location for user |
|
department | No | exactly match an existing department for user |
|
Payslip Earnings Lines
Payslip Earnings Lines
Column Name | Required | Valid Values | Errors If |
earnings_rate | Yes | exactly match an existing earnings rate name in account |
|
rate | No (defaults to 0) | numeric value (whole numbers, negatives and decimals) |
|
units | No (defaults to 0) | numeric value (whole numbers, negatives and decimals) |
|
account | yes | exactly match an existing payroll account |
|
location | No | exactly match an existing location for user |
|
department | No | exactly match an existing department for user |
|
Payslip Back Payment Lines
Payslip Back Payment Lines
Column Name | Required | Valid Values | Errors If |
earnings_rate | Yes | exactly match an existing earnings rate name in account |
|
rate | Yes | numeric value (whole numbers, negatives and decimals) |
|
units | Yes | numeric value (whole numbers, negatives and decimals) |
|
account | Yes | exactly match an existing payroll account |
|
location | No | exactly match an existing location for user |
|
department | No | exactly match an existing department for user |
|
Payslip Super Accrual Lines
Payslip Super Accrual Lines
Column Name | Required | Valid Values | Errors If |
fund_name | Yes | exactly match an existing super fund in account |
|
contribution_type | No (defaults to mandatory_contribution) |
|
|
amount | Yes (blank rows are skipped on import) | numeric value > 0 |
|
expense_account | Yes | exactly match an existing payroll account |
|
location | No | exactly match an existing location for user |
|
department | No | exactly match an existing department for user |
|


