Tamara Checkout API

Create online checkout sessions that send customer and order information to Tamara and receive a hosted checkout URL where the consumer completes the BNPL or Pay-Now flow. Supports SAR, AED, BHD, KWD, and OMR across Saudi Arabia, the UAE, Bahrain, Kuwait, and Oman.

Tamara Checkout API is one of 8 APIs that Tamara publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Checkout, BNPL, Payments, and Orders. The published artifact set on APIs.io includes API documentation, a quickstart, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

tamara-checkout-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Tamara Checkout API
  description: |
    Create online checkout sessions that send customer and order information to Tamara
    and receive a hosted checkout URL where the consumer completes the BNPL or Pay-Now flow.
    Supports SAR, AED, BHD, KWD, and OMR across Saudi Arabia, the UAE, Bahrain, Kuwait, and Oman.
  version: 1.0.0
  contact:
    name: Tamara Merchant Support
    url: https://docs.tamara.co/
  license:
    name: Proprietary
    url: https://tamara.co/en-SA/legal/terms-conditions
servers:
- url: https://api.tamara.co
  description: Production
- url: https://api-sandbox.tamara.co
  description: Sandbox
tags:
- name: Checkout Sessions
  description: Create and manage hosted-checkout sessions.
paths:
  /checkout:
    post:
      operationId: createCheckoutSession
      summary: Create Checkout Session
      description: |
        Create a hosted checkout session where Tamara collects payment information and
        completes the BNPL or Pay-Now flow with the consumer. Store the returned
        `order_id` and redirect the customer to `checkout_url`.
      tags:
      - Checkout Sessions
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckoutSessionRequest'
      responses:
        '200':
          description: Checkout session created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutSessionResponse'
        '400':
          description: Validation failure (e.g. unsupported country/currency combination).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Tamara-issued merchant API token.
  schemas:
    Money:
      type: object
      required:
      - amount
      - currency
      properties:
        amount:
          type: number
          format: double
          example: 300
        currency:
          type: string
          enum: [SAR, AED, BHD, KWD, OMR]
    Item:
      type: object
      required:
      - reference_id
      - type
      - name
      - sku
      - quantity
      - total_amount
      properties:
        reference_id:
          type: string
        type:
          type: string
        name:
          type: string
        sku:
          type: string
        quantity:
          type: integer
        unit_price:
          $ref: '#/components/schemas/Money'
        discount_amount:
          $ref: '#/components/schemas/Money'
        tax_amount:
          $ref: '#/components/schemas/Money'
        total_amount:
          $ref: '#/components/schemas/Money'
        image_url:
          type: string
          format: uri
    Consumer:
      type: object
      required:
      - first_name
      - last_name
      - phone_number
      properties:
        first_name:
          type: string
        last_name:
          type: string
        phone_number:
          type: string
          description: E.164 phone number for the consumer.
        email:
          type: string
          format: email
        date_of_birth:
          type: string
          format: date
        national_id:
          type: string
    Address:
      type: object
      required:
      - first_name
      - last_name
      - line1
      - city
      - country_code
      properties:
        first_name:
          type: string
        last_name:
          type: string
        line1:
          type: string
        line2:
          type: string
        region:
          type: string
        city:
          type: string
        country_code:
          type: string
          minLength: 2
          maxLength: 2
        phone_number:
          type: string
    MerchantUrls:
      type: object
      required:
      - success
      - failure
      - cancel
      properties:
        success:
          type: string
          format: uri
        failure:
          type: string
          format: uri
        cancel:
          type: string
          format: uri
        notification:
          type: string
          format: uri
    CheckoutSessionRequest:
      type: object
      required:
      - order_reference_id
      - total_amount
      - description
      - country_code
      - payment_type
      - items
      - consumer
      - shipping_address
      - tax_amount
      - shipping_amount
      - merchant_url
      properties:
        order_reference_id:
          type: string
        order_number:
          type: string
        total_amount:
          $ref: '#/components/schemas/Money'
        description:
          type: string
          maxLength: 256
        country_code:
          type: string
          enum: [SA, AE, BH, KW, OM]
        payment_type:
          type: string
          enum: [PAY_BY_INSTALMENTS, PAY_NOW]
        instalments:
          type: integer
          minimum: 2
          maximum: 24
        locale:
          type: string
          enum: [ar_SA, en_US]
        items:
          type: array
          items:
            $ref: '#/components/schemas/Item'
        consumer:
          $ref: '#/components/schemas/Consumer'
        billing_address:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
        discount:
          type: object
          properties:
            name:
              type: string
            amount:
              $ref: '#/components/schemas/Money'
        tax_amount:
          $ref: '#/components/schemas/Money'
        shipping_amount:
          $ref: '#/components/schemas/Money'
        merchant_url:
          $ref: '#/components/schemas/MerchantUrls'
        platform:
          type: string
        is_mobile:
          type: boolean
        risk_assessment:
          type: object
          additionalProperties: true
        expires_in_minutes:
          type: integer
          minimum: 5
          maximum: 1440
          default: 30
        additional_data:
          type: object
          additionalProperties: true
    CheckoutSessionResponse:
      type: object
      properties:
        order_id:
          type: string
          format: uuid
        checkout_id:
          type: string
          format: uuid
        checkout_url:
          type: string
          format: uri
        status:
          type: string
          example: new
    Error:
      type: object
      properties:
        message:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              error_code:
                type: string
              description:
                type: string