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

# Submit Transaction

> ```
POST api/v1/transaction-monitoring/instant
```




## OpenAPI

````yaml transaction-monitoring-model.json POST /transaction-monitoring/instant
openapi: 3.1.0
info:
  title: Sigma API
  description: Sigma Transaction Monitoring API documentation
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://sigmaprod.sabipay.com/api/v1
security:
  - ApiKeyAuth: []
    ApiSecretAuth: []
paths:
  /transaction-monitoring/instant:
    post:
      description: Sends transaction and user/device metadata for monitoring and analysis
      requestBody:
        description: Transaction payload to be screened and monitored
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitTransactionPayload'
            example:
              transactionData:
                reference: TXN-2026-061101-456789
                amount: 5750000
                receiverAccount: '0123456789'
                senderAccount: '9876543210'
                isExternalPayment: true
                balanceBefore: 8200000
                type: debit
                channel: bank transfer
                transactionDate: '2026-06-11T09:45:00.000Z'
                status: true
                email: amara.okafor@example.com
                narration: Vendor invoice payment for office equipment
                refund: false
                isCheque: false
                vasReceiver: '+2348012345678'
                vasProvider: MTN
                currency: NGN
                isInternalAccount: false
                isStaffAccount: false
                sessionId: SESS-9f4b2c7a-20260611
                isDormantAccount: false
              device:
                deviceId: ios-7F3A9C2E-91B4-4A5E-9D8A-1F23C4B56789
                manufacturer: Apple
                name: Amara's iPhone 15 Pro
                osName: iOS
                osVersion: 18.1.0
              anonymizedUserData:
                uniqueId: CUS-10001
                email: amara.okafor@example.com
                accountType: individual
                businessCategory: retail
                isPhoneNumberVerified: true
                isBanned: false
                dateJoined: '2024-01-15T10:00:00.000Z'
                age: 34
                isIdentityVerified: true
                state: Lagos
                city: Ikeja
                country: NG
              location:
                latitude: '6.6018'
                longitude: '3.3515'
                country: NG
              thirdPartyUserData:
                uniqueId: CARD-HOLDER-88421
                cardPan: 539923******0421
                email: cardholder@example.com
              limits:
                dailyLimit: 10000000
                overdraftLimit: 500000
                individualTransactionLimit: 6000000
              screeningData:
                senderName: Amara Okafor
                receiverName: Pastel Office Supplies Ltd
              beneficiary:
                isRegisteredBeneficiary: true
                isNewBeneficiary: false
              ipAddress: 102.89.45.12
      responses:
        '200':
          description: Transaction monitoring result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstantTransactionResponse'
        '400':
          description: Invalid input or unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    SubmitTransactionPayload:
      type: object
      required:
        - transactionData
        - anonymizedUserData
      properties:
        transactionData:
          type: object
          required:
            - reference
            - amount
            - isExternalPayment
            - type
            - channel
            - transactionDate
            - status
            - currency
          properties:
            reference:
              type: string
              description: Unique identifier for the transaction
            amount:
              type: number
              description: Amount involved in the transaction
            receiverAccount:
              type: string
              description: Receiver's account number
            senderAccount:
              type: string
              description: Sender's account number
            isExternalPayment:
              type: boolean
              description: True if payment is made to an external institution or bank
            balanceBefore:
              type: number
              description: Account balance before the transaction
            type:
              type: string
              enum:
                - debit
                - credit
              description: Type of transaction
            channel:
              type: string
              enum:
                - card payment
                - web transfer
                - bank transfer
                - mobile transfer
                - cash payment
                - cash withdrawal
                - airtime
                - cable
                - sports betting
                - electricity
                - internet
                - data purchase
                - atm
                - pos
              description: Payment channel used for transaction
            transactionDate:
              type: string
              format: date-time
              description: ISO 8601 formatted timestamp of the transaction
            status:
              type: boolean
              description: Status of the transaction
            email:
              type: string
              format: email
              description: Email address associated with the transaction
            narration:
              type: string
              description: Transaction narration or description
            refund:
              type: boolean
              description: True if this is a refund transaction
            isCheque:
              type: boolean
              description: True if transaction involves a cheque
            vasReceiver:
              type: string
              description: Phone number of VAS recipient (for airtime/data)
            vasProvider:
              type: string
              description: VAS provider name (for airtime/data)
            currency:
              type: string
              description: Currency code (ISO 4217 standard)
            isInternalAccount:
              type: boolean
              description: True if account belongs to the institution
            isStaffAccount:
              type: boolean
              description: True if user is a staff member
            sessionId:
              type: string
              description: Unique session identifier
            isDormantAccount:
              type: boolean
              description: True if account is inactive
        device:
          type: object
          required:
            - deviceId
          properties:
            deviceId:
              type: string
              description: Unique identifier of the device
            manufacturer:
              type: string
              description: Device manufacturer (e.g., Apple, Samsung)
            name:
              type: string
              description: Device name as recognized by the user
            osName:
              type: string
              description: Operating system name
            osVersion:
              type: string
              description: Operating system version
        anonymizedUserData:
          type: object
          required:
            - uniqueId
            - isBanned
            - isIdentityVerified
          properties:
            uniqueId:
              type: string
              description: user ID or reference from your database
            email:
              type: string
              format: email
              description: User's email address
            accountType:
              type: string
              description: User account type
              enum:
                - individual
                - corporate
            businessCategory:
              type: string
              description: Type of business, if applicable
            isPhoneNumberVerified:
              type: boolean
              description: Whether the user's phone number is verified
            isBanned:
              type: boolean
              description: Indicates if user is banned
            dateJoined:
              type: string
              format: date-time
              description: Date user joined the platform
            age:
              type: integer
              description: User's age
            isIdentityVerified:
              type: boolean
              description: Whether user's identity is verified
            state:
              type: string
              description: State where the user created their account
            city:
              type: string
              description: City where the user created their account
            country:
              type: string
              description: Country where the user created their account
        location:
          type: object
          properties:
            latitude:
              type: string
              description: Latitude coordinate
            longitude:
              type: string
              description: Longitude coordinate
            country:
              type: string
              description: Country where transaction was performed
        thirdPartyUserData:
          type: object
          required:
            - uniqueId
            - cardPan
          properties:
            uniqueId:
              type: string
              description: Unique identifier for third party user
            cardPan:
              type: string
              description: Masked card number
            email:
              type: string
              format: email
              description: Email of third-party user
        limits:
          type: object
          properties:
            dailyLimit:
              type: number
              description: User's daily transaction limit
            overdraftLimit:
              type: number
              description: User's approved overdraft limit
            individualTransactionLimit:
              type: number
              description: User's individual transaction limit
        screeningData:
          type: object
          properties:
            senderName:
              type: string
              description: Full name of the sender
            receiverName:
              type: string
              description: Full name of the receiver
        beneficiary:
          type: object
          required:
            - isRegisteredBeneficiary
            - isNewBeneficiary
          properties:
            isRegisteredBeneficiary:
              type: boolean
              description: Whether the beneficiary is already registered
            isNewBeneficiary:
              type: boolean
              description: Whether this is a newly added beneficiary
        ipAddress:
          type: string
          format: ipv4
          description: IP address associated with the transaction
      example:
        transactionData:
          reference: TXN-2026-061101-456789
          amount: 5750000
          receiverAccount: '0123456789'
          senderAccount: '9876543210'
          isExternalPayment: true
          balanceBefore: 8200000
          type: debit
          channel: bank transfer
          transactionDate: '2026-06-11T09:45:00.000Z'
          status: true
          email: amara.okafor@example.com
          narration: Vendor invoice payment for office equipment
          refund: false
          isCheque: false
          vasReceiver: '+2348012345678'
          vasProvider: MTN
          currency: NGN
          isInternalAccount: false
          isStaffAccount: false
          sessionId: SESS-9f4b2c7a-20260611
          isDormantAccount: false
        device:
          deviceId: ios-7F3A9C2E-91B4-4A5E-9D8A-1F23C4B56789
          manufacturer: Apple
          name: Amara's iPhone 15 Pro
          osName: iOS
          osVersion: 18.1.0
        anonymizedUserData:
          uniqueId: CUS-10001
          email: amara.okafor@example.com
          accountType: individual
          businessCategory: retail
          isPhoneNumberVerified: true
          isBanned: false
          dateJoined: '2024-01-15T10:00:00.000Z'
          age: 34
          isIdentityVerified: true
          state: Lagos
          city: Ikeja
          country: NG
        location:
          latitude: '6.6018'
          longitude: '3.3515'
          country: NG
        thirdPartyUserData:
          uniqueId: CARD-HOLDER-88421
          cardPan: 539923******0421
          email: cardholder@example.com
        limits:
          dailyLimit: 10000000
          overdraftLimit: 500000
          individualTransactionLimit: 6000000
        screeningData:
          senderName: Amara Okafor
          receiverName: Pastel Office Supplies Ltd
        beneficiary:
          isRegisteredBeneficiary: true
          isNewBeneficiary: false
        ipAddress: 102.89.45.12
    InstantTransactionResponse:
      type: object
      required:
        - message
        - data
      properties:
        message:
          type: string
          example: Transaction processed
          description: Processing status message
        data:
          description: >-
            Transaction result payload. Can be null for reporting-only
            processing mode.
          oneOf:
            - $ref: '#/components/schemas/SubmitTransactionResponse'
            - type: 'null'
      example:
        message: Transaction processed
        data:
          transactionId: TXN-2026-061101-456789
          riskScore: '0.31'
          action:
            result: approved
            code: 1
          ruleResult: null
          reason:
            code: '100'
            message: Transaction is not fraudulent
            severity: low
    Error:
      required:
        - error
        - message
      type: object
      properties:
        error:
          type: integer
          format: int32
        message:
          type: string
      example:
        error: 400
        message: 'Invalid request payload: transactionData.reference is required'
    SubmitTransactionResponse:
      type: object
      properties:
        transactionId:
          type: string
          description: The ID of the transaction that was checked for fraud
        riskScore:
          oneOf:
            - type: string
            - type: 'null'
          description: A score indicating the level of risk associated with the transaction
        action:
          type: object
          description: >-
            Object providing info about the final decision taken on the
            transaction. Only returned when a final decision is taken
          properties:
            result:
              type: string
              enum:
                - approved
                - rejected
              description: >-
                Final result of the transaction check - either approved or
                rejected
            code:
              type: integer
              enum:
                - 0
                - 1
              description: >-
                Numerical code representation of the result. 1 = Approved, 0 =
                Rejected
        ruleResult:
          type: string
          description: >-
            Result after the rules set have been executed (e.g., 'looks safe',
            'needs review')
        reason:
          type: object
          description: >-
            Provides more detailed information about why the transaction is
            considered fraudulent
          properties:
            code:
              type: string
              description: >-
                Unique code that identifies the reason for the transaction being
                considered fraudulent
            message:
              type: string
              description: >-
                Human-readable description of the reason for the transaction
                being considered fraudulent
            severity:
              type: string
              enum:
                - high
                - medium
                - low
              description: >-
                Severity of the reason for the transaction being considered
                fraudulent
            rule:
              type: object
              description: >-
                If the transaction was flagged, rejected or approved by a rule,
                info about the rule that took effect
              properties:
                id:
                  type: string
                  description: Unique identifier for the rule
                name:
                  type: string
                  description: Name of the rule that took effect on the transaction
      example:
        transactionId: TXN-2026-061101-456789
        riskScore: '0.31'
        action:
          result: approved
          code: 1
        ruleResult: null
        reason:
          code: '100'
          message: Transaction is not fraudulent
          severity: low
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apiKey
    ApiSecretAuth:
      type: apiKey
      in: header
      name: apiSecret

````