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

# Upload Proof of Payment

> Submit proof of payment for an B2B transaction.

**Onramp:** Upload a payment receipt file (JPEG/PNG/GIF/PDF, max 3 MB). The file is forwarded to the B2B partner to confirm fiat receipt.

**Offramp:** Provide the blockchain transaction hash or block explorer URL confirming that stablecoins have been sent. The transaction status is updated from `pending` to `processing` and the admin is notified.



## OpenAPI

````yaml /reference/link-transaction.json post /otc/pop
openapi: 3.1.0
info:
  title: link-transaction
  version: '1.0'
servers:
  - url: https://api.linkio.world
security:
  - sec0: []
tags:
  - name: Direct FX
  - name: Pan-Africa Ramp
  - name: BRL Ramp
  - name: IDR Ramp
  - name: B2B
  - name: Customers
  - name: Static Details
  - name: Transactions
  - name: Accounts
  - name: ESPESS
paths:
  /otc/pop:
    post:
      tags:
        - B2B
      summary: Upload Proof of Payment
      description: >-
        Submit proof of payment for an B2B transaction.


        **Onramp:** Upload a payment receipt file (JPEG/PNG/GIF/PDF, max 3 MB).
        The file is forwarded to the B2B partner to confirm fiat receipt.


        **Offramp:** Provide the blockchain transaction hash or block explorer
        URL confirming that stablecoins have been sent. The transaction status
        is updated from `pending` to `processing` and the admin is notified.
      operationId: post_otc_pop
      parameters: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - reference
                - transaction_type
              properties:
                reference:
                  type: string
                  description: >-
                    The transaction reference returned when the transaction was
                    created (e.g. link-otc-12345678).
                  example: link-otc-12345678
                transaction_type:
                  type: string
                  enum:
                    - onramp
                    - offramp
                  description: >-
                    The type of transaction. Determines which proof is expected
                    — file for onramp, transaction_hash for offramp.
                file:
                  type: string
                  format: binary
                  description: >-
                    **Required for onramp only.** Proof of payment file.
                    Accepted types: JPEG, PNG, GIF, PDF. Maximum size: 3 MB.
                transaction_hash:
                  type: string
                  description: >-
                    **Required for offramp only.** The blockchain transaction
                    hash or block explorer URL confirming stablecoin transfer
                    (e.g. a Tronscan or Etherscan link).
                  example: 0xabc123...
      responses:
        '200':
          description: Proof of payment submitted successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      reference:
                        type: string
                        example: link-otc-12345678
                      transaction_type:
                        type: string
                        enum:
                          - onramp
                          - offramp
                      filename:
                        type: string
                        description: Onramp only — uploaded filename.
                        example: receipt.pdf
                      transaction_hash:
                        type: string
                        description: Offramp only — submitted hash or URL.
                      status:
                        type: string
                        description: Offramp only — updated status.
                        example: processing
        '400':
          description: >-
            Validation error — missing fields, invalid transaction_type,
            unsupported file type, or file exceeds 3 MB.
        '404':
          description: Transaction not found for the given reference.
        '503':
          description: >-
            OTC bot unavailable — onramp proof could not be forwarded. Retry
            later.
components:
  securitySchemes:
    sec0:
      type: apiKey
      in: header
      name: ngnc-sec-key
      x-default: ''

````