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

# Reject incoming transaction.

> Reject a pending incoming transaction after it enters receiver review. Provide a receiver-side rejection reason in the request body using the current uppercase BLIPS reason-token format.



## OpenAPI

````yaml /openapi/blips-public-reference.yaml post /transactions/{transactionId}/reject
openapi: 3.1.0
info:
  title: BLIPS Public Reference API
  version: '2026-04-08'
  description: >-
    Public OpenAPI 3.1 subset for the first BLIPS Mintlify API Reference and
    Playground release. This document is bound to the confirmed Public Test
    Backend at https://public-test.blips.network, includes only the approved
    first-release public endpoints, uses only internal `$ref` values, and
    excludes callback-only webhook documentation and operator-only surfaces.
servers:
  - url: https://public-test.blips.network
    description: >-
      Confirmed Public Test Backend ingress target for public BLIPS API
      Reference, Playground, and internet-testable Try It flows.
security:
  - BasicAuth: []
tags:
  - name: Platform Setup
    description: >-
      Bootstrap and platform configuration surfaces for establishing the public
      BLIPS integration context.
  - name: Sandbox API
    description: >-
      Sandbox-only externally displayed helper surfaces. These routes either
      adjust quote inputs or create incoming-payment review cases, but they
      always feed the existing quote or transaction families and never become
      second outward API families.
  - name: Tokens
    description: >-
      Platform-scoped API credential create, list, detail, and revoke
      operations.
  - name: Customers
    description: >-
      Customer onboarding, profile lifecycle, and PPV payment-address issuance
      surfaces.
  - name: Accounts
    description: >-
      Customer-bound internal-account and external-account surfaces kept in the
      first-layer public contract.
  - name: Same-Currency Transfers
    description: >-
      Same-currency receiver lookup plus incoming and outgoing transfer
      primitives.
  - name: Cross-Currency Transfers
    description: >-
      PPV-first receiver lookup, quote creation/readback, and quote execution
      for cross-currency flows.
  - name: Transactions
    description: Transaction readback plus bounded incoming-review decision operations.
  - name: Webhooks
    description: >-
      Webhook connectivity verification surface for the public BLIPS
      integration.
paths:
  /transactions/{transactionId}/reject:
    post:
      tags:
        - Transactions
      summary: Reject incoming transaction.
      description: >-
        Reject a pending incoming transaction after it enters receiver review.
        Provide a receiver-side rejection reason in the request body using the
        current uppercase BLIPS reason-token format.
      operationId: rejectIncomingPayment
      parameters:
        - $ref: '#/components/parameters/TransactionId'
      requestBody:
        required: true
        description: >-
          Provide the receiver-side rejection reason for the pending incoming
          transaction. Use the current uppercase BLIPS reason-token format.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RejectIncomingPaymentRequest'
            examples:
              rejectIncomingPayment:
                value:
                  reason: KYC_NOT_APPROVED
      responses:
        '200':
          description: Incoming transaction rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionRejectIncomingReviewResponse'
              examples:
                rejected:
                  value:
                    transactionId: txn_incoming_reject_001
                    type: INCOMING
                    status: FAILED
                    customerId: 00000000-0000-4000-8000-000000000001
                    platformCustomerId: partner_cust_001
                    createdAt: '2026-04-05T12:00:00Z'
                    updatedAt: '2026-04-05T12:02:00Z'
                    settledAt: '2026-04-05T12:02:00Z'
                    source:
                      accountId: InternalAccount:sender_sgd_001
                      sourceType: INTERNAL_ACCOUNT
                    destination:
                      destinationType: PPV_ADDRESS
                      ppvAddress: demo-customer@pay.example.blips
                    receivedAmount:
                      currencyCode: SGD
                      amountMinor: '5000'
                    failureReason: KYC_NOT_APPROVED
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionRejectBadRequestResponse'
              examples:
                invalidRejectReason:
                  value:
                    status: 400
                    code: INVALID_REQUEST
                    message: Invalid reject reason
                    details:
                      reason: must use uppercase BLIPS reason-token format
        '401':
          description: Invalid or missing API credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionRejectUnauthorizedResponse'
              examples:
                unauthorized:
                  value:
                    status: 401
                    code: UNAUTHORIZED
                    message: Invalid or missing API credentials
                    details: {}
        '404':
          description: Transaction not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionRejectNotFoundResponse'
              examples:
                transactionNotFound:
                  value:
                    status: 404
                    code: TRANSACTION_NOT_FOUND
                    message: Transaction not found
                    details: {}
        '409':
          description: Transaction not eligible for rejection.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionRejectConflictResponse'
              examples:
                transactionNotRejectable:
                  value:
                    status: 409
                    code: TRANSACTION_NOT_REJECTABLE
                    message: Transaction is not rejectable
                    details: {}
        '500':
          description: Internal service error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionRejectInternalErrorResponse'
              examples:
                internalError:
                  value:
                    status: 500
                    code: INTERNAL_ERROR
                    message: Internal service error
                    details: {}
      security:
        - BasicAuth: []
components:
  parameters:
    TransactionId:
      name: transactionId
      in: path
      required: true
      schema:
        type: string
      description: >-
        Canonical public transaction identifier for transaction-family readback
        and actions.
  schemas:
    RejectIncomingPaymentRequest:
      type: object
      description: Receiver-review rejection payload for a pending incoming transaction.
      properties:
        reason:
          type: string
          description: >-
            Receiver-side rejection reason code for the pending incoming
            transaction. Use the current BLIPS uppercase reason-token format.
      required:
        - reason
      additionalProperties: false
    TransactionRejectIncomingReviewResponse:
      type: object
      description: >-
        Bounded public incoming-review rejection result. The response is
        transaction-first and intentionally smaller than full transaction
        detail.
      properties:
        transactionId:
          type: string
          description: >-
            Canonical public transaction identifier for the rejected incoming
            transaction.
        type:
          type: string
          enum:
            - INCOMING
          description: Direction of this rejected transaction.
        status:
          type: string
          enum:
            - CREATED
            - PENDING
            - PROCESSING
            - COMPLETED
            - REJECTED
            - FAILED
            - REFUNDED
            - EXPIRED
          description: >-
            Current transaction lifecycle status after the rejection decision
            was recorded.
        customerId:
          type:
            - string
            - 'null'
          description: >-
            System-generated BLIPS customer identifier associated with this
            incoming transaction when available.
        platformCustomerId:
          type:
            - string
            - 'null'
          description: >-
            Platform-side customer identifier associated with this incoming
            transaction when available.
        createdAt:
          type: string
          format: date-time
          description: Transaction creation timestamp.
        updatedAt:
          type: string
          format: date-time
          description: Last update timestamp after the rejection decision was recorded.
        settledAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Settlement timestamp when the rejected incoming transaction reached
            its terminal failed state.
        source:
          $ref: '#/components/schemas/TransactionRejectIncomingReviewSource'
          description: Bounded source detail for the rejected incoming transaction.
        destination:
          $ref: '#/components/schemas/TransactionRejectIncomingReviewDestination'
          description: Bounded destination detail for the rejected incoming transaction.
        receivedAmount:
          $ref: '#/components/schemas/MoneyAmount'
          description: Main received amount for the rejected incoming transaction.
        failureReason:
          type: string
          description: >-
            Receiver-side rejection reason token recorded for this
            incoming-review decision.
      required:
        - transactionId
        - type
        - status
        - customerId
        - platformCustomerId
        - createdAt
        - updatedAt
        - settledAt
        - source
        - destination
        - receivedAmount
        - failureReason
      additionalProperties: false
    TransactionRejectBadRequestResponse:
      type: object
      description: >-
        Dedicated bad-request response contract for the incoming-review
        rejection route.
      properties:
        status:
          type: integer
          description: HTTP status code for this error response.
        code:
          type: string
          enum:
            - INVALID_REQUEST
          description: >-
            Stable public error code for an invalid incoming-review rejection
            request.
        message:
          type: string
          description: Human-readable invalid-request summary.
        details:
          type: object
          additionalProperties: true
          description: Optional structured invalid-request details.
      required:
        - status
        - code
        - message
        - details
      additionalProperties: false
    TransactionRejectUnauthorizedResponse:
      type: object
      description: >-
        Dedicated unauthorized response contract for the incoming-review
        rejection route.
      properties:
        status:
          type: integer
          description: HTTP status code for this error response.
        code:
          type: string
          enum:
            - UNAUTHORIZED
          description: Stable public error code for missing or invalid API credentials.
        message:
          type: string
          description: Human-readable authorization failure summary.
        details:
          type: object
          additionalProperties: true
          description: Optional structured authorization details.
      required:
        - status
        - code
        - message
        - details
      additionalProperties: false
    TransactionRejectNotFoundResponse:
      type: object
      description: >-
        Dedicated not-found response contract for the incoming-review rejection
        route.
      properties:
        status:
          type: integer
          description: HTTP status code for this error response.
        code:
          type: string
          enum:
            - TRANSACTION_NOT_FOUND
          description: >-
            Stable public error code when the supplied transaction identifier
            does not resolve.
        message:
          type: string
          description: Human-readable not-found summary.
        details:
          type: object
          additionalProperties: true
          description: Optional structured not-found details.
      required:
        - status
        - code
        - message
        - details
      additionalProperties: false
    TransactionRejectConflictResponse:
      type: object
      description: >-
        Dedicated conflict response contract for the incoming-review rejection
        route.
      properties:
        status:
          type: integer
          description: HTTP status code for this error response.
        code:
          type: string
          enum:
            - TRANSACTION_NOT_REJECTABLE
          description: >-
            Stable public conflict code when the incoming transaction is no
            longer in a rejectable review state.
        message:
          type: string
          description: Human-readable conflict summary.
        details:
          type: object
          additionalProperties: true
          description: Optional structured conflict details.
      required:
        - status
        - code
        - message
        - details
      additionalProperties: false
    TransactionRejectInternalErrorResponse:
      type: object
      description: >-
        Dedicated internal-error response contract for the incoming-review
        rejection route.
      properties:
        status:
          type: integer
          description: HTTP status code for this error response.
        code:
          type: string
          enum:
            - INTERNAL_ERROR
          description: Stable public error code for unexpected service failures.
        message:
          type: string
          description: Human-readable internal-error summary.
        details:
          type: object
          additionalProperties: true
          description: Optional structured internal-error details.
      required:
        - status
        - code
        - message
        - details
      additionalProperties: false
    TransactionRejectIncomingReviewSource:
      type: object
      description: Bounded source detail for the rejected incoming transaction result.
      properties:
        accountId:
          type:
            - string
            - 'null'
          description: >-
            Public internal-account identifier for the source side of the
            rejected incoming transaction when available.
        sourceType:
          type: string
          enum:
            - INTERNAL_ACCOUNT
          description: Bounded public source type for the rejected incoming transaction.
      required:
        - accountId
        - sourceType
      additionalProperties: false
    TransactionRejectIncomingReviewDestination:
      type: object
      description: Bounded destination detail for the rejected incoming transaction result.
      properties:
        destinationType:
          type: string
          enum:
            - PPV_ADDRESS
            - EXTERNAL_ACCOUNT
          description: >-
            Bounded public destination type for the rejected incoming
            transaction.
        accountId:
          type: string
          description: >-
            Bound external account identifier when the rejected incoming
            transaction targeted an external-account destination.
        ppvAddress:
          type: string
          description: Public PPV address in plain `localPart@ppvDomain` format.
      required:
        - destinationType
      additionalProperties: false
    MoneyAmount:
      type: object
      properties:
        currencyCode:
          type: string
          description: ISO 4217 currency code.
        amountMinor:
          type: string
          description: Amount in minor units for that currency.
      required:
        - currencyCode
        - amountMinor
      additionalProperties: false
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: >-
        Integration-key Basic Auth (`clientId:clientSecret`) as documented in
        docs/public/AUTHENTICATION.md.

````