---
title: "Create presigned upload URLs for QBO import CSVs"
method: POST
path: "/bulk/qbo-financials/uploads"
tags: ["Imports"]
---

# Create presigned upload URLs for QBO import CSVs

`POST /bulk/qbo-financials/uploads`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/bulk/qbo-financials/uploads`
- Auth: one of:
  - HTTP bearer and API key in header `x-organization-id`
  - HTTP bearer and API key in header `x-organization-id`

For large files: PUT each CSV to its returned uploadUrl, then pass the returned coa/journal fileKey values to the preview and import endpoints instead of inline content. Each response includes retentionExpiresAt. Uploaded source CSVs are explicit temporary import artifacts: successful use resets the 30-day clock, expiration first enters a 30-day recoverable state, and any Files, Documents, statement, attachment, backup, or evidence reference makes the object permanent instead of deleting it.

## Request body

- object
  - `coaFileName` string, required
  - `coaFileSize` integer, required
  - `journalFileName` string, required
  - `journalFileSize` integer, required
  - `mimeType` string

## Response `200`

Presigned upload URLs and file keys

## Other responses

- `default`: Error response

---

[API](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api.md) · [All operations](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/revisions/9a8269f0a586?raw)
