---
title: "Create a manual journal entry."
method: POST
path: "/v1/portfolios/{portfolioSlug}/transactions/commands/CreateManualJournalEntryCommand"
tags: ["PortfolioTransactionCommands"]
---

# Create a manual journal entry.

`POST /v1/portfolios/{portfolioSlug}/transactions/commands/CreateManualJournalEntryCommand`

## Request

- Base URL: `https://api.tokenbooks.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tokenbooks.io/v1/portfolios/{portfolioSlug}/transactions/commands/CreateManualJournalEntryCommand`
- Auth: API key in header `x-api-key`

## Path parameters

- `portfolioSlug` string, required

## Query parameters

- `mode` 'sync' | 'async'

## Request body

- object
  - `memo` string
  - `effectiveAt` string
  - `entries` object[], required
    - `accountId` string, uuid, required
    - `entryType` 'DR' | 'CR', required
    - `fiatAmount` object, required
      - `asset` string, required
      - `value` string, required: A decimal number sent as a string, so no precision is lost in JSON.
      - `isFiat` boolean, required
    - `responsibilityCenterAssignments` object[]
      - `responsibilityCenterTypeId` string, required
      - `responsibilityCenterId` string, required
      - `percentageBps` integer, required
    - `counterpartyId` string, nullable

## Response `200`

- CreateManualJournalEntryResultDto
  - `mode` 'sync' | 'async', required: Whether the command ran sync or async
  - `result` union: The command result, present for synchronous commands
    - object
      - `success` true, required
      - `data` object, required
        - `portfolioTransactionId` string, uuid, required: Identity of the ADJUSTMENT transaction created to hold the submitted journal entry. Its create event and journal are written in the same transaction as the command, so the transaction exists once the command succeeds rather than after a later runner pass.
    - object
      - `success` false, required
      - `error` object, required
        - `name` string, required: The class name of the error
        - `message` string, required: The error message
        - `body` union, required: The error body, usually fields needed to reconstruct the specific error fields
          - object
            - `usageType` string, required
            - `currentUsage` number, required
            - `limit` number, required
          - unknown
  - `jobId` string: Tracking job id, present for asynchronous commands
  - `status` 'queued': Queue status, present for asynchronous commands

---

[API](https://skmtc.dev/tokenbooks/apis/tokenbooks-public-api.md) · [All operations](https://skmtc.dev/tokenbooks/apis/tokenbooks-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tokenbooks/apis/tokenbooks-public-api/revisions/180622e6255e?raw)
