---
title: "Create a DCC offer"
method: POST
path: "/fx/v1/dcc/offers"
tags: ["DCC"]
---

# Create a DCC offer

`POST /fx/v1/dcc/offers`

## Request

- Base URL: `https://api.teya.com`
- URL: `https://api.teya.com/fx/v1/dcc/offers`
- Auth: none declared
- TypeScript: <https://skmtc.dev/teya/apis/teya-fx-api/docs/fx/v1/dcc/offers/post.ts> (a function with typed inputs; its response is checked against the schema)

Verifies that the cardholder's card is eligible for DCC, fetches the latest exchange rate, creates a persisted quote, and returns an offer with a quote ID.

**Required OAuth scopes:** `fx/dcc/create`

## Request body

- DccOffer: Request to create a public DCC offer
  - `card_first9` string, required: The first 6 to 9 digits of the card PAN, used to determine whether the card is eligible for FX. The provided digits are matched against BIN ranges, so send only the actual digits available from your payment application.
  - `base_amount` integer, required: The original total amount of transaction including tips (integer format, in the base currency's minor unit, e.g. 100 to represent $1.00, or 100 US dollar cents)
  - `base_currency` string, required: The base (or terminal) currency of the currency pair in ISO-4217 format (e.g. EUR)
  - `cardholder_currency` string: The cardholder's billing currency in ISO-4217 format (e.g. EUR). Optional — when omitted, the currency is resolved from BIN range data using card_first9.
  - `store_id` string, uuid, required: The store ID associated with this DCC transaction

## Response `200`

DCC offer with quote ID

- OfferV3: Teya FX offer with quote ID, containing the latest exchange rate and markups offered for foreign exchange.
  - `quote_id` string, uuid, required: The unique quote identifier (UUIDv7)
  - `exchange_rate` string, required: Latest exchange rate for a currency pair (decimal format, with 6 decimal places)
  - `markup` string, required: Markup of the offered exchange rate (i.e. amount added) over the latest exchange rate for a currency pair (decimal format)
  - `ecb_markup` string, nullable: Markup of the offered exchange rate (i.e. amount added) over the latest ECB exchange rate for a currency pair (decimal format, with 6 decimal places). Only provided when both currencies are EEA currencies.
  - `cardholder_currency` string, required: The card currency of the currency pair in ISO-4217 format (e.g. EUR)
  - `cardholder_amount` integer, required: The calculated amount from base_currency and rate (integer format, in the smallest card currency's unit, e.g. 100 to represent $1.00, or 100 US dollar cents)

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `500`: Internal Server Error

---

[API](https://skmtc.dev/teya/apis/teya-fx-api.md) - [All operations](https://skmtc.dev/teya/apis/teya-fx-api/llms.txt) - [OpenAPI document](https://skmtc.dev/teya/apis/teya-fx-api/revisions/39896bdc0a59?raw)
