---
updatedAt: 2026-07-17T18:00:07.000Z
---

Fetch the complete documentation index at: https://developers.pismo.io/pismo-docs/llms.txt. Use this file to discover all available pages before exploring further.

# Create exchange rate

Define the exchange rate for international transactions.

You **must** use this endpoint or [Pismo Control Center](doc:exchange-rates) to define the exchange rate for today or tomorrow.

Exchange rates are defined at the organization level but, optionally, you can define rates for a specific program and the platform uses this rate and not the org rate for all program-related transactions.


**Note:**  For more information, refer to [Exchange rates for international transactions](https://developers.pismo.io/pismo-docs/docs/exchange-rate#exchange-rates-for-international-transactions).


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Platform setup - Rates and fees",
    "description": "Rates and fees API endpoint documentation.",
    "contact": {
      "name": "API Support",
      "url": "https://developers.pismo.io/support/"
    },
    "license": {
      "name": "Copyright Pismo"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://sandbox.pismolabs.io/rates",
      "description": "Sandbox API server for testing"
    }
  ],
  "tags": [
    {
      "name": "Exchange rates",
      "description": "Exchange rate endpoints."
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "parameters": {
      "AuthNoAccount": {
        "name": "Authorization",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "required": true,
        "description": "Access token, not an account-specific token. Tokens can expire quickly, which can result in an <b>401 Unauthorized</b> message\n"
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error_code": {
            "type": "string",
            "example": "RCAPI-DOMAIN-VIOLATION",
            "description": "Error code ID."
          },
          "message": {
            "type": "string",
            "example": "Internal server error",
            "description": "Error description."
          }
        }
      },
      "ExchangeRates": {
        "type": "object",
        "required": [
          "date",
          "destination_currency_id",
          "origin_currency_id",
          "exchange_rate",
          "spread"
        ],
        "properties": {
          "date": {
            "type": "string",
            "description": "Date for today or tomorrow, format = yyyy-mm-dd.",
            "format": "date",
            "example": "2022-01-02"
          },
          "destination_currency_id": {
            "type": "string",
            "description": "Destination ISO 4217 currency.",
            "example": "840"
          },
          "origin_currency_id": {
            "type": "string",
            "description": "Origin ISO 4217 currency.",
            "example": "032"
          },
          "exchange_rate": {
            "type": "number",
            "description": "Wholesale exchange rate amount to 4 decimal places in the destination currency. For example 4.8123.",
            "example": 4.8123
          },
          "spread": {
            "type": "number",
            "description": "Day rate multiplier to 4 decimal places. For example, 1.1205 is equivalent to 1.1205%, 15.12 is equivalent to 15.12%..",
            "example": 1.0567
          },
          "hour": {
            "type": "string",
            "description": "\nHour in UTC time zone, format = HH:MM:SSZ. Using this field, you be able to work with seconds precision in your international purchases.\n\n**Note:** This field will be validated considering an offset of UTC subtracted three seconds just in the validation layer, to prevent you to need increase a few seconds just to pass our validation.\n",
            "format": "time",
            "example": "14:30:00Z"
          },
          "program_id": {
            "$ref": "#/components/schemas/ProgramID"
          },
          "apply_fees_without_spread": {
            "type": "boolean",
            "description": "Whether `spread` should be ignored in exchange transactions when calculating fee model taxes. Default = `false`.",
            "example": true
          }
        }
      },
      "HTTPErrors": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "field": {
              "type": "string",
              "example": "body.date",
              "description": "Incorrect field"
            },
            "violation": {
              "type": "string",
              "example": "Does not match pattern '^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$'",
              "description": "Describes the rule that the field did not match."
            }
          }
        }
      },
      "ProgramID": {
        "type": "number",
        "description": "Pismo program ID",
        "example": 76589
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "responses": {
      "400BadRequestExchange": {
        "description": "Bad Request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/HTTPErrors"
            }
          }
        }
      },
      "401Unauthorized": {
        "description": "InvalidToken",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "500InternalServerError": {
        "description": "Internal Server Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/v1/exchange-rates": {
      "post": {
        "summary": "Create exchange rate",
        "description": "Define the exchange rate for international transactions.\n\nYou **must** use this endpoint or [Pismo Control Center](https://developers.pismo.io/pismo-docs/docs/exchange-rates) to define the exchange rate for today or tomorrow.\n\nExchange rates are defined at the organization level but, optionally, you can define rates for a specific program and the platform uses this rate and not the org rate for all program-related transactions.\n\n\n**Note:**  For more information, refer to [Exchange rates for international transactions](https://developers.pismo.io/pismo-docs/docs/exchange-rate#exchange-rates-for-international-transactions).\n",
        "operationId": "createExchangeRates",
        "tags": [
          "Exchange rates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/AuthNoAccount"
          }
        ],
        "requestBody": {
          "description": "Add exchange rates",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExchangeRates"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {}
          },
          "400": {
            "$ref": "#/components/responses/400BadRequestExchange"
          },
          "401": {
            "$ref": "#/components/responses/401Unauthorized"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/500InternalServerError"
          }
        }
      }
    }
  }
}
```