AlgoVoi Checkout API

The checkout API from AlgoVoi — 17 operation(s) for checkout.

Operations 17

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /checkout/{token}/verify Verify a payer's on-chain transaction for a checkout · Verify Checkout #
Ask an LLM
“How do I confirm a shopper's crypto transaction and mark the payment link as paid?”
“What happens if the transaction sent to a checkout link was for the wrong amount or chain?”
Tell an agent
Verify transaction {tx_id} against checkout {token} and mark it paid.
Check that tx {tx_id} on chain {chain} settled checkout link {token}.
GET /checkout/{token}/qr Render a QR code image for a checkout · Checkout Qr #
Ask an LLM
“Can I get a PNG QR code for a WalletConnect pairing URI on a checkout page?”
“Is there a way to show a scannable QR image without a JavaScript QR library?”
Tell an agent
Generate a QR code PNG encoding {data} for checkout {token}.
Make a scannable QR image of the WalletConnect URI {data} on checkout {token}.
GET /checkout/{token}/build-txn Build an unsigned Algorand or VOI checkout transaction · Checkout Build Txn #
Ask an LLM
“How can a wallet get an unsigned Algorand transaction to sign for a checkout via WalletConnect?”
“Do I need algosdk in the browser to build the payment transaction for a VOI checkout?”
Tell an agent
Build an unsigned payment transaction for checkout {token} sent from wallet {sender}.
Prepare the base64 unsigned txn that address {sender} should sign to pay checkout {token}.
POST /checkout/{token}/submit-txn Submit a signed Algorand or VOI checkout transaction · Checkout Submit Txn #
Ask an LLM
“Once the customer signs the Algorand transaction, how do I broadcast it to algod for this checkout?”
“What do I get back after submitting a signed VOI transaction for a payment link?”
Tell an agent
Broadcast the customer's signed transaction for checkout {token} and give me the tx id.
Submit the base64 signed Algorand txn for payment link {token} to the network.
GET /checkout/{token}/detect Detect an inbound payment for a checkout · Detect Payment #
Ask an LLM
“Can the checkout find the customer's payment on-chain without them pasting a transaction id?”
“Which chains does automatic payment detection poll, Algorand, VOI and Hedera?”
Tell an agent
Look on-chain for an incoming payment to checkout {token}.
Poll the indexer to see whether checkout {token} has received funds yet.
POST /checkout/{token}/submit-sponsored Submit a fee-sponsored checkout transaction · Submit Sponsored #
Ask an LLM
“Can the merchant's sponsor wallet pay the network fee so the customer sends a zero-fee transaction?”
“What happens if the tenant has no sponsor wallet when a sponsored payment is submitted?”
Tell an agent
Submit the customer's zero-fee signed transaction for checkout {token} through the sponsor wallet.
Pool fees from the tenant sponsor wallet and send the signed payment for checkout {token}.
POST /checkout/{token}/abandon Mark a checkout as abandoned by the customer · Abandon Checkout #
Ask an LLM
“How does a shopper walk away from a checkout so the merchant order doesn't stay pending forever?”
“Can a customer abandon a checkout without the merchant's cancel secret?”
Tell an agent destructive · confirm first
Record that the customer abandoned checkout {token}.
Flag checkout {token} as walked away by the shopper so the order shows cancelled.
POST /checkout/{token}/cancel Cancel an active checkout link as the merchant · Cancel Checkout #
Ask an LLM
“How does a merchant cancel a payment link they created?”
“Why does cancelling a checkout link require the cancel secret from link creation?”
Tell an agent destructive · confirm first
Cancel checkout link {token} using cancel secret {cancel_secret}.
Void merchant payment link {token} with secret {cancel_secret} and return the redirect URL.
GET /checkout/{token}/xchain/bridge-info List EVM source chains for bridging a checkout · Xchain Bridge Info #
Ask an LLM
“Which EVM chains can a buyer bridge USDC from to pay this checkout?”
“How much does the shopper need to send including the Allbridge bridge fee?”
Tell an agent
Show the supported bridge source chains and send amounts for checkout {token}.
Get the Allbridge fee-inclusive amount a buyer must send for checkout {token}.
POST /checkout/{token}/xchain/bridge-send Build swapAndBridge calldata for MetaMask · Xchain Bridge Send #
Ask an LLM
“How do I get the swapAndBridge calldata a MetaMask user signs to pay from an EVM chain?”
“Can the shopper choose the destination chain when bridging, or is it fixed by the merchant?”
Tell an agent
Build the bridge transaction calldata for MetaMask to pay checkout {token}.
Create the eth_sendTransaction payload that bridges USDC into checkout {token}.
POST /checkout/{token}/xchain/source-tx-recorded Record the source-chain bridge transaction hash · Xchain Source Tx Recorded #
Ask an LLM
“After MetaMask returns a hash for the bridge call, how do I tie it back to the checkout?”
“What happens if I record a different source transaction hash for the same bridge attempt?”
Tell an agent
Record the MetaMask source transaction hash on the bridge attempt for checkout {token}.
Advance checkout {token}'s bridge attempt to pending_bridge with the source tx hash.
GET /checkout/{token}/xchain/bridge-status/{tx_hash} Check a cross-chain bridge transfer's progress · Xchain Bridge Status #
Ask an LLM
“Has the cross-chain USDC transfer for this checkout arrived on the destination chain yet?”
“How do I poll Allbridge for completion of a bridge payment?”
Tell an agent
Check bridge status for source tx {tx_hash} on checkout {token}.
Poll whether bridge transfer {tx_hash} for checkout {token} has completed on the destination.
POST /checkout/{token}/xchain/prepare Prepare an EVM-wallet payment via LogicSig address · Xchain Prepare #
Ask an LLM
“How can someone with only an EVM wallet pay an Algorand checkout?”
“Which LogicSig address is derived for my EVM wallet, and is it funded enough?”
Tell an agent
Derive the Algorand LogicSig address for my EVM wallet and check funding on checkout {token}.
Prepare the EIP-712 payment for checkout {token} from an EVM address.
POST /checkout/{token}/xchain/prepare-optin Prepare the USDCa opt-in for an EVM wallet · Xchain Prepare Optin #
Ask an LLM
“Does the LogicSig address need to opt in to USDCa before an EVM wallet can pay?”
“Who funds the LogicSig address before the USDCa opt-in?”
Tell an agent
Fund the LogicSig address and build the USDCa opt-in message for checkout {token}.
Get the EIP-712 opt-in message my EVM wallet signs for checkout {token}.
POST /checkout/{token}/xchain/optin-submit Submit the signed USDCa opt-in transaction · Xchain Optin Submit #
Ask an LLM
“Where do I send the EVM signature for the pending USDCa opt-in?”
“What do I get back once the opt-in transaction is submitted?”
Tell an agent
Submit the signed USDCa opt-in for checkout {token} with my EVM signature.
Send the pending opt-in on checkout {token} and return the optin tx id.
POST /checkout/{token}/xchain/submit Submit the EVM-signed xChain payment · Xchain Submit #
Ask an LLM
“How do I finish an xChain checkout payment after signing the EIP-712 message?”
“Which transaction id comes back when the EVM-signed payment is submitted?”
Tell an agent
Submit the EIP-712 signed xChain payment for checkout {token}.
Send the pending cross-wallet payment for checkout {token} using my EVM signature.
GET /checkout/{token}/status Check whether a checkout link has been paid · Checkout Status #
Ask an LLM
“Has my customer paid the payment link yet?”
“What statuses can a checkout link be in, active, paid, expired or cancelled?”
Tell an agent
Check the payment status of checkout {token}.
Tell me if link {token} is paid and where it redirects.

Documentation

Specifications

Other Resources

🔗
AgentCard
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/a2a/algovoi-co-uk-a2a.yml
🔗
AgentCard
https://pay.algovoi.co.uk/.well-known/agent-card.json
🔗
LLMsTxt
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/llms/algovoi-co-uk-pay-llms.txt
🔗
LLMsTxt
https://pay.algovoi.co.uk/llms.txt
🔗
Conventions
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/conventions/algovoi-co-uk-conventions.yml
🔗
Idempotency
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/conventions/algovoi-co-uk-conventions.yml
🔗
ErrorCatalog
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/errors/algovoi-co-uk-problem-types.yml
🔗
Plans
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/plans/algovoi-co-uk-plans-pricing.yml
🔗
Sandbox
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/sandbox/algovoi-co-uk-sandbox.yml
🔗
ErrorCodes
https://docs.algovoi.co.uk/api-reference/errors
🔗
Webhooks
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/asyncapi/algovoi-co-uk-webhooks.yml
🔗
Webhooks
https://docs.algovoi.co.uk/integrations/outbound-webhooks
🔗
DataModel
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/data-model/algovoi-co-uk-data-model.yml
🔗
AgentCard
https://api.algovoi.co.uk/.well-known/agent-card.json
🔗
SignUp
https://dash.algovoi.co.uk/signup
🔗
Components
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/components/algovoi-co-uk-components.yml
🔗
AgentCard
https://agents.algovoi.co.uk/.well-known/agent-card.json
🔗
LLMsTxt
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/llms/algovoi-co-uk-clinic-llms.txt
🔗
LLMsTxt
https://agents.algovoi.co.uk/llms.txt
🔗
Dashboard
https://agent-trust-bench.algovoi.co.uk/stats
🔗
SourceCode
https://github.com/chopmob-cloud/algovoi-audit-verifier
🔗
ToolCrosswalk
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/mcp/algovoi-co-uk-tool-crosswalk.yml
🔗
SourceCode
https://github.com/chopmob-cloud/AlgoVoi-MCP-Server
🔗
Packages
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/packages/algovoi-co-uk-packages.yml

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/algovoi-co-uk:algovoi-co-uk-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

algovoi-co-uk-checkout-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AlgoVoi Gateway Checkout API
  description: Public-facing x402 payment gateway.
  version: 1.0.0-phase1c
  x-guidance: To access payment-gated resources, send the required payment proof header. Use GET /mpp/{resource_id} for MPP or GET /protected/{resource_id} for x402.
tags:
- name: Checkout
paths:
  /checkout/{token}/verify:
    post:
      tags:
      - Checkout
      summary: Verify Checkout
      description: 'Verify the payer''s on-chain transaction and mark the payment link paid.


        The payer must have sent exactly the required amount to the receiver address

        on the correct chain. The facilitator performs the on-chain verification.


        Returns the redirect_url on success so the browser JS can redirect.

        Returns 422 if the transaction is invalid or cannot be verified.

        Returns 409 if the link is already paid.

        Returns 410 if the link is expired or cancelled.'
      operationId: verify_checkout_checkout__token__verify_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckoutVerifyRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutVerifyResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/qr:
    get:
      tags:
      - Checkout
      summary: Checkout Qr
      description: 'Generate a QR code PNG for any short string (used for WalletConnect pairing URIs).

        Returns image/png so the browser can use it as without any JS QR library.'
      operationId: checkout_qr_checkout__token__qr_get
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      - name: data
        in: query
        required: true
        schema:
          type: string
          title: Data
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/build-txn:
    get:
      tags:
      - Checkout
      summary: Checkout Build Txn
      description: 'Build an unsigned Algorand/VOI transaction for WalletConnect signing.

        Caller supplies ?sender=. Returns {unsigned_txn: } ready

        to pass straight to algo_signTxn — no algosdk needed in the browser.'
      operationId: checkout_build_txn_checkout__token__build_txn_get
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      - name: sender
        in: query
        required: true
        schema:
          type: string
          title: Sender
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/submit-txn:
    post:
      tags:
      - Checkout
      summary: Checkout Submit Txn
      description: 'Accept a base64-encoded signed Algorand/VOI transaction, submit it to algod,

        and return the tx_id for verification via the existing /verify endpoint.'
      operationId: checkout_submit_txn_checkout__token__submit_txn_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/detect:
    get:
      tags:
      - Checkout
      summary: Detect Payment
      description: 'Auto-detect inbound payment by polling the chain''s indexer/mirror node.


        Supports all chains:

        - Algorand/VOI: queries indexer /v2/transactions?address=...¬e-prefix=...

        - Hedera: queries Mirror Node /api/v1/transactions?account.id=...


        Returns {"found": true, "tx_id": "..."} when detected, or {"found": false}.'
      operationId: detect_payment_checkout__token__detect_get
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/submit-sponsored:
    post:
      tags:
      - Checkout
      summary: Submit Sponsored
      description: 'Accept a customer''s signed 0-fee transaction and submit it via the

        tenant''s sponsor wallet (atomic group fee pooling).


        Body: { "signed_tx": base64, "chain": "algorand-mainnet" | "voi-mainnet" }


        If the tenant has no sponsor wallet configured, returns

        {"error": "not_sponsored", "fallback": true} so the client can fall back

        to normal payment flow.'
      operationId: submit_sponsored_checkout__token__submit_sponsored_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              title: Body
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/abandon:
    post:
      tags:
      - Checkout
      summary: Abandon Checkout
      description: 'Customer-initiated checkout abandonment.


        No `cancel_secret` required: anyone who has the checkout URL can already

        walk away from their own checkout. This endpoint just makes the

        abandonment EXPLICIT to the platform — without it, the merchant order

        stays in `Pending` indefinitely, and OpenCart''s `algovoi.callback`

        polling our `/status` would still see `active`, leading to confusing

        UX where a cancelled checkout returns to the merchant''s checkout page

        instead of the merchant''s "order cancelled" page.


        Only `active` links can be abandoned:

        * `paid` → 409 Conflict (let the JS show "Payment confirmed" instead)

        * `cancelled`→ 200 (idempotent — already cancelled)

        * `expired` → 410 Gone


        On success: marks `link.status = ''cancelled''` AND notifies the merchant

        platform (OpenCart etc.) to mark the order as Cancelled on their side.

        Always returns the redirect_url so the JS can wire the "Return to store"

        link target.'
      operationId: abandon_checkout_checkout__token__abandon_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/cancel:
    post:
      tags:
      - Checkout
      summary: Cancel Checkout
      description: 'Cancel an active checkout link. Sets status to ''cancelled''.


        F5 security fix: requires cancel_secret in the request body. The secret

        is generated at link-creation time and returned to the merchant only —

        it is never embedded in the public checkout page. This prevents an

        attacker who merely knows the checkout URL from cancelling the link.


        Only active links can be cancelled. Paid/expired/already-cancelled links

        return 409/410. Returns redirect_url so callers can redirect customers.'
      operationId: cancel_checkout_checkout__token__cancel_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelCheckoutRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/xchain/bridge-info:
    get:
      tags:
      - Checkout
      summary: Xchain Bridge Info
      description: 'Return all EVM chains Allbridge supports as bridge SOURCES for the

        tenant''s configured destination chain (Algorand USDCa or Solana USDC),

        pre-computed with the exact send amount (checkout amount + bridge fee).


        Also returns the destination metadata so the frontend can render the

        right "USDC on " label without a second round-trip.'
      operationId: xchain_bridge_info_checkout__token__xchain_bridge_info_get
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/xchain/bridge-send:
    post:
      tags:
      - Checkout
      summary: Xchain Bridge Send
      description: 'Build the swapAndBridge calldata server-side and return it for MetaMask to sign.


        Body schema:

        Required: evm_address, chain_id, usdc_address, bridge_amount

        One of: algo_address (legacy field name, used for Algorand destination)

        recipient_address (preferred — works for any destination)


        Returns: { to, data, value } — pass directly to eth_sendTransaction.


        The destination chain is taken from the tenant''s xchain_destination_chain

        setting; the frontend doesn''t pass it (and shouldn''t be allowed to,

        because that would let a hostile shopper redirect bridge inflow to a

        different chain).'
      operationId: xchain_bridge_send_checkout__token__xchain_bridge_send_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/xchain/source-tx-recorded:
    post:
      tags:
      - Checkout
      summary: Xchain Source Tx Recorded
      description: 'Called by the frontend immediately after MetaMask returns a tx hash for

        the swapAndBridge call. Records the source_tx_hash on the bridge-attempt

        row, advancing its state from `pending_signature` to `pending_bridge`.


        Body: { attempt_id: int, source_tx_hash: str }


        Idempotent: re-POSTing with the same source_tx_hash for the same

        attempt is a no-op. Mismatched source_tx_hash on a row that already has

        one is rejected with 400 — exactly one source tx per attempt.


        Per Comet review 2026-05-04 — without this, AlgoVoi can''t reconcile

        Allbridge''s destination tx back to the shopper''s checkout.'
      operationId: xchain_source_tx_recorded_checkout__token__xchain_source_tx_recorded_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/xchain/bridge-status/{tx_hash}:
    get:
      tags:
      - Checkout
      summary: Xchain Bridge Status
      description: 'Poll Allbridge for cross-chain transfer completion + advance the

        bridge-attempt lifecycle.


        Reads `tx_hash` as the SOURCE-chain tx (the one MetaMask returned).

        Looks up the persisted attempt by source_tx_hash, polls Allbridge,

        and on completion records the destination tx hash on the attempt

        row so the verifier can run against the SPECIFIC dest tx (not "any

        matching tx in window").


        Idempotent — repeated polls only update DB state on transitions.'
      operationId: xchain_bridge_status_checkout__token__xchain_bridge_status__tx_hash__get
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      - name: tx_hash
        in: path
        required: true
        schema:
          type: string
          title: Tx Hash
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/xchain/prepare:
    post:
      tags:
      - Checkout
      summary: Xchain Prepare
      description: 'Derive the Algorand LogicSig address for an EVM wallet and check funding.

        If sufficiently funded, builds the unsigned payment tx ready for EIP-712 signing.

        Body: { "evm_address": "0x..." }'
      operationId: xchain_prepare_checkout__token__xchain_prepare_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/xchain/prepare-optin:
    post:
      tags:
      - Checkout
      summary: Xchain Prepare Optin
      description: 'Fund the LogicSig address from the platform sponsor wallet and build an

        unsigned USDCa opt-in transaction for EIP-712 signing.

        Body: { "evm_address": "0x..." }

        Returns: { "eip712_message": {...} }'
      operationId: xchain_prepare_optin_checkout__token__xchain_prepare_optin_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/xchain/optin-submit:
    post:
      tags:
      - Checkout
      summary: Xchain Optin Submit
      description: 'Sign and submit the pending USDCa opt-in transaction.

        Body: { "evm_address": "0x...", "signature": "0x..." }

        Returns: { "optin_tx_id": "..." }'
      operationId: xchain_optin_submit_checkout__token__xchain_optin_submit_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/xchain/submit:
    post:
      tags:
      - Checkout
      summary: Xchain Submit
      description: 'Sign and submit the pending xChain transaction using the EVM wallet''s EIP-712 signature.

        Body: { "evm_address": "0x...", "signature": "0x..." }

        Returns { "tx_id": "..." }'
      operationId: xchain_submit_checkout__token__xchain_submit_post
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /checkout/{token}/status:
    get:
      tags:
      - Checkout
      summary: Checkout Status
      description: 'Polling endpoint — returns whether the link has been paid.


        Safe to call repeatedly; does not mutate state.

        Returns { "status": "active"|"paid"|"expired"|"cancelled", "redirect_url": str|null }'
      operationId: checkout_status_checkout__token__status_get
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
components:
  schemas:
    CheckoutVerifyRequest:
      properties:
        tx_id:
          type: string
          maxLength: 100
          minLength: 10
          title: Tx Id
        chain:
          anyOf:
          - type: string
          - type: 'null'
          title: Chain
      type: object
      required:
      - tx_id
      title: CheckoutVerifyRequest
      description: Body for POST /checkout/{token}/verify (gateway-side, unauthenticated).
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    CancelCheckoutRequest:
      properties:
        cancel_secret:
          type: string
          maxLength: 128
          minLength: 1
          title: Cancel Secret
      type: object
      required:
      - cancel_secret
      title: CancelCheckoutRequest
      description: 'Body for POST /checkout/{token}/cancel (gateway-side).


        F5 security fix: the cancel endpoint now requires cancel_secret so that

        only the merchant (who received cancel_secret at link-creation time) can

        cancel a link programmatically. Customers use the in-browser ''abandon''

        flow which navigates them away without touching the backend.'
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    CheckoutVerifyResponse:
      properties:
        payment_ledger_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Payment Ledger Id
        status:
          type: string
          title: Status
        redirect_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Redirect Url
        settlement_attestation:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Settlement Attestation
        settlement_attestation_jws:
          anyOf:
          - type: string
          - type: 'null'
          title: Settlement Attestation Jws
      type: object
      required:
      - status
      title: CheckoutVerifyResponse
      description: Successful verification response.
x-discovery:
  ownershipProofs:
  - eb10b2d7fb1e2fcbea7a4c5b031e339daacc7cf37d1fb569c58849287c121633
  resources:
  - https://api.algovoi.co.uk/mpp/probe
  resourcesCatalog: https://api.algovoi.co.uk/discovery/resources