Tabby Checkout API

Checkout is a whole process of customer data collection and payment authorization.

Operations 2

POST /api/v2/checkout Create a session #
GET /api/v2/checkout/{id} Retrieve an existing checkout session #

Documentation

Specifications

Schemas & Data

Other Resources

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/tabby-checkout-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

tabby-checkout-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Tabby API Reference Checkout API
  version: 1.0.0
  x-logo:
    url: assets/tabby-new.png
    altText: tabby Logo
  description: 'Tabby Documentation:  **[docs.tabby.ai](https://docs.tabby.ai/)**

    '
servers:
- url: https://api.tabby.ai/
  description: Production (UAE, Kuwait)
- url: https://api.tabby.sa/
  description: Production (KSA)
tags:
- name: Checkout
  description: Checkout is a whole process of customer data collection and payment authorization.
paths:
  /api/v2/checkout:
    post:
      tags:
      - Checkout
      summary: Create a session
      description: Creates a Checkout session. Creates Session and Payment, returns Pre-Scoring result (status), ids of Payment and Session.
      operationId: postCheckoutSession
      security:
      - bearerAuth:
        - secret_key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                payment:
                  $ref: '#/components/schemas/CheckoutCreation'
                lang:
                  $ref: '#/components/schemas/LanguageCode'
                merchant_code:
                  type: string
                  example: code provided to you from Tabby side
                  description: Please contact your integration manager to get the merchant code.
                merchant_urls:
                  $ref: '#/components/schemas/MerchantUrls'
                token:
                  type: string
                  default: null
                  description: 'If you already have `token`, you can pass it there. Authorization header still requires Secret Key.

                    '
              required:
              - payment
              - lang
              - merchant_code
      responses:
        '200':
          $ref: '#/components/responses/CheckoutSession'
        '400':
          $ref: '#/components/responses/BadRequestError_CheckoutPost'
        '401':
          $ref: '#/components/responses/AuthenticationError_CheckoutPost'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
  /api/v2/checkout/{id}:
    get:
      tags:
      - Checkout
      summary: Retrieve an existing checkout session
      description: Use this API to retrieve the token (only if tokens used in your integration )
      operationId: getCheckoutSession
      security:
      - bearerAuth:
        - secret_key
      parameters:
      - $ref: '#/components/parameters/sessionIdParam'
      responses:
        '200':
          $ref: '#/components/responses/CheckoutSession'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/AuthenticationError_key_doesnt_exist'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/UnexpectedError'
components:
  responses:
    AuthenticationError_key_doesnt_exist:
      description: The request cannot be authorized.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error_401_key_doesnt_exist'
    BadRequestError:
      description: One of the required fields is missing or request is not formatted correctly.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error_400'
    CheckoutSession:
      description: Success. Checkout session object is returned.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CheckoutSession'
    ForbiddenError:
      description: You tried to perform an action which is forbidden.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error_403'
    NotFoundError:
      description: You are using an incorrect ID.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error_404'
    UnexpectedError:
      description: Something bad happened. We're notified.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error_500'
    AuthenticationError_CheckoutPost:
      description: The request cannot be authorized.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error_401_merchantNull'
    BadRequestError_CheckoutPost:
      description: One of the required fields is missing or request is not formatted correctly.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error_400_CheckoutPost'
  schemas:
    Buyer:
      description: Customer information
      type: object
      properties:
        name:
          type: string
          example: John Doe
          description: Customer’s full name.
        email:
          type: string
          format: email
          description: Customer’s email address.
        phone:
          type: string
          example: '500000001'
          description: Customer’s phone number. This must be a valid mobile phone where the consumer can receive text messages. The accepted phone masks are - `500000001`, `0500000001`, `+971500000001`, `971500000001`.
        dob:
          type: string
          format: date
          example: '2000-01-20'
          description: Customer's date of birth; format is YYYY-MM-DD.
      required:
      - phone
      - email
      - name
    Error_400:
      type: object
      properties:
        status:
          type: string
          example: error
        errorType:
          type: string
          example: bad_data
        error:
          type: string
          example: could not decode request
    OrderItemResponse:
      type: object
      properties:
        reference_id:
          type: string
          nullable: true
          example: SKU123
          description: Merchant’s product identifier. Displayed in Customer's App and Merchant Dashboard, used for Item refunds and disputes.
        title:
          type: string
          nullable: true
          example: Name of the product
          description: Name of the product.
        description:
          type: string
          nullable: true
          example: Description of the product
          description: Description of the product.
        quantity:
          type: integer
          default: 0
          minimum: 0
          example: 1
          description: Quantity of the product ordered.
        unit_price:
          type: string
          default: '0'
          example: '0.00'
          description: Price per unit of the product. Should be positive or zero.
        image_url:
          type: string
          nullable: true
          format: uri
          example: https://example.com/
          description: URL of the item image to show in the order information.
        product_url:
          type: string
          nullable: true
          format: uri
          example: https://example.com/
          description: URL of the item at your store.
        gender:
          type: string
          nullable: true
          enum:
          - Male
          - Female
          - Kids
          - Other
          example: Kids
          description: Who the goods are designed to.
        category:
          type: string
          nullable: true
          example: Clothes
          description: Required as name of high-level category (Clothes, Electronics,etc.); or a tree of category-subcategory1-subcategory2; or id of the category and table with category-ids data mapped provided.
        color:
          type: string
          nullable: true
          example: white
          description: white / blue/ green
        product_material:
          type: string
          nullable: true
          example: cotton
          description: cotton / polyester / synthetic
        size_type:
          type: string
          nullable: true
          example: EU
          description: EU / UK
        size:
          type: string
          nullable: true
          example: M
          description: L / XL / 12
        brand:
          type: string
          nullable: true
          example: Name of the Brand
          description: Mango / Dorothy Perkins / Tommy Hilfiger
        is_refundable:
          type: boolean
          nullable: true
          description: Indicates whether a product can be returned
      required:
      - title
      - quantity
      - unit_price
      - category
    CheckoutConfigurationProduct:
      type: array
      nullable: true
      items:
        type: object
        properties:
          web_url:
            type: string
            nullable: true
            format: uri
            example: https://checkout.tabby.ai/
            description: 'UAE/Kuwait: checkout.tabby.ai, KSA: checkout.tabby.sa'
            readOnly: true
          qr_code:
            type: string
            nullable: true
            format: uri
            example: https://api.tabby.ai/api/v2/checkout/{id}/hpp_link_qr
            description: 'UAE/Kuwait: api.tabby.ai, KSA: api.tabby.sa'
            readOnly: true
    HotelReservationDetails:
      type: object
      required:
      - hotel_itinerary
      - insurance
      - passengers
      properties:
        pnr:
          type: string
          example: TR9088999
          description: Trip booking number, e.g. TR9088999
        hotel_itinerary:
          description: Hotel itinerary data, one per segment
          type: array
          items:
            type: object
            properties:
              hotel_name:
                type: string
                example: hotel_name
              address:
                type: string
                example: address
              hotel_city:
                type: string
                example: hotel_city
              hotel_country:
                type: string
                example: hotel_country
              start_date:
                description: ISO 8601 date e.g. 2018-10-17
                type: string
                format: date
                pattern: ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9]$
              end_date:
                description: ISO 8601 date e.g. 2018-10-17
                type: string
                format: date
                pattern: ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9]$
              number_of_rooms:
                type: integer
                example: 1
              class:
                type: string
                example: class
        insurance:
          description: Insurance data
          type: array
          items:
            type: object
            properties:
              insurance_company:
                type: string
                example: insurance_company
              insurance_type:
                type: string
                example: insurance_type
              insurance_price:
                type: number
                example: insurance_price
        passengers:
          description: Passengers data
          type: array
          items:
            type: object
            properties:
              full_name:
                type: string
                example: full_name
              first_name:
                type: string
                example: first_name
              last_name:
                type: string
                example: last_name
              dob:
                description: ISO 8601 date of birth, e.g. 2018-10-17
                type: string
                example: 2018-10-17 00:00:00+00:00
              document_type:
                type: string
                example: document_type
              document_id:
                type: string
                example: document_id
              expiration_id_dt:
                description: ISO 8601 date e.g. 2018-10-17
                type: string
                format: date
                pattern: ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9]$
              nationality:
                type: string
                example: nationality
              gender:
                description: F - female, M - male, O - other
                type: string
                enum:
                - F
                - M
                - O
                example: M
        affiliate_name:
          description: Name of the affiliate that originated the purchase. If none, leave blank.
          type: string
          example: Name of the affiliate that originated the purchase. If none, leave blank.
    Error_500:
      type: string
      example: Internal Server error
    Error_401_merchantNull:
      type: object
      properties:
        status:
          type: string
          example: error
        errorType:
          type: string
          example: not_authorized
        error:
          type: string
          example: merchant is null
    OrderResponse:
      type: object
      nullable: true
      properties:
        reference_id:
          type: string
          nullable: true
          example: '1001'
          description: Merchant-assigned order number.
        updated_at:
          type: string
          format: date-time
          description: Date and time the order was last updated, in UTC, and displayed in ISO 8601 datetime format.
        tax_amount:
          type: string
          default: '0'
          example: '0.00'
          description: Total tax for the order.
        shipping_amount:
          type: string
          default: '0'
          example: '0.00'
          description: Total shipping cost for the order.
        discount_amount:
          type: string
          default: '0'
          example: '0.00'
          description: Total discount for the order. Should be positive or zero. Shows up on Tabby App for the Customer's convenience.
        items:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/OrderItemResponse'
          description: Array of objects representing the order items in this payment.
      required:
      - items
      - reference_id
    PaymentCreatedAt:
      type: string
      readOnly: true
      format: date-time
      description: Date and time the payment was created, in UTC, and displayed in ISO 8601 datetime format.
    AttachmentPaymentHistorySimple:
      type: object
      properties:
        unique_account_identifier:
          type: string
          example: unique name / id of the customer
          description: Unique name / number to identify the specific customer account
        paid_before_flag:
          type: boolean
          description: Whether the customer has paid before or not
        date_of_last_paid_purchase:
          description: ISO 8601 date e.g. 2018-10-17
          type: string
          format: date
          pattern: ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9]$
        date_of_first_paid_purchase:
          description: ISO 8601 date e.g. 2018-10-17
          type: string
          format: date
          pattern: ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9]$
    CheckoutProductRejectionReason:
      type: string
      nullable: true
      enum:
      - order_amount_too_high
      - order_amount_too_low
      - not_available
      - 'null'
      example: null
      description: "The reason why this product is not available to use\nPossible values:\n  * `order_amount_too_high` - 'This purchase is above your current spending limit with Tabby, try a smaller cart or use another payment method.'\n  * `order_amount_too_low` - 'The purchase amount is below the minimum amount required to use Tabby, try adding more items or use another payment method.'\n  * `not_available` - 'Sorry, Tabby is unable to approve this purchase, please use an alternative payment method for your order.'\n  * `null` - if `is_available` is `true` and customer is able to use it.\n"
    Attachment_V1:
      type: object
      nullable: true
      description: Extra data (booking info, insurance, flight reservations, ...) as serialized JSON
      properties:
        body:
          description: Should be an object containing any of the keys with corresponded sub objects
          example: '{"flight_reservation_details": {"pnr": "TR9088999","itinerary": [...],"insurance": [...],"passengers": [...],"affiliate_name": "some affiliate"}}'
          properties:
            flight_reservation_details:
              $ref: '#/components/schemas/FlightReservationDetails'
            hotel_reservation_details:
              $ref: '#/components/schemas/HotelReservationDetails'
            insurance_details:
              $ref: '#/components/schemas/InsuranceDetails'
            payment_history_full:
              $ref: '#/components/schemas/AttachmentPaymentHistoryFull'
            payment_history_simple:
              $ref: '#/components/schemas/AttachmentPaymentHistorySimple'
            flight_points_simple:
              $ref: '#/components/schemas/FlightPointsSimple'
            marketplaces:
              $ref: '#/components/schemas/Marketplaces'
            education_details:
              $ref: '#/components/schemas/EducationDetails'
        content_type:
          description: Version of used schema
          type: string
          default: application/vnd.tabby.v1+json
      required:
      - body
      - content_type
    InsuranceDetails:
      type: object
      required:
      - policy_details
      - client
      properties:
        policy_details:
          description: Information about insurance
          type: object
          required:
          - insurance_type
          - insurance_start_dt
          - insurance_end_dt
          - insured_amount
          properties:
            insurance_type:
              description: Insurance policy type
              type: string
              example: Insurance policy type
            insurance_start_dt:
              description: ISO 8601 start date, e.g. 2018-10-17
              type: string
              example: 2018-10-17 00:00:00+00:00
            insurance_end_dt:
              description: ISO 8601 end date, e.g. 2018-10-17
              type: string
              example: 2018-10-17 00:00:00+00:00
            insured_amount:
              description: Amount of insurance policy
              type: string
              example: '100'
            car_details:
              description: Required for car insurance
              type: object
              required:
              - manufacturer
              - model
              - year
              properties:
                manufacturer:
                  type: string
                  example: manufacturer
                model:
                  type: string
                  example: model
                year:
                  type: string
                  example: year
            travel_details:
              description: Required for travel insurance
              type: object
              required:
              - departure_country
              - arrival_country
              properties:
                departure_country:
                  type: string
                  example: departure_country
                arrival_country:
                  type: string
                  example: arrival_country
            refundable:
              description: If insurance can be cancelled/refunded - true, otherwise - false
              type: boolean
            provider_name:
              type: string
              example: provider_name
        client:
          type: object
          required:
          - first_name
          - last_name
          - document_type
          properties:
            full_name:
              type: string
              example: full_name
            first_name:
              type: string
              example: first_name
            last_name:
              type: string
              example: last_name
            dob:
              description: ISO 8601 date of birth, e.g. 2018-10-17
              type: string
              example: 2018-10-17 00:00:00+00:00
            document_type:
              type: string
              example: document_type
            document_id:
              type: string
              example: document_id
            expiration_id_dt:
              description: ISO 8601 date e.g. 2018-10-17
              type: string
              format: date
              pattern: ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9]$
            nationality:
              type: string
              example: nationality
            gender:
              description: F - female, M - male, O - other
              example: F
        payment_history_simple:
          type: object
          required:
          - date_of_last_paid_purchase
          - date_of_first_paid_purchase
          properties:
            unique_account_identifier:
              type: string
              example: unique name / id of the customer
              description: Unique name / number to identify the specific customer account
            paid_before_flag:
              type: boolean
              description: Whether the customer has paid before or not
            date_of_last_paid_purchase:
              description: ISO 8601 date e.g. 2018-10-17
              type: string
              format: date
              pattern: ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9]$
            date_of_first_paid_purchase:
              description: ISO 8601 date e.g. 2018-10-17
              type: string
              format: date
              pattern: ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9]$
    FlightReservationDetails:
      type: object
      required:
      - itinerary
      - insurance
      - passengers
      properties:
        pnr:
          type: string
          example: Trip booking number, e.g. TR9088999
          description: Trip booking number, e.g. TR9088999
        itinerary:
          description: Itinerary data, one per segment
          type: array
          items:
            type: object
            properties:
              departure_city:
                type: string
                example: departure_city
              departure_country:
                type: string
                example: departure_country
              arrival_city:
                type: string
                example: arrival_city
              arrival_country:
                type: string
                example: arrival_country
              carrier:
                type: string
                example: carrier
              departure_date:
                description: RFC3339 e.g. 2018-10-17T07:26:33Z
                type: string
                format: date-time
                pattern: ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-5][0-9]:[0-5][0-9]Z$
              class:
                type: string
                example: class
              refundable:
                description: true - if ticket can be cancelled/refunded
                type: boolean
        insurance:
          description: Insurance data
          type: array
          items:
            type: object
            properties:
              insurance_company:
                type: string
                example: insurance_company
              insurance_type:
                type: string
                example: insurance_type
              insurance_price:
                type: number
                example: insurance_price
        passengers:
          description: Passengers data
          type: array
          items:
            type: object
            properties:
              full_name:
                type: string
                example: full_name
              first_name:
                type: string
                example: first_name
              last_name:
                type: string
                example: last_name
              dob:
                description: ISO 8601 date of birth, e.g. 2018-10-17
                type: string
                example: 2018-10-17 00:00:00+00:00
              document_type:
                type: string
                example: document_type
              document_id:
                type: string
                example: document_id
              expiration_id_date:
                description: ISO 8601 date e.g. 2018-10-17
                type: string
                format: date
                pattern: ^2[0-9]{3}-[0-1][0-9]-[0-3][0-9]$
              nationality:
                type: string
                example: nationality
              gender:
                description: F - female, M - male, O - other
                type: string
                enum:
                - F
                - M
                - O
                example: F
        affiliate_name:
          description: Name of the affiliate that originated the purchase. If none, leave blank.
          type: string
          example: Name of the affiliate that originated the purchase. If none, leave blank.
    CheckoutSession:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: session id, uuid format
          readOnly: true
          description: Unique identifier for the checkout Session, assigned by Tabby.
        configuration:
          type: object
          description: Some details associated with the current session.
          properties:
            available_products:
              type: object
              nullable: true
              properties:
                installments:
                  $ref: '#/components/schemas/CheckoutConfigurationProduct'
                  description: Links to redirect customers to Tabby Checkout.
            products:
              type: object
              description: Products and theirs availability
              properties:
                installments:
                  $ref: '#/components/schemas/CheckoutProduct'
        token:
          type: string
          example: null
          nullable: true
          description: 'In the response, this field will be filled with `token` value if session status is ''approved''.

            You can use that token for Tokenized Payments and Web Checkout.

            '
        payment:
          $ref: '#/components/schemas/CheckoutResponsePayment'
        status:
          type: string
          readOnly: true
          enum:
          - created
          - rejected
          - expired
          - approved
          example: created
          description: "Status of the current session. Used at the pre-scoring and session creation steps.\n  - `created` is returned when the request is approved and the customer is eligible to use Tabby\n  - `rejected` means that there are no available products for a customer\n  - `expired` and `approved` - used for specific type of integration, kindly ignore them if not communicated directly\n"
        merchant_urls:
          type: object
          properties:
            success:
              type: string
              nullable: true
              format: uri
              example: https://your-store/success
              description: URL where to redirect after payment is Authorized. 'Thank you' page recommended.
            cancel:
              type: string
              nullable: true
              format: uri
              example: https://your-store/cancel
              description: URL where to proceed after cancel payment status. Checkout page recommended.
            failure:
              type: string
              nullable: true
              format: uri
              example: https://your-store/failure
              description: URL where to proceed after failure payment status (Rejected). Checkout page recommended.
    Error_403:
      type: object
      properties:
        status:
          type: string
          example: error
        errorType:
          type: string
          example: no_permission
    Error_401_key_doesnt_exist:
      type: object
      properties:
        status:
          type: string
          example: error
        errorType:
          type: string
          example: not_authorized
        error:
          type: string
          example: 'auth: provided key doesn''t exist'
    OrderItem:
      type: object
      properties:
        reference_id:
          type: string
          example: SKU123
          description: Merchant’s product identifier. Displayed in Customer's App and Merchant Dashboard, used for Item refunds and disputes.
        title:
          type: string
          example: Name of the product
          description: Name of the product.
        description:
          type: string
          example: Description of the product
          description: Description of the product.
        quantity:
          type: integer
          default: 1
          minimum: 1
          example: 1
          description: Quantity of the product ordered.
        unit_price:
          type: string
          default: '0.00'
          example: '0.00'
          description: Price per unit of the product. Should be positive or zero.
        discount_amount:
          type: string
          default: '0.00'
          example: '0.00'
          description: Amount of the applied discount if any. Should be positive or zero.
        image_url:
          type: string
          format: uri
          example: https://example.com/
          description: URL of the item image to show in the order information.
        product_url:
          type: string
          format: uri
          example: https://example.com/
          description: URL of the item at your store.
        gender:
          type: string
          enum:
          - Male
          - Female
          - Kids
          - Other
          example: Kids
          description: Who the goods are designed to.
        category:
          type: string
          example: Clothes
          description: Required as name of high-level category (Clothes, Electronics,etc.); or a tree of category-subcategory1-subcategory2; or id of the category and table with category-ids data mapped provided.
        color:
          type: string
          example: white
          description: white / blue/ green
        product_material:
          type: string
          example: cotton
          description: cotton / polyester / synthetic
        size_type:
          type: string
          example: EU
          description: EU / UK
        size:
          type: string
          example: M
          description: L / XL / 12
        brand:
          type: string
          example: Name of the Brand
          description: Mango / Dorothy Perkins / Tommy Hilfiger
        is_refundable:
          type: boolean
          description: Indicates whether a product can be returned
        barcode:
          type: string
          example: '12345678'
          description: A machine-readable product identifier. Typically used for logistics and scanning.
        ppn:
          type: string
          example: MNXT2ZM/A
          description: Product Part Number assigned by the manufacturer. Used to identify specific components or versions of a product.
        seller:
          type: string
          example: Name of the Seller
          description: The name of the seller offering this item. This field is used to distinguish products from different vendors on a single marketplace.
      required:
      - title
      - quantity
      - unit_price
      - category
    Currency:
      type: string
      enum:
      - AED
      - SAR
      - KWD
      example: AED
      description: "ISO 4217 currency code for the payment amount. Currently there are 3 possible currency options - depending on the country where the store is located:\n  - `AED` - United Arab Emirates Dirham\n  - `SAR` - Saudi Riyal\n  - `KWD` - Kuwaiti Dinar\n"
    PaymentID:
      type: string
      format: uuid
      example: payment id, uuid format
      readOnly: true
      description: Unique identifier for the payment (UUID), assigned by Tabby. Save it on your side!
    AttachmentPaymentHistoryFull:
      type: object
      properties:
        unique_account_identifier:
          type: string
          example: unique name / id of the customer
          description: Unique name / number to identify the specific customer account
        payment_option:
          description: One of - card / direct banking / COD (cash) / other
          type: string
          enum:
          - card
          - direct banking
          - cod
          - other
          example: card
        number_paid_purcha

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tabby/refs/heads/main/openapi/tabby-checkout-api-openapi.yml