Skip to content

Import Csv

POST
/import/csv
curl --request POST \
--url https://example.com/import/csv \
--header 'Content-Type: application/json' \
--data '{ "account_map": { "additionalProperty": "example" }, "account_options": {}, "category_map": {}, "column_map": { "additionalProperty": "example" }, "content": "example", "date_format": "mdy" }'

Commit a CSV import through the shared content-hash dedup pipeline — re-running the same request is a no-op; file accounts mapped to null are skipped (counted skipped_unmapped).

Media typeapplication/json
CsvImportRequest
object
account_map
required
Account Map
object
key
additional properties
Any of:
string
account_options
Account Options
object
key
additional properties
AccountOptions

Per-file-account import knobs. cutoff: import only rows strictly older than this date (null = import everything). invert: flip every amount.

object
cutoff
Any of:
string format: date
invert
Invert
boolean
category_map
Category Map
object
key
additional properties
string
column_map
Any of:
object
key
additional properties
string
content
required
Content
string
date_format
Date Format
string
default: mdy

Successful Response

Media typeapplication/json
ImportResult
object
categories_created
required
Categories Created
Array<string>
imported
required
Imported
integer
one_leg_transfers
required
One Leg Transfers
integer
opening_balances
required
Opening Balances
integer
per_account
required
Per Account
object
key
additional properties
ImportCounts

Per-file-account disposition of rows (DESIGN §7.2). The preview counts for a request equal the commit’s per-account results for the same request. in_file is the sum of the other buckets, uncleared excepted; skipped_scheduled counts Quicken reminder rows (not history, never imported); skipped_investment counts QIF !Type:Invst records (investment actions, never bank rows; decision 84); promoted counts rows that posted an expected row an earlier import left, because the file now marks them cleared (per leg for a transfer); uncleared is the subset of the created rows that land expected because the file marks them uncleared (decision 60). split_transfers (QIF S[Account] lines carved out of split rows as transfers) and split_remainders (split rows whose lines left part of the amount unexplained, booked to the uncategorized placeholder) are sub-counts too (decision 87).

object
in_file
required
In File
integer
one_leg_transfers
required
One Leg Transfers
integer
opening_balances
required
Opening Balances
integer
promoted
required
Promoted
integer
skipped_cutoff
required
Skipped Cutoff
integer
skipped_dedup
required
Skipped Dedup
integer
skipped_investment
required
Skipped Investment
integer
skipped_scheduled
required
Skipped Scheduled
integer
skipped_unmapped
required
Skipped Unmapped
integer
skipped_zero_amount
required
Skipped Zero Amount
integer
split_remainders
required
Split Remainders
integer
split_transfers
required
Split Transfers
integer
transfers
required
Transfers
integer
uncleared
required
Uncleared
integer
would_import
required
Would Import
integer
promoted
required
Promoted
integer
skipped
required
Skipped
integer
skipped_cutoff
required
Skipped Cutoff
integer
skipped_investment
required
Skipped Investment
integer
skipped_scheduled
required
Skipped Scheduled
integer
skipped_unmapped
required
Skipped Unmapped
integer
skipped_zero_amount
required
Skipped Zero Amount
integer
split_remainders
required
Split Remainders
integer
split_transfers
required
Split Transfers
integer
transfers_absorbed
required
Transfers Absorbed
integer
transfers_auto_linked
required
Transfers Auto Linked
integer
transfers_created
required
Transfers Created
integer
uncleared
required
Uncleared
integer

Example generated

{
"categories_created": [
"example"
],
"imported": 1,
"one_leg_transfers": 1,
"opening_balances": 1,
"per_account": {
"additionalProperty": {
"in_file": 1,
"one_leg_transfers": 1,
"opening_balances": 1,
"promoted": 1,
"skipped_cutoff": 1,
"skipped_dedup": 1,
"skipped_investment": 1,
"skipped_scheduled": 1,
"skipped_unmapped": 1,
"skipped_zero_amount": 1,
"split_remainders": 1,
"split_transfers": 1,
"transfers": 1,
"uncleared": 1,
"would_import": 1
}
},
"promoted": 1,
"skipped": 1,
"skipped_cutoff": 1,
"skipped_investment": 1,
"skipped_scheduled": 1,
"skipped_unmapped": 1,
"skipped_zero_amount": 1,
"split_remainders": 1,
"split_transfers": 1,
"transfers_absorbed": 1,
"transfers_auto_linked": 1,
"transfers_created": 1,
"uncleared": 1
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
ctx
Context
object
input
Input
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string

Example generated

{
"detail": [
{
"ctx": {},
"input": "example",
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}