> ## 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 reporting-model.json POST /transaction-monitoring/instant
openapi: 3.1.0
info:
  title: Sigma API
  description: Sigma Reporting 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: Submit transaction data for reporting and compliance purposes
      requestBody:
        description: Transaction payload for reporting
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportingTransactionPayload'
            example:
              transactionData:
                reference: REP-TXN-2026-061101-456789
                transactionDate: '2026-06-11T09:45:00.000Z'
                type: debit
                currency: NGN
                balanceBefore: 8200000
                accountCurrency: NGN
                accountCurrencyBalanceBefore: 8200000
                amount: 5750000
                narration: Vendor invoice payment for office equipment
                transactionScheme: NIP
                isExternalPayment: true
                sessionId: SESS-9f4b2c7a-20260611
                status: true
                channel: bank transfer
                exchangeRate: 1
                usdExchangeRate: 1500
                senderAccount: '9876543210'
                receiverAccount: '0123456789'
                email: amara.okafor@example.com
                vasReceiver: '+2348012345678'
                vasProvider: MTN
                refund: false
                isInternalAccount: false
                isStaffAccount: false
                isDormantAccount: false
                isCheque: false
                signatory: Amara Okafor
              anonymizedUserData:
                uniqueId: CUS-10001
                identityNumber: 22334455667
                phone: '+2348012345678'
                occupation: Product Manager
                country: NG
                state: Lagos
                city: Ikeja
                accountType: individual
                age: 34
                gender: f
                dateJoined: '2024-01-15T10:00:00.000Z'
                isBanned: false
                isIdentityVerified: true
                businessCategory: retail
                isPhoneNumberVerified: true
                bankCode: '044'
                bankName: Access Bank Plc
                name: Amara Okafor
                iban: NG12ACCESS000123456789
                userRisk: medium
                sortCode: '044150149'
                bankCountry: NG
                dob: '1990-04-15'
                email: amara.okafor@example.com
                pepStatus: false
                sow: salary
              counterpartyData:
                accountNumber: '0123456789'
                country: NG
                accountType: corporate
                bankCode: '058'
                name: Pastel Office Supplies Ltd
                identityNumber: 7429883
                iban: NG12GTBANK000123456789
                sortCode: '058152036'
                bankCountry: NG
                bankName: Guaranty Trust Bank
                email: finance@pastelofficesupplies.com
              thirdPartyUserData:
                uniqueId: CARD-HOLDER-88421
                cardPan: 539923******0421
                email: cardholder@example.com
              device:
                deviceId: ios-7F3A9C2E-91B4-4A5E-9D8A-1F23C4B56789
                manufacturer: Apple
                name: Amara iPhone 15 Pro
                osName: iOS
                osVersion: 18.1.0
              location:
                latitude: '6.6018'
                longitude: '3.3515'
                country: NG
              screeningData:
                senderName: Amara Okafor
                receiverName: Pastel Office Supplies Ltd
              limits:
                dailyLimit: 10000000
                overdraftLimit: 500000
                individualTransactionLimit: 6000000
              beneficiary:
                isRegisteredBeneficiary: true
                isNewBeneficiary: false
              ipAddress: 102.89.45.12
      responses:
        '200':
          description: Transaction processed
          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:
    ReportingTransactionPayload:
      type: object
      required:
        - transactionData
        - anonymizedUserData
        - counterpartyData
      properties:
        transactionData:
          type: object
          required:
            - reference
            - transactionDate
            - type
            - currency
            - accountCurrency
            - amount
            - isExternalPayment
            - status
            - channel
            - signatory
          properties:
            reference:
              type: string
              description: Unique identifier for the transaction
            transactionDate:
              type: string
              format: date-time
              description: Date and time of the transaction in ISO 8601 format
            type:
              type: string
              enum:
                - debit
                - credit
              description: Type of transaction
            currency:
              type: string
              description: Currency code (ISO 4217 standard)
            balanceBefore:
              type: number
              description: Account balance before the transaction
            accountCurrency:
              type: string
              description: Currency of the account
            accountCurrencyBalanceBefore:
              type: number
              description: Account balance before transaction in account currency
            amount:
              type: number
              description: Transaction amount
            narration:
              type: string
              description: Transaction description or purpose
            transactionScheme:
              type: string
              description: Transaction scheme identifier
            isExternalPayment:
              type: boolean
              description: True if payment is made to an external institution or bank
            sessionId:
              type: string
              description: Unique session identifier
            status:
              type: boolean
              description: Status of the transaction
            channel:
              type: string
              enum:
                - card payment
                - web transfer
                - bank transfer
                - mobile transfer
                - cash payment
                - cash withdrawal
                - pos
                - airtime
                - cable
                - sports betting
                - electricity
                - internet
                - data purchase
                - atm
                - ach
                - checks/cheque
                - wire transfer
                - real time payment
              description: Payment channel used for transaction
            exchangeRate:
              type: number
              description: Exchange rate applied to the transaction
            usdExchangeRate:
              type: number
              description: USD exchange rate
            senderAccount:
              type: string
              description: Sender's account number
            receiverAccount:
              type: string
              description: Receiver's account number
            email:
              type: string
              format: email
              description: Email address associated with the transaction
            vasReceiver:
              type: string
              description: Phone number of VAS recipient (for airtime/data)
            vasProvider:
              type: string
              description: VAS provider name (for airtime/data)
            refund:
              type: boolean
              description: True if this is a refund transaction
            isInternalAccount:
              type: boolean
              description: True if account belongs to the institution
            isStaffAccount:
              type: boolean
              description: True if user is a staff member
            isDormantAccount:
              type: boolean
              description: True if account is inactive
            isCheque:
              type: boolean
              description: True if transaction involves a cheque
            signatory:
              type: string
              description: >-
                This is required only if the annonymizedUserData.accountType is
                corporate. This should be the name of the individual who
                authorized the transaction
        anonymizedUserData:
          type: object
          required:
            - uniqueId
            - dob
            - country
            - phone
            - isBanned
            - occupation
            - isIdentityVerified
            - accountType
            - bankCode
            - state
            - city
            - identityNumber
            - bankName
            - name
            - gender
            - sow
            - dateJoined
          properties:
            uniqueId:
              type: string
              description: User ID or reference from your database
            identityNumber:
              type: number
              description: User identity number e.g BVN
              example: 1234567890
            phone:
              type: string
              description: User phone number
              example: '08012345678'
            occupation:
              type: string
              description: User's occupation
              example: Self employed
            country:
              type: string
              description: Country code where the user created their account
            state:
              type: string
              description: State where the user created their account
            city:
              type: string
              description: City where the user created their account
            accountType:
              type: string
              enum:
                - individual
                - corporate
              description: User account type
            age:
              type: integer
              description: User's age
            gender:
              type: integer
              enum:
                - m
                - f
                - '-'
              description: User's gender
            dateJoined:
              type: string
              format: date-time
              description: Date user joined the platform
            isBanned:
              type: boolean
              description: Indicates if user is banned
            isIdentityVerified:
              type: boolean
              description: Whether user's identity is verified
            businessCategory:
              type: string
              description: Type of business, if applicable
            isPhoneNumberVerified:
              type: boolean
              description: Whether the user's phone number is verified
            bankCode:
              type: string
              description: Bank code of the user's financial institution
            bankName:
              type: string
              description: Name of the user's financial institution
            name:
              type: string
              description: User's full name
            iban:
              type: string
              description: International Bank Account Number
            userRisk:
              type: string
              enum:
                - low
                - medium
                - high
              description: Risk level assigned to the user
            sortCode:
              type: string
              description: Bank sort code
            bankCountry:
              type: string
              description: Country of the user's bank
            dob:
              type: string
              description: Date of birth
            email:
              type: string
              format: email
              description: User's email address
            pepStatus:
              type: boolean
              description: Politically Exposed Person status
            sow:
              type: string
              description: Source of wealth
        counterpartyData:
          type: object
          required:
            - country
            - bankCode
            - bankName
            - name
          properties:
            accountNumber:
              type: string
              description: Counterparty's account number
            country:
              type: string
              description: Country code of the counterparty
            accountType:
              type: string
              description: Type of counterparty account
            bankCode:
              type: string
              description: Bank code of the counterparty's financial institution
            name:
              type: string
              description: Counterparty's full name
            identityNumber:
              type: number
              description: Counterparty identity number e.g BVN
              example: 1234567890
            iban:
              type: string
              description: International Bank Account Number
            sortCode:
              type: string
              description: Bank sort code
            bankCountry:
              type: string
              description: Country of the counterparty's bank
            bankName:
              type: string
              description: Name of the counterparty's financial institution
            email:
              type: string
              format: email
              description: Counterparty's email address
        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
        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
        location:
          type: object
          properties:
            latitude:
              type: string
              description: Latitude coordinate
            longitude:
              type: string
              description: Longitude coordinate
            country:
              type: string
              description: >-
                Country code where transaction was performed (ISO 3166-1 alpha-2
                or alpha-3)
        screeningData:
          type: object
          properties:
            senderName:
              type: string
              description: Full name of the sender
            receiverName:
              type: string
              description: Full name of the receiver
        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
        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: REP-TXN-2026-061101-456789
          transactionDate: '2026-06-11T09:45:00.000Z'
          type: debit
          currency: NGN
          balanceBefore: 8200000
          accountCurrency: NGN
          accountCurrencyBalanceBefore: 8200000
          amount: 5750000
          narration: Vendor invoice payment for office equipment
          transactionScheme: NIP
          isExternalPayment: true
          sessionId: SESS-9f4b2c7a-20260611
          status: true
          channel: bank transfer
          exchangeRate: 1
          usdExchangeRate: 1500
          senderAccount: '9876543210'
          receiverAccount: '0123456789'
          email: amara.okafor@example.com
          vasReceiver: '+2348012345678'
          vasProvider: MTN
          refund: false
          isInternalAccount: false
          isStaffAccount: false
          isDormantAccount: false
          isCheque: false
          signatory: Amara Okafor
        anonymizedUserData:
          uniqueId: CUS-10001
          identityNumber: 22334455667
          phone: '+2348012345678'
          occupation: Product Manager
          country: NG
          state: Lagos
          city: Ikeja
          accountType: individual
          age: 34
          gender: f
          dateJoined: '2024-01-15T10:00:00.000Z'
          isBanned: false
          isIdentityVerified: true
          businessCategory: retail
          isPhoneNumberVerified: true
          bankCode: '044'
          bankName: Access Bank Plc
          name: Amara Okafor
          iban: NG12ACCESS000123456789
          userRisk: medium
          sortCode: '044150149'
          bankCountry: NG
          dob: '1990-04-15'
          email: amara.okafor@example.com
          pepStatus: false
          sow: salary
        counterpartyData:
          accountNumber: '0123456789'
          country: NG
          accountType: corporate
          bankCode: '058'
          name: Pastel Office Supplies Ltd
          identityNumber: 7429883
          iban: NG12GTBANK000123456789
          sortCode: '058152036'
          bankCountry: NG
          bankName: Guaranty Trust Bank
          email: finance@pastelofficesupplies.com
        thirdPartyUserData:
          uniqueId: CARD-HOLDER-88421
          cardPan: 539923******0421
          email: cardholder@example.com
        device:
          deviceId: ios-7F3A9C2E-91B4-4A5E-9D8A-1F23C4B56789
          manufacturer: Apple
          name: Amara iPhone 15 Pro
          osName: iOS
          osVersion: 18.1.0
        location:
          latitude: '6.6018'
          longitude: '3.3515'
          country: NG
        screeningData:
          senderName: Amara Okafor
          receiverName: Pastel Office Supplies Ltd
        limits:
          dailyLimit: 10000000
          overdraftLimit: 500000
          individualTransactionLimit: 6000000
        beneficiary:
          isRegisteredBeneficiary: true
          isNewBeneficiary: false
        ipAddress: 102.89.45.12
    InstantTransactionResponse:
      type: object
      description: Response returned by POST /transaction-monitoring/instant
      required:
        - message
        - data
      properties:
        message:
          type: string
          example: Transaction processed
          description: Processing status message
        data:
          description: >-
            Transaction decision payload. Null when only reporting flow is
            active.
          oneOf:
            - $ref: '#/components/schemas/SubmitTransactionResponse'
            - type: 'null'
      example:
        message: Transaction processed
        data:
          transactionId: txn_67f96122c2a7d1f2b6ea1207
          riskScore: '0.27'
          action:
            result: approved
            code: 1
          ruleResult: looks safe
          reason:
            code: TM-LOW-RISK
            message: No high-risk behavior was detected for this transaction
            severity: low
            rule:
              id: rule-velocity-001
              name: Velocity threshold check
    Error:
      type: object
      description: Error response
      properties:
        message:
          type: string
          description: Error message
        code:
          type: string
          description: Error code
      example:
        message: transactionData.reference is required
        code: VALIDATION_ERROR
    SubmitTransactionResponse:
      type: object
      properties:
        transactionId:
          type: string
          description: The ID of the transaction that was checked for fraud
        riskScore:
          type: string
          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
        screening:
          type: object
          description: >-
            Results of screening checks performed on transaction parties (Only
            returned when transaction screening module is enabled)
          properties:
            sender:
              type: object
              properties:
                pep:
                  type: string
                  description: Results of politically exposed person check for sender
                sanction:
                  type: string
                  description: Results of sanctions check for sender
            receiver:
              type: object
              properties:
                pep:
                  type: string
                  description: Results of politically exposed person check for receiver
                sanction:
                  type: string
                  description: Results of sanctions check for receiver
      example:
        transactionId: txn_67f96122c2a7d1f2b6ea1207
        riskScore: '0.27'
        action:
          result: approved
          code: 1
        ruleResult: looks safe
        reason:
          code: TM-LOW-RISK
          message: No high-risk behavior was detected for this transaction
          severity: low
          rule:
            id: rule-velocity-001
            name: Velocity threshold check
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apiKey
    ApiSecretAuth:
      type: apiKey
      in: header
      name: apiSecret

````