Lightspark Transactions API

Endpoints for retrieving transaction information

OpenAPI Specification

lightspark-transactions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Grid Agent Management 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:
    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}'
    EurAccountInfoBase:
      type: object
      required:
      - accountType
      - iban
      properties:
        accountType:
          type: string
          enum:
          - EUR_ACCOUNT
        iban:
          type: string
          description: The IBAN of the bank account
          example: DE89370400440532013000
          minLength: 15
          maxLength: 34
          pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: DEUTDEFF
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: EUR_ACCOUNT
        iban: DE89370400440532013000
        swiftCode: DEUTDEFF
    PaymentBwpAccountInfo:
      title: BWP Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/BwpAccountInfo'
      - 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
    PaymentSlvAccountInfo:
      title: SLV Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/SlvAccountInfo'
      - 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
    PaymentVndAccountInfo:
      title: VND Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/VndAccountInfo'
      - 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
    TzsAccountInfo:
      allOf:
      - $ref: '#/components/schemas/TzsAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - MOBILE_MONEY
    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
    PaymentJmdAccountInfo:
      title: JMD Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/JmdAccountInfo'
      - 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
    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
    TransactionStatus:
      type: string
      enum:
      - CREATED
      - PENDING
      - PENDING_AUTHORIZATION
      - PROCESSING
      - COMPLETED
      - REJECTED
      - FAILED
      - REFUNDED
      - EXPIRED
      description: 'Status of a payment transaction.


        | Status | Description |

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

        | `CREATED` | Initial lookup has been created |

        | `PENDING` | Quote has been created |

        | `PENDING_AUTHORIZATION` | Awaiting Strong Customer Authentication. Only occurs for customers in a region where SCA is required (e.g. EU); authorize the transaction''s `scaChallenge` to proceed. |

        | `PROCESSING` | Funding has been received and payment initiated |

        | `COMPLETED` | Cross border payment has been received, converted and payment has been sent to the offramp network |

        | `REJECTED` | Receiving institution or wallet rejected payment, payment has been refunded |

        | `FAILED` | An error occurred during payment |

        | `REFUNDED` | Payment was unable to complete and refunded |

        | `EXPIRED` | Quote has expired |

        '
    Error404:
      type: object
      required:
      - message
      - status
      - code
      properties:
        status:
          type: integer
          enum:
          - 404
          description: HTTP status code
        code:
          type: string
          description: '| Error Code | Description |

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

            | TRANSACTION_NOT_FOUND | Transaction not found |

            | INVITATION_NOT_FOUND | Invitation not found |

            | USER_NOT_FOUND | Customer not found |

            | QUOTE_NOT_FOUND | Quote not found |

            | LOOKUP_REQUEST_NOT_FOUND | Lookup request not found |

            | TOKEN_NOT_FOUND | Token not found |

            | BULK_UPLOAD_JOB_NOT_FOUND | Bulk upload job not found |

            | REFERENCE_NOT_FOUND | Reference not found |

            | UMA_NOT_FOUND | The UMA address is well-formed but no receiver exists at the counterparty VASP |

            | STABLECOIN_PROVIDER_ACCOUNT_NOT_FOUND | Stablecoin provider account link not found |

            '
          enum:
          - TRANSACTION_NOT_FOUND
          - INVITATION_NOT_FOUND
          - USER_NOT_FOUND
          - QUOTE_NOT_FOUND
          - LOOKUP_REQUEST_NOT_FOUND
          - TOKEN_NOT_FOUND
          - BULK_UPLOAD_JOB_NOT_FOUND
          - REFERENCE_NOT_FOUND
          - UMA_NOT_FOUND
          - STABLECOIN_PROVIDER_ACCOUNT_NOT_FOUND
        message:
          type: string
          description: Error message
        details:
          type: object
          description: Additional error details
          additionalProperties: true
    InrAccountInfo:
      allOf:
      - $ref: '#/components/schemas/InrAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - UPI
              - NEFT
              - RTGS
    BaseTransactionDestination:
      type: object
      required:
      - destinationType
      properties:
        destinationType:
          $ref: '#/components/schemas/TransactionDestinationType'
        currency:
          type: string
          description: Currency code for the destination
          example: EUR
    GtqAccountInfoBase:
      type: object
      required:
      - accountType
      - accountNumber
      - bankAccountType
      - bankName
      properties:
        accountType:
          type: string
          enum:
          - GTQ_ACCOUNT
        accountNumber:
          type: string
          description: The account number of the bank
          minLength: 1
          maxLength: 34
        bankAccountType:
          type: string
          description: The bank account type
          enum:
          - CHECKING
          - SAVINGS
        bankName:
          type: string
          description: The name of the beneficiary's bank
          minLength: 1
          maxLength: 255
      example:
        accountType: GTQ_ACCOUNT
        accountNumber: '1234567890'
        bankAccountType: CHECKING
        bankName: Example Bank
    CadAccountInfoBase:
      type: object
      required:
      - accountType
      - bankCode
      - branchCode
      - accountNumber
      properties:
        accountType:
          type: string
          enum:
          - CAD_ACCOUNT
        bankCode:
          type: string
          description: Canadian financial institution number (3 digits)
          example: '001'
          minLength: 3
          maxLength: 3
          pattern: ^[0-9]{3}$
        branchCode:
          type: string
          description: Transit number identifying the branch (5 digits)
          example: '00012'
          minLength: 5
          maxLength: 5
          pattern: ^[0-9]{5}$
        accountNumber:
          type: string
          description: Bank account number (7-12 digits)
          example: '1234567'
          minLength: 7
          maxLength: 12
          pattern: ^[0-9]{7,12}$
    EgpAccountInfo:
      allOf:
      - $ref: '#/components/schemas/EgpAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - BANK_TRANSFER
              - MOBILE_MONEY
    PaymentNgnAccountInfo:
      title: NGN Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/NgnAccountInfo'
      - 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
    PaymentHtgAccountInfo:
      title: HTG Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/HtgAccountInfo'
      - 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
    BaseWalletInfo:
      type: object
      required:
      - address
      - accountType
      properties:
        accountType:
          type: string
          enum:
          - BASE_WALLET
        address:
          type: string
          description: Base eth wallet address
          example: '0xAbCDEF1234567890aBCdEf1234567890ABcDef12'
    PaymentEgpAccountInfo:
      title: EGP Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/EgpAccountInfo'
      - 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
    GbpAccountInfoBase:
      type: object
      required:
      - accountType
      - sortCode
      - accountNumber
      properties:
        accountType:
          type: string
          enum:
          - GBP_ACCOUNT
        sortCode:
          type: string
          description: The UK sort code
          example: '123456'
          minLength: 6
          maxLength: 6
          pattern: ^[0-9]{6}$
        accountNumber:
          type: string
          description: UK bank account number (8 digits)
          minLength: 8
          maxLength: 8
          example: '12345678'
          pattern: ^[0-9]{8}$
      example:
        accountType: GBP_ACCOUNT
        sortCode: '123456'
        accountNumber: '12345678'
    PaymentRail:
      type: string
      enum:
      - ACH
      - ACH_COLOMBIA
      - BANK_TRANSFER
      - BRE_B
      - CIPS
      - FAST
      - FASTER_PAYMENTS
      - FEDNOW
      - INSTAPAY
      - MOBILE_MONEY
      - NEFT
      - PAYNOW
      - PESONET
      - PIX
      - RTGS
      - RTP
      - SEPA
      - SEPA_INSTANT
      - SPEI
      - SWIFT
      - UNIONPAY
      - UPI
      - WIRE
      description: The payment rail used for the transfer. Payment rails represent the underlying payment network or system used to move funds between accounts.
      example: ACH
    PaymentSparkWalletInfo:
      title: Spark Wallet
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/SparkWalletInfo'
      - type: object
        required:
        - assetType
        properties:
          assetType:
            type: string
            description: Type of asset or configured Spark token currency code
          invoice:
            type: string
            description: Invoice for the payment
            example: sparkrt1pgss8ter0fhc4c220f3zftmpz49h8wqte8eg3m5zkrraplgc048jucgszg3ssqgjzqqekv73mmh842yj7drsjwh7t7tz5zt8wf5kghm5v4ehggszppjp5s80cg3qjdzc55g2567tn3lj705hdsr577tg8ah795mlnt6807y657qhkmgfkf9w75p4wz3l8vhua85zdn6ryj32zuj0p00pv2l5z4u47mw6h4s
    ThbAccountInfo:
      allOf:
      - $ref: '#/components/schemas/ThbAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - BANK_TRANSFER
    MwkAccountInfo:
      allOf:
      - $ref: '#/components/schemas/MwkAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - MOBILE_MONEY
    OutgoingRateDetails:
      description: 'Details about the rate and fees for an outgoing transaction or quote. Note: `counterpartyFixedFee` is denominated in the receiving currency, so its equivalent value in the sending currency fluctuates with the FX rate. As a result, the total fee on a subsequent quote for the same transfer may differ even if the underlying fee structure is unchanged.'
      type: object
      required:
      - counterpartyMultiplier
      - counterpartyFixedFee
      - gridApiMultiplier
      - gridApiFixedFee
      - gridApiVariableFeeRate
      - gridApiVariableFeeAmount
      properties:
        counterpartyMultiplier:
          type: number
          format: double
          description: The underlying multiplier from mSATs to the receiving currency as returned by the counterparty institution.
          exclusiveMinimum: 0
          example: 1.08
        counterpartyFixedFee:
          type: integer
          format: int64
          description: The fixed fee charged by the counterparty institution to execute the quote in the smallest unit of the receiving currency (eg. cents).
          minimum: 0
          example: 10
        gridApiMultiplier:
          type: number
          format: double
          description: The underlying multiplier from the sending currency to mSATS, including variable fees.
          exclusiveMinimum: 0
          example: 0.925
        gridApiFixedFee:
          type: integer
          format: int64
          description: The fixed fee charged by the Grid product to execute the quote in the smallest unit of the sending currency (eg. cents).
          minimum: 0
          example: 10
        gridApiVariableFeeRate:
          type: number
          format: double
          description: The variable fee rate charged by the Grid product to execute the quote as a percentage of the sending currency amount.
          minimum: 0
          example: 0.003
        gridApiVariableFeeAmount:
          type: number
          format: int64
          description: The variable fee amount charged by the Grid product to execute the quote in the smallest unit of the sending currency (eg. cents). This is the sending amount times gridApiVariableFeeRate.
          minimum: 0
          example: 30
    XafAccountInfo:
      allOf:
      - $ref: '#/components/schemas/XafAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - MOBILE_MONEY
    PaymentPhpAccountInfo:
      title: PHP Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/PhpAccountInfo'
      - 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
    PaymentKesAccountInfo:
      title: KES Account
      allOf:
      - $ref: '#/components/schemas/BasePaymentAccountInfo'
      - $ref: '#/components/schemas/KesAccountInfo'
      - 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
    OutgoingTransactionStatus:
      type: string
      enum:
      - PENDING
      - PENDING_AUTHORIZATION
      - EXPIRED
      - PROCESSING
      - COMPLETED
      - FAILED
      description: 'Status of an outgoing payment transaction.


        | Status | Description |

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

        | `PENDING` | Quote is pending confirmation |

        | `PENDING_AUTHORIZATION` | Awaiting Strong Customer Authentication. Only occurs for customers in a region where SCA is required (e.g. EU); authorize the transaction''s `scaChallenge` to proceed. |

        | `EXPIRED` | Quote wasn''t executed before expiry window |

        | `PROCESSING` | Executing the quote after receiving funds |

        | `COMPLETED` | Payout successfully reached the destination |

        | `FAILED` | Something went wrong — accompanied by a `failureReason` |

        '
    DkkAccountInfo:
      allOf:
      - $ref: '#/components/schemas/DkkAccountInfoBase'
      - type: object
        required:
        - paymentRails
        properties:
          paymentRails:
            type: array
            items:
              type: string
              enum:
              - SEPA
              - SEPA_INSTANT
    ApprovePaymentRequest:
      type: object
      properties:
        receiverCustomerInfo:
          type: object
          additionalProperties: true
          description: Information about the recipient, provided by the platform if requested in the original webhook via `requestedReceiverCustomerInfoFields`.
    Error409:
      type: object
      required:
      - message
      - status
      - code
      properties:
        status:
          type: integer
          enum:
          - 409
          description: HTTP status code
        code:
          type: string
          description: '| Error Code | Description |

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

            | TRANSACTION_NOT_PENDING_PLATFORM_APPROVAL | Transaction is not pending platform approval |

            | UMA_ADDRESS_EXISTS | UMA address already exists |

            | EMAIL_OTP_EMAIL_ALREADY_EXISTS | Email address is already associated with an EMAIL_OTP credential |

            | EMAIL_OTP_CREDENTIAL_SET_CHANGED | Tied EMAIL_OTP credential set changed after the signed-retry challenge was issued |

            | PASSKEY_ALREADY_ENROLLED | The customer already has an 

# --- 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