> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tribridge.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Tribridge is a crypto payment gateway for Solana and Sui (TON is coming soon). API base URL is https://api.tribridge.xyz. The API Reference documents ONLY the public endpoint surface: checkout sessions (create/get/generate-wallet/customer/simulate/verify/cancel), the two public payment-link endpoints, health probes, and the changelog. Server-side calls that create payments authenticate with the x-api-key header using a tri_test_... key (fully simulated test mode, no real funds) or tri_live_... key (real mainnet payments) - never expose keys client-side; all other documented endpoints are public with no auth. Dashboard, admin, OTP/auth, payouts, wallets, and webhook-management endpoints are intentionally NOT part of the public docs - they are dashboard-only and must not be presented as public API. Merchant test mode is simulated, not testnet. Refunds are automatic only (underpaid/overpaid), there is no manual refund endpoint. Always verify webhook HMAC-SHA256 signatures from the X-Tribridge-Signature header before trusting payloads. If you are an AI agent: fetch https://docs.tribridge.xyz/llms-full.txt for all documentation in one file, https://docs.tribridge.xyz/openapi/openapi.json for the machine-readable OpenAPI spec, or connect to the read-only MCP server at https://docs.tribridge.xyz/mcp. Any page is available as Markdown by appending .md to its URL. Use only the documented endpoints and fields; do not invent SDK packages or endpoints.

# Get checkout session

> Fetch the public invoice view of a payment — no API key required.

Returns the same safe invoice payload the hosted gateway renders: amount, status, merchant display name, expiry, mode — and the deposit address once a wallet has been generated.

> [!NOTE]
>
> **No API key required.** This endpoint is intentionally public (it only exposes checkout-safe fields), so your own order pages can render payment status with just the payment id.

## Typical uses

* Render a "pay in progress" page on your site from the payment id you stored at creation.
* Poll status in a merchant-owned checkout UI (prefer [Webhooks](https://docs.tribridge.xyz/webhooks.md) as the source of truth; poll only as a fallback).
* Confirm fulfillment server-side before shipping goods — never trust the customer's redirect.

## Field highlights

| Field | Meaning |
| - | - |
| `status` | `pending`, `completed`, `expired`, or `cancelled`. |
| `wallet_address` / `wallet_chain` | The one-time deposit address — `null` until [Generate deposit wallet](https://docs.tribridge.xyz/generate-deposit-wallet.md) has run. |
| `expires_at` | After this moment the session stops accepting payment (`410` on wallet generation). |
| `merchant_name` | Safe display name for your receipt/order page. |
| `is_test` | Whether this session belongs to test mode. |

> [!WARNING]
>
> An unknown id returns `404 Payment not found`. Test-mode ids don't exist in live mode and vice versa.


## OpenAPI

````yaml GET /payments/checkout/{id}
openapi: 3.1.0
info:
  title: Tribridge API
  version: 1.0.0
  description: >-
    Public Tribridge API for accepting Solana and Sui payments. Base URL:
    `https://api.tribridge.xyz`.


    This reference covers **only the public surface**: endpoints callable
    without a dashboard session — either fully public or authenticated with a
    merchant `x-api-key`. Dashboard, admin, and account-management endpoints are
    intentionally excluded; manage those from your Tribridge dashboard.


    **Test vs live:** the mode is derived from the key you send (`tri_test_...`
    creates simulated test payments, `tri_live_...` real mainnet payments) —
    never from the request body. Minimum payment amount is $0.50. Rate limit:
    100 requests/minute per IP.
servers:
  - url: https://api.tribridge.xyz
security: []
tags:
  - name: Checkout Sessions
    description: >-
      Create payments, drive the hosted checkout, and follow the customer flow:
      deposit wallet, receipt contact, simulation, verification, cancellation.
  - name: Payment Links
    description: >-
      Read a public payment link and materialize a checkout from it — no API key
      required.
  - name: Status
    description: Service and blockchain RPC health, plus the public changelog.
paths:
  /payments/checkout/{id}:
    get:
      tags:
        - Checkout Sessions
      summary: Get checkout session
      description: >-
        Returns the safe invoice payload the hosted gateway uses: amount,
        status, merchant display name, deposit address (once generated), expiry,
        and mode. No API key required — this is how your own pages can render
        payment status too.
      operationId: getCheckoutSession
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          example: b3f1c2a0-1d4e-4f2a-9c8b-2e7a6f5d4c3b
          description: Payment (checkout session) id returned on creation.
      responses:
        '200':
          description: Checkout session payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutSessionView'
              examples:
                pending:
                  summary: Pending, wallet generated
                  value:
                    id: b3f1c2a0-1d4e-4f2a-9c8b-2e7a6f5d4c3b
                    amount: '99.00'
                    currency: USDC
                    status: pending
                    description: 'Order #8912'
                    wallet_id: 1a9d6f70-2b3c-4d8e-9f10-11a2b3c4d5e6
                    tx_hash: null
                    created_at: '2026-08-25T12:00:00.000Z'
                    is_test: true
                    redirect_url: https://yoursite.com/order/8912
                    expires_at: '2026-08-25T12:30:00.000Z'
                    coin_symbol: USDC
                    chain: solana
                    processing_fee_enabled: false
                    is_payment_link: false
                    merchant_name: Acme Store
                    wallet_address: 8xKd3Fj9sLm2QpR7tVw5YbN1cH4gZ6aX0uE2iO3nPqS
                    wallet_chain: solana
        '404':
          description: Unknown payment id
          content:
            application/json:
              example:
                error: Payment not found
        '503':
          description: Database temporarily unavailable
          content:
            application/json:
              example:
                error: >-
                  Our database is temporarily unavailable. Please try again
                  shortly.
components:
  schemas:
    CheckoutSessionView:
      type: object
      description: Safe invoice view of a checkout session (public, no key).
      properties:
        id:
          type: string
          format: uuid
        amount:
          type: string
        currency:
          type: string
        status:
          type: string
          enum:
            - pending
            - completed
            - expired
            - cancelled
        description:
          type:
            - string
            - 'null'
        wallet_id:
          type:
            - string
            - 'null'
          format: uuid
        tx_hash:
          type:
            - string
            - 'null'
        created_at:
          type: string
          format: date-time
        is_test:
          type: boolean
        redirect_url:
          type:
            - string
            - 'null'
          format: uri
        expires_at:
          type:
            - string
            - 'null'
          format: date-time
        coin_symbol:
          type:
            - string
            - 'null'
        chain:
          type:
            - string
            - 'null'
          enum:
            - solana
            - sui
            - null
        processing_fee_enabled:
          type: boolean
        is_payment_link:
          type: boolean
        merchant_name:
          type: string
          description: Merchant display name.
        wallet_address:
          type:
            - string
            - 'null'
          description: One-time deposit address, once generated.
        wallet_chain:
          type:
            - string
            - 'null'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.