201Successful Response
Schema: SuccessEnvelope_BulkTransactionUploadResponse_
successbooleanmessagestringcodestringdataBulkTransactionUploadResponse
/api/v1/transactions/bulk-uploadUpload historical transactions from a CSV/Excel file to a new source account.
Workflow (via Temporal for durability):
Local engine:
Teal engine:
Supported File Formats: .csv, .xlsx, .xls
CSV/Excel Columns (flexible naming):
Returns: Workflow ID and status. The upload runs in the background via Temporal. If interrupted, the workflow will resume from where it left off.
Bearer token authentication. Pass your DayZero API token in the Authorization header and the target business UUID in x-business-id.
Schema: BulkTransactionUploadRequest
ledger_idstringOptional: UUID of existing ledger to use. If provided, ledger creation is skipped and ledger_name/ledger fields are ignored.
ledger_namestringDisplay name for the new ledger (required if ledger_id not provided, e.g., 'My Old Credit Card XXXX')
source_account_namestringOptional: Display name for the source account. Defaults to ledger name if not provided.
business_personalstringWhether the source account is a business or personal account. 'business' (default) for company transactions, 'personal' for owner draws/contributions.
invert_transaction_amountsbooleanIf true, transaction amounts are inverted during import. Useful when CSV has opposite sign convention.
s3_keystringrequiredS3 key of the CSV file containing transactions
start_datestring · dateOptional: Only upload transactions on or after this date (YYYY-MM-DD). Filters transactions before upload.
end_datestring · dateOptional: Only upload transactions on or before this date (YYYY-MM-DD). Filters transactions before upload.
check_duplicatesbooleanIf true, checks for duplicate transactions before uploading. Duplicates are skipped.
duplicate_match_fieldsarray · stringFields to use for duplicate detection: 'amount', 'date', 'description'. Defaults to all three.
skip_categorizationbooleanIf true, skip post-upload bank rules and AI categorization. Journal entries still post during import — to the mapped category column when provided, otherwise to Uncategorized Expense/Income. Only honored on the local accounting engine.
generate_bank_rulesbooleanIf true (default), learn bank rules from the categorized transactions so future transactions auto-categorize. Ignored when skip_categorization is true.
currencystringCurrency for this account (USD, CAD, AUD, EUR, or GBP). Defaults to business default.
editablebooleanIf true, journal entries can be manually posted to this account.
typestringAccount type: asset, liability, equity, revenue, expense. Required in Custom Mode.
descriptionstringOptional description of the account's purpose.
statusstringAccount status: 'active' or 'inactive'. Inactive accounts hidden from dropdowns.
debit_creditstringNormal balance: 'debit' (assets/expenses) or 'credit' (liabilities/equity/revenue). Required in Custom Mode.
sort_codestringSort code for chart ordering (e.g., '1000' for assets, '4000' for revenue). Required in Custom Mode.
sub_typestringSub-classification (current_assets, operating_expenses, etc.). Required in Custom Mode.
report_cash_flowbooleanInclude in cash flow statement. Required in Custom Mode.
financial_account_typestringTemplated Mode: bank_account, credit_card, payments, payroll, loan, prepaid_card, accounts_receivable, accounts_payable.
parent_idstringUUID of parent ledger for sub-accounts (e.g., 'Operating Expenses' → 'Office Supplies').
column_mappingobjectUser-supplied mapping from DayZero field names to CSV column names. Keys: 'date', 'amount', 'description', and optional 'category' (aliases: ledger, ledger_name, account, account_name, category_name). Values: the CSV header to use. When provided, auto-detection is skipped.
Schema: SuccessEnvelope_BulkTransactionUploadResponse_
successbooleanmessagestringcodestringdataBulkTransactionUploadResponseSchema: HTTPValidationError
detailarray · ValidationErrorValidationErrorlocarray · string | integerrequiredmsgstringrequiredtypestringrequiredinputobjectctxobject