---
title: "Retry posting the journal entry for a saved event"
method: POST
path: "/companies/{companyId}/business-events/{eventId}/retry-post"
tags: ["Business Events"]
---

# Retry posting the journal entry for a saved event

`POST /companies/{companyId}/business-events/{eventId}/retry-post`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/companies/{companyId}/business-events/{eventId}/retry-post`
- Auth: HTTP bearer

Re-runs account resolution and posting for an event saved without a journal entry. Resolve-time posting blockers return 422 naming the blocker and leave the saved event untouched; there is no allowWithoutJournalEntry affordance on retry.

## Request body

- object
  - `entityId` string, uuid

## Response `200`

Event with the posted journal entry, or updated skip metadata

- object
  - `success` boolean
  - `data` BusinessEventWire: A business event with its generated preview lines and any posted journal entries. jeGenerationSkipped/jeGenerationError explain a null journalEntryId — skipped means a known, named blocker (or metadata-only event); error means an unexpected posting failure.
    - `idempotentReplay` boolean: True when a completed create operation was returned without creating or posting again. Posting failures/skips retain their own fields.
    - `id` string, uuid
    - `customerId` string, uuid: The company id (wire name kept for accountant-app compatibility).
    - `eventType` string
    - `status` string
    - `parameters` object
    - `journalEntryId` string, uuid, nullable
    - `generatedEntries` object[]
      - `account` string
      - `accountNumber` string, nullable
      - `debit` number
      - `credit` number
      - `memo` string
    - `generatedJEs` object[]
    - `journalEntryState` 'posted' | 'not_posted' | 'void' | 'deleted' | 'missing' | 'mixed': Consolidated state of every journal entry owned by this event.
    - `journalEntryStateCounts` object
      - `posted` integer, required
      - `void` integer, required
      - `deleted` integer, required
      - `missing` integer, required
    - `jeGenerationSkipped` string: Why journal-entry generation was skipped (named blocker, unresolved accounts, or metadata-only event).
    - `jeGenerationError` string: Unexpected posting failure recorded by the residual safety net (also captured to Sentry).
    - `payablesApItemId` string, uuid: #2529: the Payables (AP) item a posted vendor bill created or linked; its initial journal entry is this event's journal entry.
    - `unresolvedAccounts` string[]
    - `createdAt` string, date-time
    - `createdBy` string, nullable

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `404`: Resource not found
- `409`: Event already has a posted journal entry
- `422`: Request failed validation

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
