CorebanqCorebanq Developer Docs
Transfersv1Transfers

List transfers

List transfers with filtering, sorting, and pagination support. Uses RBAC-aware query system with JSON-based search and sort parameters. This list shows payments — one row per payment — and never a beneficiary's own row. A company on the receiving side of an on-us payment is shown the payment itself, so it reads as outgoing with the payer as originator; `customer_id` here has always meant the originator. It is one row per payment either way: a payment carrying the legacy `type="internal"` beneficiary row used to appear here twice. To read the receiving company's own record, use `search.customer_id` on `GET /v2/transfers` or `customer_id` on `GET /v2/transfers/{transfer_id}`.

GET
/v1/transfers

Authorization

BearerAuth
AuthorizationBearer <token>

JWT authentication token

In: header

Query Parameters

search.status?string

Filter by transfer status

search.type?string

Filter by transfer type

search.ori_customer_id?string

Filter by originator customer ID (UUID)

search.ben_customer_id?string

Filter by beneficiary customer ID (UUID)

search.customer_id?string

Deprecated: Use search.ori_customer_id instead. Filter by originator customer ID (UUID)

search.product_id?string

Filter by product ID (UUID)

search.product_code?string

Filter by product code (alternative to product_id). If product code is not found, returns no results.

search.txn_ccy?string

Filter by currency code (txn_ccy)

sort?string

Sort field (prefix with - for descending). Example: -created_at or created_at

limit?integer

Number of items per page

offset?integer

Starting position for pagination

stack?string

ACCEPTED AND IGNORED ON THIS OPERATION. The shared parser reads it, but Service.GetTransfers never fills StackedData or Keys, so the response is always the flat paginated array. GET /v2/transfers is the list that honours stack; /v1/transfers/statuses and /v1/transfers/events honour it too.

filter?string

JSON filter object, parsed by the shared parser. Malformed JSON is refused with 400.

search._text?string

Free-text search over the virtual full-row text expression, resolved by the shared parser's ExtractTextSearch. Bare search._text implies the like operator; the operator suffixes accepted are .eq, .like, .ilike, .contains, .start_with and .end_with. More than one of them in a single request is refused with 400, as is any other suffix.

Header Parameters

Accept-Language?string

Language preference for the response

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/transfers"
{
  "data": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "product_id": "0d012afa-f885-4e65-aeca-37e27701e2d1",
      "product_code": "string",
      "ori_customer_id": "bc70e6eb-7d69-4074-a870-6cf369440f5d",
      "ben_customer_id": "f5b93205-a0f3-4d6a-a411-580dff187bdf",
      "ori_account_id": "93f2cf79-32f9-44a2-ad78-373f29b5514e",
      "ben_account_id": "4d1f2312-f55e-46c1-af1c-97fa399de1d5",
      "type": "string",
      "status": "string",
      "active": true,
      "txn_amt": {
        "amount": "string",
        "currency": "string",
        "precision": 0
      },
      "txn_paymentPurpose": "string",
      "ori_name": "string",
      "ori_iban": "string",
      "ori_bic": "string",
      "ben_name": "string",
      "ben_iban": "string",
      "ben_bic": "string",
      "ben_amt": {
        "amount": "string",
        "currency": "string",
        "precision": 0
      },
      "ori_walletAddress": "string",
      "ben_walletAddress": "string",
      "ben_addressTag": "string",
      "bc_network": "string",
      "bc_txHash": "string",
      "token": "string",
      "txn_netAmt": {
        "amount": "string",
        "currency": "string",
        "precision": 0
      },
      "txn_feeAmt": {
        "amount": "string",
        "currency": "string",
        "precision": 0
      },
      "txn_instructionId": "string",
      "txn_externalId": "string",
      "direction": "string",
      "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",
      "metadata": {},
      "context": {},
      "error_code": "string",
      "error_message": "string",
      "created_at": "string",
      "updated_at": "string"
    }
  ],
  "total": 0,
  "total_unfiltered": 0,
  "has_more": true,
  "metadata": {},
  "keys": [
    "string"
  ]
}
{
  "status": 0,
  "message": "string",
  "code": "transfers_m.account_not_found",
  "class": "validation",
  "retryable": false,
  "details": [
    {
      "field": "amount",
      "rule": "gt",
      "param": "0",
      "message": "amount must be greater than 0"
    }
  ]
}
{
  "status": 0,
  "message": "string",
  "code": "transfers_m.account_not_found",
  "class": "validation",
  "retryable": false,
  "details": [
    {
      "field": "amount",
      "rule": "gt",
      "param": "0",
      "message": "amount must be greater than 0"
    }
  ]
}
{
  "status": 0,
  "message": "string",
  "code": "transfers_m.account_not_found",
  "class": "validation",
  "retryable": false,
  "details": [
    {
      "field": "amount",
      "rule": "gt",
      "param": "0",
      "message": "amount must be greater than 0"
    }
  ]
}
{
  "status": 429,
  "message": "Rate limit exceeded",
  "code": "rate_limits_m.exceeded",
  "class": "temporary",
  "retryable": true
}
{
  "status": 0,
  "message": "string",
  "code": "transfers_m.account_not_found",
  "class": "validation",
  "retryable": false,
  "details": [
    {
      "field": "amount",
      "rule": "gt",
      "param": "0",
      "message": "amount must be greater than 0"
    }
  ]
}

{
  "overall_status": "unhealthy",
  "message": "Service is shutting down",
  "timestamp": "2026-08-27T15:04:05Z"
}