---
title: "Create an external transaction (immutable — 409 on duplicate)"
method: POST
path: "/companies/{companyId}/external-transactions"
tags: ["External Transactions"]
---

# Create an external transaction (immutable — 409 on duplicate)

`POST /companies/{companyId}/external-transactions`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/companies/{companyId}/external-transactions`
- Auth: HTTP bearer

## Request body

- CreateExternalTransactionInput
  - `entityId` string, uuid, required
  - `integrationId` string, uuid, nullable: Required for Plaid and Stripe provider events.
  - `provider` string, required
  - `externalId` string, required
  - `occurredAt` string, date-time, required
  - `payload` object, required

## Response `201`

External transaction created

- ExternalTransactionResponse
  - `success` boolean
  - `data` ExternalTransaction
    - `id` string, uuid, required
    - `companyId` string, uuid, required
    - `entityId` string, uuid, required: Immutable concrete legal-entity owner.
    - `integrationId` string, uuid, nullable, required: Exact source connection, or null for a source-unlinked manual event.
    - `provider` string, required
    - `externalId` string, required
    - `occurredAt` string, date-time, required
    - `payload` object, required
    - `createdAt` string, date-time, required

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `409`: Duplicate external transaction (company + provider + externalId)
- `422`: Validation error

---

[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)
