Toast Merchants API

The Merchants API from Toast — 1 operation(s) for merchants.

Operations 1

PUT /merchants/{merchantUuid}/payments/{paymentUuid} Authorize a credit card #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/toast-merchants-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

toast-merchants-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Credit Cards Merchants API
  description: "A simple, single request, synchronous API to authorize credit card \ntransactions associated with an orders API order.\n"
  version: 1.0.0
  contact:
    name: Toast developer support
servers:
- url: https://toast-api-server/ccpartner/v1
tags:
- name: Merchants
paths:
  /merchants/{merchantUuid}/payments/{paymentUuid}:
    put:
      operationId: merchantsMerchantUuidPaymentsPaymentUuidPut
      summary: Authorize a credit card
      description: 'Authorize a credit card payment. Funds will be held until the

        payment is voided or captured.


        You must submit an orders API request to apply the payment to a

        check within five minutes of authorization, otherwise the

        payment is automatically voided.


        Payment must be captured within seven days of authorization,

        otherwise the payment is automatically voided. Capture

        occurs the evening after the order is fulfilled by the

        restaurant.

        '
      parameters:
      - name: merchantUuid
        in: path
        description: 'The Toast GUID of the merchant (restaurant) that will

          receive the payment. This is the same value as the

          Toast-Restaurant-External-ID.

          '
        required: true
        schema:
          type: string
      - name: paymentUuid
        in: path
        description: 'The unique identifier (UID) of this authorization,

          generated by the restaurant organization or integration

          partner.

          '
        required: true
        schema:
          type: string
      - name: Toast-Restaurant-External-ID
        in: header
        description: 'The GUID of the restaurant used as the context of the request.

          '
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentAuthorization'
        description: The authorization request, including encrypted credit card information and payment details.
        required: true
      responses:
        '200':
          description: The authorization request was processed. See the response for details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentStatus'
        '400':
          description: The request was not valid. A required field may be missing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToastError'
        '404':
          description: The merchant (restaurant) does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToastError'
        '409':
          description: 'An authorization request was already made for this payment

            UUID. Verify that you are generating unique payment UUIDs

            for each request.  This can also occur if the same request

            is resubmitted, but the state has since been changed by

            another system (for example, voided on the POS).

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToastError'
        '422':
          description: 'The request failed validation. The structure is not

            correct. A message with more information is returned if

            using the certification environment.

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToastError'
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToastError'
      security:
      - oauth2:
        - credit_cards.authorization:write
      tags:
      - Merchants
components:
  schemas:
    ToastError:
      description: Contains error details.
      type: object
      properties:
        description:
          type: string
          description: A human-readable description of the problem.
        detail:
          type: string
          description: Error details, such as an exception and stack trace.
      required:
      - description
    PartnerServiceInfo:
      required:
      - instanceId
      description: 'Information about the client that made the payment request. This

        information can be used for troubleshooting problems.

        '
      type: object
      properties:
        instanceId:
          type: string
          description: 'An identifier for the client that made the authorization

            request. For example, this might be a partner service

            instance ID that is visible in log messages.

            '
        additionalInfo:
          type: string
          description: 'Additional information about the service. For example, this

            might be a JSON structure containing the IP address and

            service version.

            '
    BillingAddress:
      description: 'An international billing address including name and phone number.

        A `BillingAddress` object for a `PaymentRequestMetadata` `billingAddress`

        value must exactly match address information you provide in encrypted

        credit card data.

        '
      type: object
      required:
      - postalCode
      - country
      properties:
        name:
          type: string
          description: 'The name attached to the billing address. This is not necessarily

            the same as the name on the card.

            '
        phone:
          type: string
          description: 'The phone number associated with the account in [E.164 format](https://www.itu.int/rec/T-REC-E.164).

            '
        address1:
          type: string
          description: Line 1 of the address
        address2:
          type: string
          description: Line 2 of the address
        city:
          type: string
          description: City of the address
        region:
          type: string
          description: Region or state of the address
        postalCode:
          type: string
          description: 'Postal or ZIP code. If using a code with an extra four digits,

            for example a US ZIP+4 code, do not separate the extra digits.

            For example, `123451234`.

            '
        country:
          type: string
          description: Country code using the ISO 3166-1 alpha-3 standard
    PaymentAuthorization:
      description: A request to authorize a credit card payment.
      type: object
      required:
      - cardNumberOrigin
      - willSaveCard
      - encryptedCardData
      - amount
      - tipAmount
      - requestMetadata
      - keyId
      properties:
        cardNumberOrigin:
          type: string
          enum:
          - END_USER
          - PARTNER_VAULT
          description: "The way that the credit card was provided for the payment\nrequest. The value is `END_USER` if the cardholder entered\nthe card number (PAN) as part of a web order. The value is\n`PARTNER_VAULT` if the PAN was retrieved from a vault\ncontrolled by the integration partner.\n\nThis value is used with `willSaveCard` to report information \nabout stored credit card numbers to credit card provider \nnetworks. If your organization is using stored credit card \ninformation for a credit card authorization, this value must \nbe `PARTNER_VAULT`. The default value is `END_USER`.\n"
        willSaveCard:
          type: boolean
          description: "Indicates whether your organization will save the restaurant \nguests' credit card information for future use.\n\nToast reports information about stored credit card information \nto some credit card providers. This \"card on file\" or \"stored \ncredentials\" reporting is required by some credit card provider \nnetworks. These networks may impose fees for non-compliance \nwith \"card on file\" reporting requirements.\n\nNote that integration partners are responsible for any and \nall fees incurred, and must comply with all applicable law \nand rules relevant to, \"card on file\" consent, storage, use \nand reporting requirements in accordance with card brand \nregulations and the integration partner agreement.\n"
        encryptedCardData:
          type: object
          description: 'A base64-encoded version of the encrypted card data payload.

            For information about encrypting and encoding credit card

            information, see the <cite>Toast API Developer''s

            Guide</cite>.

            '
        amount:
          type: number
          format: double
          description: 'The check price that should be charged to the credit card,

            not including the tip. For example, the value `10.00`

            represents ten USD and zero cents. The `amount` must not be

            negative. The total of the `amount` value and the `tipAmount`

            value must be greater than zero.

            '
        keyId:
          type: string
          description: "The identifier of the encryption key and algorithm used \nto encrypt the credit card data. Toast integration support \nprovides this identifier along with the encryption key \nitself. If you received an encryption key before June 2018,\nyou may omit this field. For all API users, supplying a\nkeyId value prevents downtime during key rotations.\n"
        tipAmount:
          type: number
          format: double
          description: 'The tip that should be charged to the credit card. For

            example, the value `1.00` represents one USD and zero cents.

            The tip amount must not be negative. The total of the `amount`

            value and the `tipAmount` value must be greater than zero.

            '
        requestMetadata:
          $ref: '#/components/schemas/PaymentRequestMetadata'
    AuthorizationMetadata:
      description: 'Additional details about a payment, typically displayed on a receipt

        and logged by the partner.

        '
      type: object
      required:
      - localTransactionDate
      - cardBrand
      - authorizationCode
      - last4
      properties:
        localTransactionDate:
          type: string
          format: date-time
          description: 'A copy of the `localTransactionDate` provided by the partner, in ISO 8601 format.

            '
        cardBrand:
          type: string
          description: The brand of the credit card. For example, AMEX, Discover, Visa, or Mastercard.
        authorizationCode:
          type: string
          description: 'A code generated by card processing networks upon accepting an

            authorization request.

            '
        last4:
          type: string
          description: 'The final four digits of the credit card number.

            '
    PaymentRequestMetadata:
      description: Metadata about the request being made.
      type: object
      required:
      - partnerServiceInfo
      - localTransactionDate
      - originIPAddr
      - cardFirst6
      - cardLast4
      - billingAddress
      - guestIdentifier
      properties:
        partnerServiceInfo:
          $ref: '#/components/schemas/PartnerServiceInfo'
        localTransactionDate:
          type: string
          format: date-time
          description: "The date and time, in ISO 8601 format, when the guest presents their credit card. \n"
        originIPAddr:
          type: string
          description: The public ipv4 or ipv6 address of the cardholder making the payment. The origin IP address is essential for detecting and preventing fraud attempts in credit card authorization requests. To prevent disruption to your transaction workflow, ensure the correct origin IP address is used.
        cardFirst6:
          type: string
          description: 'The first six digits of the credit card number. The first six

            digits are the bank identification number (BIN) for the card.

            Must exactly match that provided in the encrypted card data.

            '
        cardLast4:
          type: string
          description: 'The last four digits of the credit card number. Must exactly

            match that provided in the encrypted card data.

            '
        billingAddress:
          $ref: '#/components/schemas/BillingAddress'
        deliveryAddress:
          $ref: '#/components/schemas/DeliveryAddress'
        userAgent:
          type: string
          description: 'For payments taken through a browser, the browser''s user agent string.

            '
        guestIdentifier:
          type: string
          description: 'An identifier for the guest making the payment such as

            an email address or phone number. Must consist of the following characters:

            `a-z, A-Z, 0-9, =, ., -, _, +, @, :, &, ^, %, !, $`

            '
        guestEmail:
          type: string
          description: 'The email address of the guest placing the payment.

            '
        appName:
          type: string
          description: 'A company-specific name for the mobile app (if any) the payment is made through.

            For instance, use ''MyCompany Android App'' instead of ''Android App''

            '
        appVersion:
          type: string
          description: 'The version of the mobile app (if any) the payment is made through.

            You can use any string to represent the app version. There are no

            format or content requirements.

            '
    PaymentStatus:
      description: Status of a payment.
      type: object
      required:
      - paymentState
      properties:
        paymentState:
          type: string
          enum:
          - AUTHORIZED
          - ACKNOWLEDGED
          - DENIED
          description: 'The state of the payment. Toast may add values to this field.

            Make sure that your implementation can handle additional

            values.

            '
        authorizationMetadata:
          $ref: '#/components/schemas/AuthorizationMetadata'
        amount:
          description: The amount of this payment, not including tip.
          type: object
        tipAmount:
          description: The tip amount of this payment.
          type: object
        denialReason:
          description: The reason a payment was denied. This must be displayed to the consumer.
          type: string
        error:
          type: string
          description: If the payment is in an error state, this will contain the error.
    DeliveryAddress:
      description: 'A generic international delivery address including name and phone number.

        '
      type: object
      required:
      - address1
      - city
      - region
      - postalCode
      - country
      properties:
        name:
          type: string
          description: 'The name associated with the address.

            '
        phone:
          type: string
          description: 'The phone number associated with the account in [E.164 format](https://www.itu.int/rec/T-REC-E.164).

            '
        address1:
          type: string
          description: Line 1 of the address
        address2:
          type: string
          description: Line 2 of the address
        city:
          type: string
          description: City of the address
        region:
          type: string
          description: Region or state of the address
        postalCode:
          type: string
          description: 'Postal or ZIP code. If using a code with an extra four digits,

            for example a US ZIP+4 code, do not separate the extra digits.

            For example, `123451234`.

            '
        country:
          type: string
          description: Country code using the ISO 3166-1 alpha-3 standard
  securitySchemes:
    oauth2:
      description: "Access to Toast APIs, specific endpoints, \nand specific API endpoint operations is \ncontrolled by the scopes that are associated \nwith your API account. \nA full reference for Toast API scopes and \ntheir capabilities can be found in the\n[_Toast Developer Guide_](https://doc.toasttab.com/doc/devguide/apiScopes.html).\n"
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://toast-api-server/authentication/v1/authentication/login
          scopes:
            credit_cards.authorization:write: 'Allows authorization of payments through the credit cards API.

              '