Lightspark Transactions API

Endpoints for retrieving transaction information

Operations 5

GET /transactions List transactions #
GET /transactions/{transactionId} Get transaction by ID #
POST /transactions/{transactionId}/confirm Confirm receipt delivery #
POST /transactions/{transactionId}/approve Approve a pending incoming payment #
POST /transactions/{transactionId}/reject Reject a pending incoming payment #

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/lightspark-transactions-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

lightspark-transactions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Grid Transactions API
  description: 'API for managing global payments on the open Money Grid. Built by Lightspark. See the full documentation at https://docs.lightspark.com/.

    '
  version: '2025-10-13'
  contact:
    name: Lightspark Support
    email: support@lightspark.com
  license:
    name: Proprietary
    url: https://lightspark.com/terms
servers:
- url: https://api.lightspark.com/grid/2025-10-13
  description: Production server
security:
- BasicAuth: []
- AgentAuth: []
tags:
- name: Transactions
  description: Endpoints for retrieving transaction information
paths:
  /transactions:
    get:
      summary: List transactions
      description: 'Retrieve a paginated list of transactions with optional filtering.

        The transactions can be filtered by customer ID, platform customer ID, UMA address,

        date range, status, and transaction type.


        Card transactions are included and identified by `type: CARD`. In Sandbox this is how

        you discover a `CardTransaction` id after simulating an authorization — list the

        transactions, take the card transaction''s `id`, and pass it as the `cardTransactionId`

        to the clearing and return simulate endpoints.

        '
      operationId: listTransactions
      tags:
      - Transactions
      security:
      - BasicAuth: []
      parameters:
      - name: customerId
        in: query
        description: Filter by system customer ID. To filter to transactions made on behalf of the platform, specify the platform ID as the customer ID.
        required: false
        schema:
          type: string
      - name: platformCustomerId
        in: query
        description: Filter by platform-specific customer ID
        required: false
        schema:
          type: string
      - name: accountIdentifier
        in: query
        description: Filter by account identifier (matches either sender or receiver)
        required: false
        schema:
          type: string
      - name: senderAccountIdentifier
        in: query
        description: Filter by sender account identifier
        required: false
        schema:
          type: string
      - name: receiverAccountIdentifier
        in: query
        description: Filter by receiver account identifier
        required: false
        schema:
          type: string
      - name: status
        in: query
        description: Filter by transaction status
        required: false
        schema:
          $ref: '#/components/schemas/TransactionStatus'
      - name: type
        in: query
        description: Filter by transaction type
        required: false
        schema:
          $ref: '#/components/schemas/TransactionType'
      - name: reference
        in: query
        description: Filter by reference
        required: false
        schema:
          type: string
      - name: startDate
        in: query
        description: Filter by start date (inclusive) in ISO 8601 format
        required: false
        schema:
          type: string
          format: date-time
      - name: endDate
        in: query
        description: Filter by end date (inclusive) in ISO 8601 format
        required: false
        schema:
          type: string
          format: date-time
      - name: limit
        in: query
        description: Maximum number of results to return (default 20, max 100)
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 20
      - name: cursor
        in: query
        description: Cursor for pagination (returned from previous request)
        required: false
        schema:
          type: string
      - name: sortOrder
        in: query
        description: Order to sort results in
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionListResponse'
        '400':
          description: Bad request - Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '500':
          description: Internal service error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
  /transactions/{transactionId}:
    parameters:
    - name: transactionId
      in: path
      description: Unique identifier of the transaction
      required: true
      schema:
        type: string
    get:
      summary: Get transaction by ID
      description: Retrieve detailed information about a specific transaction.
      operationId: getTransactionById
      tags:
      - Transactions
      security:
      - BasicAuth: []
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionOneOf'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '404':
          description: Transaction not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal service error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
  /transactions/{transactionId}/confirm:
    post:
      summary: Confirm receipt delivery
      description: 'Confirm that the platform delivered the transaction receipt to its customer. This confirmation is only necessary when the platform is contractually required to send a receipt. If `receiptDeliveryConfirmedAt` is omitted, the confirmation time is set to the current server time. Calling this endpoint again for the same transaction updates the stored confirmation time.

        '
      operationId: confirmReceiptDelivery
      tags:
      - Transactions
      security:
      - BasicAuth: []
      parameters:
      - name: transactionId
        in: path
        description: Unique identifier of the transaction to confirm receipt delivery for
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmReceiptDeliveryRequest'
      responses:
        '200':
          description: Receipt delivery confirmation recorded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionOneOf'
        '400':
          description: Bad request - Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '404':
          description: Transaction not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal service error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
  /transactions/{transactionId}/approve:
    post:
      summary: Approve a pending incoming payment
      description: 'Approve a pending incoming payment that was previously acknowledged with a 202 response.

        This endpoint allows platforms to asynchronously approve payments after async processing.

        '
      operationId: approvePendingPayment
      tags:
      - Transactions
      security:
      - BasicAuth: []
      parameters:
      - name: transactionId
        in: path
        description: Unique identifier of the transaction to approve
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApprovePaymentRequest'
      responses:
        '200':
          description: Payment approved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncomingTransaction'
        '400':
          description: Bad request - Invalid parameters or payment cannot be approved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '404':
          description: Transaction not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '409':
          description: Conflict - Payment is not in a pending state or has already been processed or timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error409'
        '500':
          description: Internal service error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
  /transactions/{transactionId}/reject:
    post:
      summary: Reject a pending incoming payment
      description: 'Reject a pending incoming payment that was previously acknowledged with a 202 response.

        This endpoint allows platforms to asynchronously reject payments after additional processing.

        '
      operationId: rejectPendingPayment
      tags:
      - Transactions
      security:
      - BasicAuth: []
      parameters:
      - name: transactionId
        in: path
        description: Unique identifier of the transaction to reject
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RejectPaymentRequest'
      responses:
        '200':
          description: Payment rejected successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncomingTransaction'
        '400':
          description: Bad request - Invalid parameters or payment cannot be rejected
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '404':
          description: Transaction not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '409':
          description: Conflict - Payment is not in a pending state or has already been processed or timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error409'
        '500':
          description: Internal service error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
components:
  schemas:
    Refund:
      type: object
      required:
      - reference
      - initiatedAt
      - status
      properties:
        reference:
          type: string
          description: The unique reference ID of the refund
          example: UMA-Q12345-REFUND
        initiatedAt:
          type: string
          format: date-time
          description: When the refund was initiated
          example: '2025-08-15T14:30:00Z'
        settledAt:
          type: string
          format: date-time
          description: When the refund was settled
          example: '2025-08-15T14:35:00Z'
        status:
          type: string
          enum:
          - PENDING
          - COMPLETED
          - FAILED
          description: Current status of the refund
          example: COMPLETED
        reason:
          type: string
          enum:
          - TRANSACTION_FAILED
          - USER_CANCELLATION
          - TIMEOUT
          description: Reason for the refund
          example: TRANSACTION_FAILED
    BasePaymentAccountInfo:
      type: object
      required:
      - accountType
      properties:
        accountType:
          $ref: '#/components/schemas/PaymentAccountType'
    BdtAccountInfo:
      allOf:
      - $ref: '#/components/schemas/BdtAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - BANK_TRANSFER
              - MOBILE_MONEY
    PhpAccountInfo:
      allOf:
      - $ref: '#/components/schemas/PhpAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - BANK_TRANSFER
    XofAccountInfoBase:
      type: object
      required:
      - accountType
      - phoneNumber
      - provider
      - region
      properties:
        accountType:
          type: string
          enum:
          - XOF_ACCOUNT
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
        provider:
          type: string
          description: The mobile money provider name
          minLength: 1
          maxLength: 255
        region:
          type: string
          description: Country code within the West African CFA franc zone
          minLength: 2
          maxLength: 2
          pattern: ^[A-Z]{2}$
          enum:
          - BJ
          - CI
          - SN
          - TG
      example:
        accountType: XOF_ACCOUNT
        phoneNumber: '+1234567890'
        provider: Example Provider
        region: BJ
    PaymentEthereumWalletInfo:
      title: Ethereum Wallet
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/EthereumWalletInfo'
      - type: object
        properties:
          assetType:
            type: string
            description: Type of asset
            enum:
            - USDC
    HkdAccountInfo:
      allOf:
      - $ref: '#/components/schemas/HkdAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - BANK_TRANSFER
    PaymentUsdAccountInfo:
      title: USD Bank Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/UsdAccountInfo'
      - type: object
        required:
        - reference
        properties:
          reference:
            type: string
            description: Unique reference code that must be included with the payment to properly credit it
            example: UMA-Q12345-REF
    PaymentCadAccountInfo:
      title: CAD Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/CadAccountInfo'
      - type: object
        required:
        - reference
        properties:
          reference:
            type: string
            description: Unique reference code that must be included with the payment to properly credit it
            example: UMA-Q12345-REF
    PaymentGhsAccountInfo:
      title: GHS Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/GhsAccountInfo'
      - type: object
        required:
        - reference
        properties:
          reference:
            type: string
            description: Unique reference code that must be included with the payment to properly credit it
            example: UMA-Q12345-REF
    TransactionType:
      type: string
      enum:
      - INCOMING
      - OUTGOING
      description: Type of transaction (incoming payment or outgoing payment)
    PaymentEmbeddedWalletInfo:
      title: Embedded Wallet
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - type: object
        required:
        - accountType
        - payloadToSign
        properties:
          accountType:
            type: string
            enum:
            - EMBEDDED_WALLET
            description: Discriminator value identifying this as Embedded Wallet payment instructions.
          payloadToSign:
            type: string
            description: JSON-encoded transaction signing payload that must be stamped, as-is (byte-for-byte, without re-serialization), with the session private key of a verified authentication credential on the source Embedded Wallet. The resulting Grid wallet signature is passed as the `Grid-Wallet-Signature` header on `POST /quotes/{quoteId}/execute` to authorize the outbound transfer from the wallet.
            example: '{"type":"ACTIVITY_TYPE_SIGN_TRANSACTION_V2","timestampMs":"1746736509954","organizationId":"org_abc123","parameters":{"signWith":"wallet_abc123def456","unsignedTransaction":"ea69b4bf05f775209f26ff0a34a05569180f7936579d5c4af9377ae550194f72","type":"TRANSACTION_TYPE_ETHEREUM"},"generateAppProofs":true}'
    CardTransaction:
      title: Card Transaction
      type: object
      required:
      - type
      - id
      - status
      - direction
      - merchant
      - authorizedAmount
      - accountId
      - customerId
      - platformCustomerId
      - authorizedAt
      - createdAt
      - updatedAt
      description: Parent transaction row for a card authorization and all of the pulls / settlements / refunds that reconcile against it. Child events are rolled up into the `pullSummary`, `refundSummary`, and `settlementSummary` aggregates. Delivered as the payload of the generic transaction webhook stream (extends the Transaction model with a card destination type) on every transition.
      properties:
        type:
          type: string
          enum:
          - CARD
          description: Discriminator identifying this transaction as a card transaction in the `Transaction` list.
        id:
          type: string
          description: System-generated unique card transaction identifier
          readOnly: true
          example: CardTransaction:019542f5-b3e7-1d02-0000-000000000100
        cardId:
          type: string
          description: The id of the `Card` this transaction was made on.
          example: Card:019542f5-b3e7-1d02-0000-000000000010
        customerId:
          type: string
          description: System ID of the customer (cardholder) this transaction belongs to.
          example: Customer:019542f5-b3e7-1d02-0000-000000000001
        platformCustomerId:
          type: string
          description: Platform-specific ID of the customer (cardholder) this transaction belongs to.
          example: 18d3e5f7b4a9c2
        issuerTransactionToken:
          type: string
          description: Opaque identifier for the transaction on the underlying issuer. Used to cross-reference Grid records against issuer dashboards and webhooks.
          example: lithic_txn_b81c2a4f
          readOnly: true
        status:
          $ref: '#/components/schemas/CardTransactionStatus'
        direction:
          $ref: '#/components/schemas/TransactionDirection'
          description: Card transactions debit the customer's account.
          example: DEBIT
        merchant:
          $ref: '#/components/schemas/CardMerchant'
        authorizedAmount:
          $ref: '#/components/schemas/CurrencyAmount'
        settledAmount:
          $ref: '#/components/schemas/CurrencyAmount'
        refundedAmount:
          $ref: '#/components/schemas/CurrencyAmount'
        accountId:
          type: string
          description: Internal account id that funded this transaction (the funding source selected by Authorization Decisioning at auth time).
          example: InternalAccount:019542f5-b3e7-1d02-0000-000000000002
        pullSummary:
          $ref: '#/components/schemas/CardPullSummary'
        refundSummary:
          $ref: '#/components/schemas/CardRefundSummary'
        settlementSummary:
          $ref: '#/components/schemas/CardSettlementSummary'
        authorizedAt:
          type: string
          format: date-time
          description: When the auth was approved.
          example: '2026-05-08T14:30:00Z'
        lastEventAt:
          type: string
          format: date-time
          description: Timestamp of the most recent reconcile event (pull / clearing / refund) against this transaction.
          example: '2026-05-08T15:42:11Z'
        createdAt:
          type: string
          format: date-time
          description: Creation timestamp (same as `authorizedAt` for card transactions).
          readOnly: true
          example: '2026-05-08T14:30:00Z'
        updatedAt:
          type: string
          format: date-time
          description: Last update timestamp.
          readOnly: true
          example: '2026-05-08T15:42:11Z'
    UgxAccountInfo:
      allOf:
      - $ref: '#/components/schemas/UgxAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - MOBILE_MONEY
    MyrAccountInfoBase:
      type: object
      required:
      - accountType
      - bankName
      - accountNumber
      - swiftCode
      properties:
        accountType:
          type: string
          enum:
          - MYR_ACCOUNT
        bankName:
          type: string
          description: The name of the bank
          minLength: 1
          maxLength: 255
        accountNumber:
          type: string
          description: Malaysian bank account number
          minLength: 1
          maxLength: 34
          example: '1234567890'
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: MABORUMMYYY
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: MYR_ACCOUNT
        bankName: Example Bank
        accountNumber: '1234567890'
        swiftCode: MABORUMMYYY
    TransactionOneOf:
      oneOf:
      - $ref: '#/components/schemas/IncomingTransaction'
      - $ref: '#/components/schemas/OutgoingTransaction'
      - $ref: '#/components/schemas/CardTransaction'
      discriminator:
        propertyName: type
        mapping:
          INCOMING: '#/components/schemas/IncomingTransaction'
          OUTGOING: '#/components/schemas/OutgoingTransaction'
          CARD: '#/components/schemas/CardTransaction'
    HkdAccountInfoBase:
      type: object
      required:
      - accountType
      - bankName
      - accountNumber
      - swiftCode
      properties:
        accountType:
          type: string
          enum:
          - HKD_ACCOUNT
        bankName:
          type: string
          description: The name of the bank
          minLength: 1
          maxLength: 255
        accountNumber:
          type: string
          description: Hong Kong bank account number
          minLength: 1
          maxLength: 34
          example: '123456789012'
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: HSBCHKHHHKH
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: HKD_ACCOUNT
        bankName: Example Bank
        accountNumber: '123456789012'
        swiftCode: HSBCHKHHHKH
    PaymentUgxAccountInfo:
      title: UGX Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/UgxAccountInfo'
      - type: object
        required:
        - reference
        properties:
          reference:
            type: string
            description: Unique reference code that must be included with the payment to properly credit it
            example: UMA-Q12345-REF
    UsdAccountInfoBase:
      type: object
      required:
      - accountType
      - accountNumber
      - routingNumber
      properties:
        accountType:
          type: string
          enum:
          - USD_ACCOUNT
        accountNumber:
          type: string
          description: The account number of the bank
          minLength: 1
          maxLength: 34
        routingNumber:
          type: string
          description: The ABA routing number
          example: '021000021'
          minLength: 9
          maxLength: 9
          pattern: ^[0-9]{9}$
      example:
        accountType: USD_ACCOUNT
        accountNumber: '1234567890'
        routingNumber: '021000021'
    PaymentBaseWalletInfo:
      title: Base Wallet
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/BaseWalletInfo'
      - type: object
        properties:
          assetType:
            type: string
            description: Type of asset
            enum:
            - USDC
    EgpAccountInfo:
      allOf:
      - $ref: '#/components/schemas/EgpAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - BANK_TRANSFER
              - MOBILE_MONEY
    AccountTransactionSource:
      title: Account Source
      allOf:
      - $ref: '#/components/schemas/BaseTransactionSource'
      - type: object
        required:
        - accountId
        - sourceType
        properties:
          sourceType:
            type: string
            enum:
            - ACCOUNT
          accountId:
            type: string
            description: Source account identifier
            example: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965
          onChainTransaction:
            $ref: '#/components/schemas/OnChainTransaction'
            description: On-chain transaction that delivered funds from this source, when the source is an external crypto wallet. Populated once the crypto transfer has settled.
        description: Source account details
    IncomingTransactionFailureReason:
      type: string
      enum:
      - LNURLP_FAILED
      - PAY_REQUEST_FAILED
      - PAYMENT_APPROVAL_WEBHOOK_ERROR
      - PAYMENT_APPROVAL_TIMED_OUT
      - OFFRAMP_FAILED
      - MISSING_MANDATORY_PAYEE_DATA
      - QUOTE_EXPIRED
      - QUOTE_EXECUTION_FAILED
      description: Reason for failure of an incoming transaction. This is used to provide more context on why a transaction failed. If the transaction is not in a failed state, this field is omitted.
    GtqAccountInfo:
      allOf:
      - $ref: '#/components/schemas/GtqAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - BANK_TRANSFER
    BaseTransactionSource:
      type: object
      required:
      - sourceType
      properties:
        sourceType:
          $ref: '#/components/schemas/TransactionSourceType'
        currency:
          type: string
          description: Currency code for the source
          example: USD
    IdrAccountInfoBase:
      type: object
      required:
      - accountType
      - bankName
      - accountNumber
      - swiftCode
      - phoneNumber
      properties:
        accountType:
          type: string
          enum:
          - IDR_ACCOUNT
        bankName:
          type: string
          description: The name of the bank
          minLength: 1
          maxLength: 255
          example: Bank Central Asia
        accountNumber:
          type: string
          description: Indonesian bank account number
          minLength: 1
          maxLength: 34
          example: '1234567890'
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: CENAIDJA
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
        phoneNumber:
          type: string
          description: Indonesian phone number for e-wallet payments
          example: '+6281234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+62[0-9]{9,12}$
      example:
        accountType: IDR_ACCOUNT
        bankName: Bank Central Asia
        accountNumber: '1234567890'
        swiftCode: CENAIDJA
        phoneNumber: '+6281234567890'
    JmdAccountInfo:
      allOf:
      - $ref: '#/components/schemas/JmdAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - BANK_TRANSFER
    Error500:
      type: object
      required:
      - message
      - status
      - code
      properties:
        status:
          type: integer
          enum:
          - 500
          description: HTTP status code
        code:
          type: string
          description: '| Error Code | Description |

            |------------|-------------|

            | GRID_SWITCH_ERROR | Grid switch error |

            | INTERNAL_ERROR | Internal server or UMA error |

            '
          enum:
          - GRID_SWITCH_ERROR
          - INTERNAL_ERROR
        message:
          type: string
          description: Error message
        details:
          type: object
          description: Additional error details
          additionalProperties: true
    AedAccountInfoBase:
      type: object
      required:
      - accountType
      - iban
      properties:
        accountType:
          type: string
          enum:
          - AED_ACCOUNT
        iban:
          type: string
          description: UAE IBAN (23 characters, starting with AE)
          example: AE070331234567890123456
          minLength: 23
          maxLength: 23
          pattern: ^AE[0-9]{21}$
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: EBILAEAD
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: AED_ACCOUNT
        iban: AE070331234567890123456
        swiftCode: EBILAEAD
    PaymentBrlAccountInfo:
      title: BRL Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - type: object
        required:
        - qrCode
        properties:
          accountType:
            type: string
            enum:
            - BRL_ACCOUNT
          qrCode:
            type: string
            description: A PIX QR code payload that can be used to fund the transaction. This can be rendered as a QR code image or pasted into a PIX-compatible banking app.
            minLength: 1
    PaymentHkdAccountInfo:
      title: HKD Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/HkdAccountInfo'
      - type: object
        required:
        - reference
        properties:
          reference:
            type: string
            description: Unique reference code that must be included with the payment to properly credit it
            example: UMA-Q12345-REF
    CardRefundSummary:
      type: object
      required:
      - count
      - totalAmount
      properties:
        count:
          type: integer
          description: Number of refund (return) events received for this transaction.
          example

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