Import Qif
const url = 'https://example.com/import/qif';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"account_map":{"additionalProperty":"example"},"account_options":{},"category_map":{},"content":"example","date_format":"mdy"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/import/qif \ --header 'Content-Type: application/json' \ --data '{ "account_map": { "additionalProperty": "example" }, "account_options": {}, "category_map": {}, "content": "example", "date_format": "mdy" }'Run the import through the same content-hash dedup pipeline as the feed — re-running the same request is a no-op; transfers link, never double; rows inside a per-account cutoff are left to the feed.
Request Bodyrequired
Section titled “Request Bodyrequired”object
QIF account name -> Purser account id or path. An investment account (one with a !Type:Invst section, or declared Invst/Port/401(k)/403(b)/Mutual) may be omitted: it is then left out, and bank-side transfers into it import as one-leg rows. Its investment records are counted skipped_investment either way.
object
object
Responses
Section titled “Responses”Successful Response
object
object
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
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
object
object
object
Example generated
{ "detail": [ { "ctx": {}, "input": "example", "loc": [ "example" ], "msg": "example", "type": "example" } ]}