---
title: "Create a payment quote"
method: POST
path: "/quotes"
tags: ["Sending Payments"]
---

# Create a payment quote

`POST /quotes`

Generate a quote for a payment from one UMA address to another.
The quote locks in exchange rates and fees for a set period of time and provides
payment instructions that can be used to execute the payment.

Depending on the `lockedCurrencySide` parameter, either the sending amount or 
receiving amount will be locked.

The returned quote includes payment instructions with the banking details
needed to execute the payment and fulfill the quote. These instructions
must be followed precisely, including any reference codes provided.

## Request body

- object
  - `lookupId` string, required — Unique identifier for the prior receiver uma address lookup request.
  - `sendingCurrencyCode` string, required — Currency code for the sending amount
  - `receivingCurrencyCode` string, required — Currency code for the receiving amount
  - `lockedCurrencySide` 'SENDING' | 'RECEIVING', required — The side of the quote which should be locked and specified in the `lockedCurrencyAmount`. For example, if I want to send exactly $5 MXN from my wallet, I would set this to "sending", and the `lockedCurrencyAmount` to 500 (in cents). If I want the receiver to receive exactly $10 USD, I would set this to "receiving" and the `lockedCurrencyAmount` to 10000 (in cents).
  - `lockedCurrencyAmount` integer, required — The amount to send/receive in the smallest unit of the locked currency (eg. cents). See `lockedCurrencySide` for more information.
  - `description` string — Optional description/memo for the payment
  - `senderUserInfo` object — Key-value pairs of information about the sender which was requested by the counterparty (recipient) institution. Any fields specified in `requiredPayerDataFields` from the response of the `/receiver/{receiverUmaAddress}` (lookupUma) endpoint MUST be provided here if they were requested. If the counterparty (recipient) institution did not request any information, this field can be omitted.

## Response `201`

Quote created successfully. The response includes payment instructions
that the client can use to execute the payment through their banking provider.

- Quote
  - `quoteId` string, required — Unique identifier for this quote
  - `sendingCurrency` Currency, required
    - `code` string — Three-letter currency code (ISO 4217) for fiat currencies. Some cryptocurrencies may use their own ticker symbols (e.g. "SAT" for satoshis, "USDC" for USDCoin, etc.)
    - `name` string — Full name of the currency
    - `symbol` string — Symbol of the currency
    - `decimals` integer — Number of decimal places for the currency
  - `receivingCurrency` Currency, required
    - `code` string — Three-letter currency code (ISO 4217) for fiat currencies. Some cryptocurrencies may use their own ticker symbols (e.g. "SAT" for satoshis, "USDC" for USDCoin, etc.)
    - `name` string — Full name of the currency
    - `symbol` string — Symbol of the currency
    - `decimals` integer — Number of decimal places for the currency
  - `totalSendingAmount` integer, required — The total amount that will be sent in the smallest unit of the sending currency (eg. cents).
  - `totalReceivingAmount` integer, required — The total amount that will be received in the smallest unit of the receiving currency (eg. cents).
  - `exchangeRate` number, required — Number of sending currency units per receiving currency unit.
  - `expiresAt` string, date-time, required — When this quote expires (typically 1-5 minutes after creation)
  - `feesIncluded` integer, required — The fees associated with the quote in the smallest unit of the sending currency (eg. cents).
  - `counterpartyInformation` object — Information about the recipient, as required by the platform in their configuration.
  - `paymentInstructions` PaymentInstructions, required
    - `reference` string, required — Unique reference code that must be included with the payment to properly credit it
    - `instructionsNotes` string — Additional human-readable instructions for making the payment
    - `bankAccountInfo` union, required
      - PaymentClabeAccountInfo
        - `accountType` 'CLABE' | 'US_ACCOUNT' | 'PIX' | 'IBAN' | 'FBO' | 'UPI', required — Type of bank account information
        - `clabeNumber` string, required — 18-digit CLABE number (Mexican banking standard)
        - `bankName` string, required — Name of the bank
        - `accountHolderName` string — Name of the account holder
      - PaymentUsAccountInfo
        - `accountType` 'CLABE' | 'US_ACCOUNT' | 'PIX' | 'IBAN' | 'FBO' | 'UPI', required — Type of bank account information
        - `accountNumber` string, required — US bank account number
        - `routingNumber` string, required — ACH routing number (9 digits)
        - `accountCategory` 'CHECKING' | 'SAVINGS', required — Type of account (checking or savings)
        - `bankName` string — Name of the bank
        - `accountHolderName` string — Name of the account holder
      - PaymentPixAccountInfo
        - `accountType` 'CLABE' | 'US_ACCOUNT' | 'PIX' | 'IBAN' | 'FBO' | 'UPI', required — Type of bank account information
        - `pixKey` string, required — PIX key for Brazilian instant payments
        - `pixKeyType` 'CPF' | 'CNPJ' | 'EMAIL' | 'PHONE' | 'RANDOM', required — Type of PIX key being used
        - `bankName` string — Name of the bank
        - `accountHolderName` string — Name of the account holder
      - PaymentIbanAccountInfo
        - `accountType` 'CLABE' | 'US_ACCOUNT' | 'PIX' | 'IBAN' | 'FBO' | 'UPI', required — Type of bank account information
        - `iban` string, required — International Bank Account Number
        - `swiftBic` string — SWIFT/BIC code (8 or 11 characters)
        - `bankName` string, required — Name of the bank
        - `accountHolderName` string — Name of the account holder
      - PaymentFboAccountInfo
        - `accountType` 'CLABE' | 'US_ACCOUNT' | 'PIX' | 'IBAN' | 'FBO' | 'UPI', required — Type of bank account information
        - `paymentUrl` string, uri, required — The url to make request to in order to confirm payment
        - `paymentMethod` 'POST' | 'GET', required — The HTTP method to use for confirming the payment
      - PaymentUpiAccountInfo
        - `accountType` 'CLABE' | 'US_ACCOUNT' | 'PIX' | 'IBAN' | 'FBO' | 'UPI', required — Type of bank account information
        - `vpa` string, required — Virtual Payment Address for UPI payments
        - `accountHolderName` string — Name of the account holder
  - `status` 'PENDING' | 'PROCESSING' | 'COMPLETED' | 'FAILED' | 'EXPIRED' — Current status of the quote
  - `transactionId` string, required — The ID of the transaction created from this quote.
  - `originalQuoteId` string — ID of the quote that is being retried
  - `rateDetails` OutgoingRateDetails — Details about the rate and fees for an outgoing transaction or quote.
    - `counterpartyMultiplier` number, double, required — The underlying multiplier from mSATs to the receiving currency as returned by the counterparty institution.
    - `counterpartyFixedFee` integer, required — The fixed fee charged by the counterparty institution to execute the quote in the smallest unit of the receiving currency (eg. cents).
    - `umaaasMultiplier` number, double, required — The underlying multiplier from the sending currency to mSATS, including variable fees.
    - `umaaasFixedFee` integer, required — The fixed fee charged by the UMAaaS product to execute the quote in the smallest unit of the sending currency (eg. cents).
    - `umaaasVariableFeeRate` number, double, required — The variable fee rate charged by the UMAaaS product to execute the quote as a percentage of the sending currency amount.
    - `umaaasVariableFeeAmount` number, required — The variable fee amount charged by the UMAaaS product to execute the quote in the smallest unit of the sending currency (eg. cents). This is the sending amount times umaaasVariableFeeRate.

## Other responses

- `400` — Bad request - Missing or invalid parameters
- `401` — Unauthorized
- `412` — Counterparty doesn't support UMA version
- `424` — Counterparty issue
- `500` — Internal service error
- `501` — Not implemented

---

[API](https://skmtc.net/lightsparkdev/apis/uma-as-a-service-umaaas-api.md) · [All operations](https://skmtc.net/lightsparkdev/apis/uma-as-a-service-umaaas-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lightsparkdev/uma-as-a-service-umaaas-api/versions/2e2b5ba6d69b/schema)
