---
title: "Create an exchange for an account"
method: POST
path: "/exchanges"
tags: ["exchanges"]
---

# Create an exchange for an account

`POST /exchanges`

Create an exchange for an account. The request body will vary based on the exchange partner.
For Finicity, the request body will include finicity-specific fields.
For MX Secure Exchange, the request body will include a token.
For Flinks Secure Exchange, the request body will include a token.
For Plaid Secure Exchange, the request body will include a token.

## Request body

- union
  - CreateFinicitySecureExchange
    - `_links` object, required
      - `exchange-partner` object
        - `href` string
    - `finicity` object, required
      - `profile` integer
      - `version` string
      - `receiptId` string
      - `receiptVersion` string
      - `customerId` string
      - `partnerId` integer
      - `products` object[]
        - `product` string
        - `accountId` string
        - `accessPeriod` object
          - `type` string
          - `startTime` string, date
          - `endTime` string, date-time
      - `timestamp` string, date-time
  - CreateTokenBasedExchange — Create an exchange using a token. Supports MX, Plaid, and Flinks secure exchange flows, and Checkout.com for Push to Card (debit card).
    - `_links` object, required
      - `exchange-partner` object, required
        - `href` string
    - `token` string, required — Connection or processor token from the exchange partner (e.g., Plaid, MX, Flinks), or payment ID (pay_xxx) from Checkout.com Flow for Push to Card

## Response `201`

Created

## Other responses

- `400` — Bad Request
- `401` — Invalid Scope
- `403` — Forbidden
- `404` — Not Found

## Changes

- **2025-11-19** `e44b6a6d5724` — 3 breaking, 1 info
  - removed `#/components/schemas/CreateMXSecureExchange, #/components/schemas/CreateFlinksSecureExchange, #/components/schemas/CreatePlaidSecureExchange` from the request body `oneOf` list
  - the request property `oneOf[subschema #1: CreateFinicitySecureExchange]/_links` became required
  - the request property `oneOf[subschema #1: CreateFinicitySecureExchange]/finicity` became required
  - added `#/components/schemas/CreateTokenBasedExchange` to the request body `oneOf` list
- **2025-07-01** `8a20e7000645` — 1 breaking, 1 info
  - removed `#/components/schemas/FinicitySecureExchangeCreateExchangeRequestBody, #/components/schemas/MXSecureExchangeCreateExchangeRequestBody, #/components/schemas/FlinksSecureExchangeCreateExchangeRequestBody, #/components/schemas/PlaidSecureExchangeCreateExchangeRequestBody` from the request body `oneOf` list
  - added `#/components/schemas/CreateFinicitySecureExchange, #/components/schemas/CreateMXSecureExchange, #/components/schemas/CreateFlinksSecureExchange, #/components/schemas/CreatePlaidSecureExchange` to the request body `oneOf` list
- **2025-06-06** `231d0268586b` — 1 breaking, 6 info
  - request body became required
  - added the non-success response with the status `403`
  - added the non-success response with the status `404`
  - the response property `oneOf[#/components/schemas/InvalidExchangeToken]/code` became required for the status `400`
  - …3 more

[Change history](https://skmtc.dev/dwolla/apis/dwolla-api/changes/exchanges/post.md)

---

[API](https://skmtc.dev/dwolla/apis/dwolla-api.md) · [All operations](https://skmtc.dev/dwolla/apis/dwolla-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/dwolla/dwolla-api/revisions/0e13062ae3be/schema)
