---
title: "Create or supersede a manual FX-rate revision"
method: POST
path: "/companies/{companyId}/currencies/rates/manual"
tags: ["Company Settings"]
---

# Create or supersede a manual FX-rate revision

`POST /companies/{companyId}/currencies/rates/manual`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/companies/{companyId}/currencies/rates/manual`
- Auth: HTTP bearer

Admin/owner only. The prior revision remains immutable and auditable.

## Request body

- CreateManualFxRateInput
  - `baseCurrency` string, required
  - `quoteCurrency` string, required
  - `requestedDate` string, date, required
  - `effectiveAt` string, date-time, required
  - `rateType` 'spot' | 'closing' | 'average' | 'historical', required
  - `rate` string, required
  - `source` string, required
  - `supersedesRateId` string, uuid, nullable, required
  - `metadata` object
  - `periodStart` string, date

## Response `201`

Manual FX-rate revision created

- FxRateResponse
  - `success` boolean
  - `data` FxRate
    - `id` string, uuid, nullable, required
    - `companyId` string, uuid, required
    - `baseCurrency` string, required
    - `quoteCurrency` string, required
    - `requestedDate` string, date, required
    - `periodStart` string, date, nullable, required
    - `effectiveAt` string, date-time, required
    - `rateType` 'spot' | 'closing' | 'average' | 'historical', required
    - `rate` string, required
    - `source` string, required
    - `sourceKind` 'identity' | 'provider' | 'manual', required
    - `providerReference` string, nullable, required
    - `fetchedAt` string, date-time, required
    - `metadata` object, required
    - `revision` integer, required
    - `supersedesRateId` string, uuid, nullable, required
    - `createdByUserId` string, uuid, nullable, required
    - `createdAt` string, date-time, required

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `404`: Surface unavailable outside the allowlisted customer rollout
- `409`: Superseded revision is not the active rate for this exact lookup
- `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)
