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

# Check a direct deposit transaction

> Read persisted Echo deposit and receipt evidence for a campaign, chain, and source transaction. Not-detected does not prove the transfer failed.



## OpenAPI

````yaml https://api.donate.gg/api/openapi get /v1/campaigns/{campaignId}/donation-echo/status
openapi: 3.1.1
info:
  title: Donate Developer API
  version: 1.0.0
  description: >-
    Public JSON API for charities, configs, campaigns, tokens, and related
    catalog reads. Operations are grouped by version (`/v1`, and later `/v2`).
    GET/HEAD catalog routes may omit `donate-api-key` and are IP rate-limited
    for anonymous callers (~20 req/min). Authenticated keys share one
    organization rate-tier bucket. Create/list configs and project analytics
    require an API key. Configs are permanent; the retained authenticated DELETE
    endpoint rejects deletion. Unpublished internal routes are omitted. Spec
    routes (`/api/openapi`, `/api/postman`) are unauthenticated and unmetered.
servers:
  - url: /api
    description: API origin. Version prefixes live on each operation path.
security:
  - {}
  - ApiKeyAuth: []
paths:
  /v1/campaigns/{campaignId}/donation-echo/status:
    get:
      summary: Check a direct deposit transaction
      description: >-
        Read persisted Echo deposit and receipt evidence for a campaign, chain,
        and source transaction. Not-detected does not prove the transfer failed.
      operationId: v1.campaigns.donationEcho.status
      parameters:
        - name: campaignId
          in: path
          required: true
          schema:
            type: string
            description: Campaign id
        - name: chainId
          in: query
          required: true
          schema:
            type: number
            description: Chain id the donor sent on
          allowEmptyValue: true
          allowReserved: true
        - name: transactionHash
          in: query
          required: true
          schema:
            type: string
            description: Source transaction hash (EVM) or signature (Solana)
          allowEmptyValue: true
          allowReserved: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    enum:
                      - not-detected
                      - detected
                      - forwarding
                      - delivering
                      - received
                      - needs-review
                      - reorged
                    type: string
                required:
                  - status
                additionalProperties: false
        '400':
          description: '400'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: BAD_REQUEST
                      status:
                        const: 400
                      message:
                        type: string
                        default: Invalid request
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                        required:
                          - error
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                      - data
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      defined:
                        const: true
                      code:
                        const: NOT_FOUND
                      status:
                        const: 404
                      message:
                        type: string
                        default: This campaign isn't accepting direct deposits
                      data:
                        type: object
                        properties:
                          error:
                            type: string
                        required:
                          - error
                        additionalProperties: false
                    required:
                      - defined
                      - code
                      - status
                      - message
                      - data
                  - type: object
                    properties:
                      defined:
                        const: false
                      code:
                        type: string
                      status:
                        type: number
                      message:
                        type: string
                      data: {}
                    required:
                      - defined
                      - code
                      - status
                      - message
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: donate-api-key
      description: >-
        Developer API key. Required for config create/list and project
        analytics. The disabled config DELETE endpoint also requires
        authentication. Optional on public GET reads (anonymous callers are IP
        rate-limited). Obtain from the Developer dashboard.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.