---
title: "Create quote"
method: POST
path: "/core/transactions/quote"
tags: ["Transactions"]
---

# Create quote

`POST /core/transactions/quote`

## Request

- Base URL: `https://api.enterprise.sandbox.uphold.com`
- URL: `https://api.enterprise.sandbox.uphold.com/core/transactions/quote`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `/core/oauth2/token` scopes: `core.transactions:create`
- TypeScript: <https://skmtc.dev/uphold/apis/core-api/docs/core/transactions/quote/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a quote for a transaction.

## Headers

- `X-On-Behalf-Of` string
- `X-Uphold-User-Ip` union
  - string, ipv4
  - string, ipv6
- `X-Uphold-User-Agent` string
- `X-Uphold-User-Origin` string
- `X-Uphold-User-Country` string
- `X-Uphold-User-Subdivision` string
- `X-Uphold-User-City` string

## Request body

- object
  - `origin` union, required
    - object
      - `type` 'account', required: The type of the node.
      - `id` string, uuid, required: The account id.
    - object
      - `type` 'external-account', required: The type of the node.
      - `id` string, uuid, required: The external account id.
      - `network` string: The network used for the transaction with the external account.
    - object
      - `type` 'apm', required: The type of the node.
      - `method` 'apple-pay' | 'google-pay' | 'paypal' | 'venmo', required: The alternative payment method to be used in the operation.
  - `destination` union, required
    - object
      - `type` 'account', required: The type of the node.
      - `id` string, uuid, required: The account id.
    - object
      - `type` 'external-account', required: The type of the node.
      - `id` string, uuid, required: The external account id.
      - `network` string: The network used for the transaction with the external account.
    - object
      - `type` 'apm', required: The type of the node.
      - `method` 'apple-pay' | 'paypal' | 'venmo', required: The alternative payment method to be used in the operation.
    - object
      - `type` 'crypto-address', required: The type of the node.
      - `asset` string, required: The asset to be used in the operation.
      - `network` string, required: The network that the crypto address is on.
      - `address` string, required: The crypto address.
      - `reference` string: The additional identifier (e.g., destination tag, memo, or message) required for some networks such as XRP (Ripple), XLM (Stellar), EOS, and others. If the network does not require a tag, this field can be omitted.
  - `denomination` object, required
    - `asset` string, required: The asset in which the transaction is denominated.
    - `amount` string, required: The amount of the transaction.
    - `target` 'origin' | 'destination': Whether this exact amount should be paid by the origin or received by the destination.
  - `ttl` integer: The time-to-live for the quote in milliseconds.

## Response `201`

Quote created.

- object
  - `quote` Quote, required
    - `id` string, uuid, required: The id of the quote.
    - `origin` QuoteOriginEndpoint, required
      - `asset` string, required: The asset of the endpoint.
      - `amount` string, required: The amount of the endpoint.
      - `rate` string, required: The rate of the endpoint against its counter-part (origin to destination and vice-versa).
      - `node` union, required
        - object
          - `type` 'account', required: The type of the node.
          - `id` string, uuid, required: The account id.
          - `ownerId` string, uuid, required: The id of the user that owns the account.
        - TransactionNodeExternalAccountBank
          - `type` 'external-account', required: The type of the node.
          - `id` string, uuid, required: The external account id.
          - `ownerId` string, uuid, required: The id of the user that owns the external account.
          - `via` 'bank', required: The rail type through which the transaction is made.
          - `network` string, required: The network used for the transaction with the external account.
        - TransactionNodeExternalAccountCardBase
          - `type` 'external-account', required: The type of the node.
          - `id` string, uuid, required: The external account id.
          - `ownerId` string, uuid, required: The id of the user that owns the external account.
          - `via` 'card', required: The rail type through which the transaction is made.
          - `network` string, required: The network used for the transaction with the external account.
        - TransactionNodeExternalAccountApmBase
          - `type` 'external-account', required: The type of the node.
          - `id` string, uuid, required: The external account id.
          - `ownerId` string, uuid, required: The id of the user that owns the external account.
          - `via` 'apm', required: The rail type through which the transaction is made.
        - TransactionNodeExternalAccountCrypto
          - `type` 'external-account', required: The type of the node.
          - `id` string, uuid, required: The external account id.
          - `ownerId` string, uuid, required: The id of the user that owns the external account.
          - `via` 'crypto', required: The rail type through which the transaction is made.
          - `network` string, required: The network used for the transaction with the external account.
          - `execution` union
            - object
              - …
            - object
              - …
            - object
              - …
        - object
          - `type` 'apm', required: The type of the node.
          - `method` 'apple-pay' | 'google-pay' | 'paypal' | 'venmo', required: The alternative payment method to be used in the operation.
    - `destination` QuoteDestinationEndpoint, required
      - `asset` string, required: The asset of the endpoint.
      - `amount` string, required: The amount of the endpoint.
      - `rate` string, required: The rate of the endpoint against its counter-part (origin to destination and vice-versa).
      - `node` union, required
        - object
          - `type` 'account', required: The type of the node.
          - `id` string, uuid, required: The account id.
          - `ownerId` string, uuid, required: The id of the user that owns the account.
        - TransactionNodeExternalAccountBank
          - `type` 'external-account', required: The type of the node.
          - `id` string, uuid, required: The external account id.
          - `ownerId` string, uuid, required: The id of the user that owns the external account.
          - `via` 'bank', required: The rail type through which the transaction is made.
          - `network` string, required: The network used for the transaction with the external account.
        - TransactionNodeExternalAccountCardBase
          - `type` 'external-account', required: The type of the node.
          - `id` string, uuid, required: The external account id.
          - `ownerId` string, uuid, required: The id of the user that owns the external account.
          - `via` 'card', required: The rail type through which the transaction is made.
          - `network` string, required: The network used for the transaction with the external account.
        - TransactionNodeExternalAccountApmBase
          - `type` 'external-account', required: The type of the node.
          - `id` string, uuid, required: The external account id.
          - `ownerId` string, uuid, required: The id of the user that owns the external account.
          - `via` 'apm', required: The rail type through which the transaction is made.
        - TransactionNodeExternalAccountCrypto
          - `type` 'external-account', required: The type of the node.
          - `id` string, uuid, required: The external account id.
          - `ownerId` string, uuid, required: The id of the user that owns the external account.
          - `via` 'crypto', required: The rail type through which the transaction is made.
          - `network` string, required: The network used for the transaction with the external account.
          - `execution` union
            - object
              - …
            - object
              - …
            - object
              - …
        - object
          - `type` 'apm', required: The type of the node.
          - `method` 'apple-pay' | 'google-pay' | 'paypal' | 'venmo', required: The alternative payment method to be used in the operation.
        - object
          - `type` 'crypto-address', required: The type of the node.
          - `network` string, required
          - `address` string
          - `reference` string: The additional identifier (e.g., destination tag, memo, or message) for the crypto address.
          - `execution` union
            - object
              - …
            - object
              - …
            - object
              - …
    - `denomination` TransactionDenomination, required
      - `asset` string, required: The asset in which the transaction is denominated.
      - `amount` string, required: The amount of the transaction.
      - `rate` string, required: The rate against the specified target (origin or destination).
      - `target` 'origin' | 'destination', required: Whether this exact amount should be paid by the origin or received by the destination.
    - `fees` object[], required
      - `type` 'deposit' | 'exchange' | 'network' | 'withdrawal', required: The type of the fee.
      - `code` string, required: The code of the fee.
      - `asset` string, required: The asset in which the fee is denominated.
      - `amount` string, required: The amount of the fee.
      - `percentage` string: The percentage of the fee, if the amount was calculated from a percentage.
      - `beneficiary` 'uphold' | 'partner': The entity that receives the fee.
    - `requirements` string[], required
    - `refreshAt` string, date-time, required: The time at which the quote should be refreshed.
    - `expiresAt` string, date-time, required: The time at which the quote expires.

## Other responses

- `400`: Bad Request.
- `401`: Unauthorized.
- `403`: Forbidden.
- `404`: Resource not found.
- `409`: Business logic error.
- `429`: Too Many Requests.

---

[API](https://skmtc.dev/uphold/apis/core-api.md) - [All operations](https://skmtc.dev/uphold/apis/core-api/llms.txt) - [OpenAPI document](https://skmtc.dev/uphold/apis/core-api/revisions/6c663575c57a?raw)
