List transactions

Lists the project's transactions across SDP modules with stable cursor pagination.

GET/v1/transactionsRun in dashboard

Requires transactions.read. Every row also needs the read action of the module it comes from (which its manage or execute includes): a Payments row needs transfers.read for a transfer or deposit, transfer_batches.read for a batch item, recurring.read for a recurring collection, payment_requests.read for a payment request's fulfilment, and onramp.read or offramp.read for a ramp transfer; every other module's rows need that module's read. Rows the caller cannot read are left out. Requesting a module, or a Payments kind, without its action returns 403 INSUFFICIENT_PERMISSIONS naming it. search matches transaction id, module id, or signature as a prefix, not a substring. The endpoint is metered (60/min per credential, 240/min per organization); exceeding the quota returns 429, and 503 indicates the quota backend was unavailable.

Requires an API key with the transactions.read action.

Query parameters

  • module · string · always payments

  • kind · string

  • status · string · one of pending, succeeded, failed, canceled

  • custodyWalletId · string · max length 128

  • counterpartyId · string · max length 128

  • token · string · max length 128

  • search · string · min length 3 · max length 200

    Prefix match against transaction id, module id, or signature — not a substring search.

  • createdAtFrom · string · format date-time

  • createdAtTo · string · format date-time

  • cursor · string

  • limit · integer · min 1 · max 100 · default 50

Headers

  • x-project-id · string · min length 1 · example prj_example

    Required for dashboard sessions. API keys use their assigned project.

Responses

  • 200 Unified transactions

    • data · object · required

      • transactions · object[] · required

        One of:

        • module: "payments"

          • id · string · required

          • moduleId · string · required

          • status · string · required · one of pending, succeeded, failed, canceled

          • organizationId · string · required

          • projectId · string | null · required

          • custodyWalletId · string | null · required

          • custodyWalletLabel · string | null · required

          • token · string | null · required

          • amount · string | null · required

          • counterpartyId · string | null · required

          • signature · string | null · required

          • createdAt · string · required

          • module · string · required · always payments

          • kind · string · required

          • moduleStatus · string · required · one of pending, processing, confirmed, finalized, failed, awaiting_payment, settling, completed, canceled, expired

      • nextCursor · string | null · required

  • 400 Bad Request

    • error · object · required

      Standard error payload.

      • code · string · required

        Machine-readable error code.

      • message · string · required

        Human-readable error message.

      • details · object

        Optional error details for debugging.

        • * · any
    • meta · object

      • requestId · string · min length 1 · example req_example

        Request identifier for tracing.

  • 401 Unauthorized

    Same fields as 400.

  • 403 Forbidden. Requires the transactions.read action: an API key must hold it (a module's manage or execute also covers its read), and a signed-in member's organization role must include it. Without it the error is INSUFFICIENT_PERMISSIONS and error.details.action names the action. Any other 403 names its own reason.

    Same fields as 400.

  • 429 Too Many Requests

    Same fields as 400.

  • 500 Internal Server Error

    Same fields as 400.

  • 503 Service Unavailable

    Same fields as 400.

Example request

curl 'https://api.solana.com/v1/transactions' \
  -H "Authorization: Bearer $SDP_API_KEY"

Example responses

{
  "data": {
    "transactions": [
      {
        "id": "_example",
        "moduleId": "module_example",
        "status": "pending",
        "organizationId": "organization_example",
        "projectId": "project_example",
        "custodyWalletId": "custodywallet_example",
        "custodyWalletLabel": "example",
        "token": "example",
        "amount": "example",
        "counterpartyId": "counterparty_example",
        "signature": "example",
        "createdAt": "example",
        "module": "payments",
        "kind": "example",
        "moduleStatus": "pending"
      }
    ],
    "nextCursor": "example"
  }
}

Error responses use the standard error shape.

Is this page helpful?