---
title: "Uploads a document to a manual journal entry"
method: POST
path: "/journal-entries/{journal_entry_id}/documents"
tags: ["Journal Entry Documents"]
---

# Uploads a document to a manual journal entry

`POST /journal-entries/{journal_entry_id}/documents`

## Request

- Base URL: `https://api.rillet.com`
- URL: `https://api.rillet.com/journal-entries/{journal_entry_id}/documents`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/rillet/apis/rillet-accounting-api/docs/journal-entries/:journal_entry_id/documents/post.ts> (a function with typed inputs; its response is checked against the schema)

Appends one PDF, JPEG, PNG, or XLSX of at most 20 MiB to an existing manual journal entry.
Create the journal entry first; for asynchronous imports, wait until the entry is available.
Existing attachments are preserved. Repeating an upload creates another attachment.
A journal entry can have at most 10 attachments, including files uploaded through the Rillet application.
Attachments may be added to approved entries and entries in closed periods without changing accounting data or approval status.
System-generated and non-posting entries are not supported.

## Request body `multipart/form-data`

- object
  - `file` string, binary, required

## Response `204`

Document attached

## Other responses

- `400`: Empty file, missing filename, unsupported file content, or attachment limit reached
- `404`: Manual journal entry not found or not accessible
- `413`: File exceeds the size limit
- `default`: Error

## Changes

- **2026-11-03** `c393d0102005`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rillet/apis/rillet-accounting-api/changes/journal-entries/:journal_entry_id/documents/post.md)

---

[API](https://skmtc.dev/rillet/apis/rillet-accounting-api.md) - [All operations](https://skmtc.dev/rillet/apis/rillet-accounting-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rillet/apis/rillet-accounting-api/revisions/c393d0102005?raw)
