Get external Transfers (need access to Daily Spending Report)

Get External Transfers Report

This endpoint retrieves a list of external transfers between financial institutions or accounts, intended for use in generating the Daily Spending Report. Results can be filtered by date range or custom criteria and support cursor-based pagination for large datasets. Access to the Daily Spending Report feature is required to call this endpoint.

Endpoint

POST /Report/externalTransfers

Authentication

Bearer token required. Obtain via:

POST https://api.banking.netevia.dev/api/auth/v2

Include in header: Authorization: Bearer {token}
Token lifetime: 10 minutes. Refresh via POST /api/auth/refresh.

When to use

Use this endpoint when you need to produce a Daily Spending Report that includes ACH and other external transfer activity across customer accounts. It is suitable for reconciliation workflows, partner-level financial reporting, and compliance audits that require a full history of external account movement within a defined time window. Combine fromDate and toDate filters with cursor-based pagination to efficiently process large volumes of transfer records.

Request Body

FieldTypeRequiredDescription
cardProductIdstringNoIdentifier for the card product to scope the report. Pass null to include all card products.
takeinteger (int32)NoNumber of external transfer records to return per request. Pass null to retrieve all results without a page limit.
afterCursorstringNoOpaque cursor string returned by a previous response. Pass this value to fetch the next page of results.
fromDatestring (date-time)NoISO 8601 start timestamp. Only transfers on or after this date-time are included.
toDatestring (date-time)NoISO 8601 end timestamp. Only transfers on or before this date-time are included.
jsonFilterstringNoJSON-formatted string for applying custom filters (e.g., transfer type, account identifiers, recipient details).
{
  "cardProductId": null,
  "take": 50,
  "afterCursor": null,
  "fromDate": "2026-06-01T00:00:00Z",
  "toDate": "2026-06-08T23:59:59Z",
  "jsonFilter": null
}

Response

200 OK

The response contains a data object with merged activity records and pagination info, plus a filter object describing available filter categories.

Top-level fields

FieldTypeDescription
dataobjectContains pagination info and the list of activity records.
data.transferPageInfoarrayArray of pagination info objects for transfer result sets.
data.transferPageInfo[].startCursorstringCursor pointing to the first record in this page.
data.transferPageInfo[].endCursorstringCursor pointing to the last record in this page. Use as afterCursor in the next request.
data.transferPageInfo[].hasNextPagebooleanIndicates whether more records exist after this page.
data.transferPageInfo[].hasPreviousPagebooleanIndicates whether records exist before this page.
data.transactionPageInfoobjectPagination info object for the transaction result set (same structure as transferPageInfo items).
data.activityarrayList of external transfer activity records.
filterobjectAvailable filter categories with display metadata.
filter.allobjectFilter item representing all activity types.
filter.depositobjectFilter item for deposit activity.
filter.withdrawobjectFilter item for withdrawal activity.
filter.transfersobjectFilter item for transfer activity.
filter.posobjectFilter item for point-of-sale activity.
filter.transactionStatusobjectFilter item for transaction status groupings.
filter.othersobjectFilter item for other activity types.

Activity record fields (data.activity[])

FieldTypeDescription
idstringUnique identifier of the transfer or transaction.
typenamestringType name of the activity record (e.g., ACHTransfer).
namestringDisplay name for the activity entry.
typeModelstringModel type identifier for internal classification.
pendingAmount.valueinteger (int64)Pending amount in the smallest currency unit (e.g., cents).
pendingAmount.currencyCodestringISO 4217 currency code (e.g., USD).
amount.valueinteger (int64)Settled amount in the smallest currency unit.
amount.currencyCodestringISO 4217 currency code.
lastEventBalanceSnapshot.valueinteger (int64)Account balance snapshot after the last event, in smallest currency unit.
lastEventBalanceSnapshot.currencyCodestringISO 4217 currency code for the balance snapshot.
createdAtstring (date-time)ISO 8601 timestamp when the transfer was created.
isCompletebooleantrue if the transfer has reached a terminal state.
transferStatus.statusstringCurrent transfer status (e.g., PENDING, COMPLETED, RETURNED).
transferStatus.statusReasonCodestringReason code associated with the transfer status.
companyNamestringName of the company associated with the transfer.
descriptor.companyEntryDescriptionstringACH company entry description field.
descriptor.individualNamestringName of the individual associated with the ACH entry.
descriptor.individualIdentificationNumberstringIndividual identification number from the ACH descriptor.
toFinancialAccount.idstringIdentifier of the destination financial account.
toFinancialAccount.namestringDisplay name of the destination financial account.
toFinancialAccount.last4stringLast 4 digits of the destination account number.
toFinancialAccount.providerstringProvider of the destination account (e.g., Finicity, Plaid).
fromFinancialAccount.idstringIdentifier of the source financial account.
fromFinancialAccount.namestringDisplay name of the source financial account.
fromFinancialAccount.last4stringLast 4 digits of the source account number.
fromFinancialAccount.providerstringProvider of the source account.
isBetweenOwnAccountsbooleantrue if the transfer is between accounts owned by the same customer.
purposestringBusiness purpose or memo provided by the initiator.
memostringFree-text memo attached to the transfer.
fromDBAstringDoing-business-as name of the sending party.
toDBAstringDoing-business-as name of the receiving party.
activityInfo.fromProfile.idintegerInternal ID of the sending customer profile.
activityInfo.fromProfile.namestringName of the sending customer profile.
activityInfo.fromProfile.agentIdintegerAgent identifier associated with the sending profile.
activityInfo.toProfile.idintegerInternal ID of the receiving customer profile.
activityInfo.toProfile.namestringName of the receiving customer profile.
activityInfo.toProfile.agentIdintegerAgent identifier associated with the receiving profile.
activityInfo.historyRecordsarrayChronological list of status history entries for this transfer.
activityInfo.historyRecords[].datestring (date-time)Timestamp of this status change.
activityInfo.historyRecords[].statusstringStatus value at this point in time.
{
  "data": {
    "transferPageInfo": [
      {
        "startCursor": "cursor_abc123",
        "endCursor": "cursor_xyz789",
        "hasNextPage": true,
        "hasPreviousPage": false
      }
    ],
    "transactionPageInfo": {
      "startCursor": "cursor_abc123",
      "endCursor": "cursor_xyz789",
      "hasNextPage": true,
      "hasPreviousPage": false
    },
    "activity": [
      {
        "id": "transfer_11223344",
        "typename": "ACHTransfer",
        "name": "ACH Transfer - Payroll",
        "typeModel": "ExternalTransfer",
        "pendingAmount": {
          "value": 0,
          "currencyCode": "USD"
        },
        "amount": {
          "value": 250000,
          "currencyCode": "USD"
        },
        "lastEventBalanceSnapshot": {
          "value": 1500000,
          "currencyCode": "USD"
        },
        "createdAt": "2026-06-05T14:32:00Z",
        "isComplete": true,
        "transferStatus": {
          "status": "COMPLETED",
          "statusReasonCode": null
        },
        "companyName": "Acme Corp",
        "descriptor": {
          "companyEntryDescription": "PAYROLL",
          "individualName": "Jane Smith",
          "individualIdentificationNumber": "EMP00456"
        },
        "toFinancialAccount": {
          "id": "fa_9988776655",
          "name": "Operating Account",
          "last4": "4321",
          "externalBankAccountDetails": {
            "last4": "4321",
            "type": "CHECKING",
            "routingNumber": "021000021",
            "createdAt": "2025-01-15T08:00:00Z",
            "updatedAt": "2025-01-15T08:00:00Z",
            "accountNumber": "XXXXXXXXXX"
          },
          "provider": "Finicity"
        },
        "fromFinancialAccount": {
          "id": "fa_1122334455",
          "name": "Payroll Source Account",
          "last4": "8765",
          "externalBankAccountDetails": null,
          "provider": null
        },
        "isBetweenOwnAccounts": false,
        "purpose": "Payroll disbursement",
        "memo": "June 2026 payroll",
        "fromDBA": "Acme Corp Payroll",
        "toDBA": "Jane Smith",
        "activityInfo": {
          "fromProfile": {
            "id": 1001,
            "name": "Acme Corp",
            "agentId": 200
          },
          "toProfile": {
            "id": 1002,
            "name": "Jane Smith",
            "agentId": 201
          },
          "historyRecords": [
            {
              "date": "2026-06-05T14:32:00Z",
              "status": "PENDING"
            },
            {
              "date": "2026-06-06T09:15:00Z",
              "status": "COMPLETED"
            }
          ]
        }
      }
    ]
  },
  "filter": {
    "all": { "displayName": "All", "value": true, "items": null },
    "deposit": { "displayName": "Deposits", "value": false, "items": null },
    "withdraw": { "displayName": "Withdrawals", "value": false, "items": null },
    "transfers": { "displayName": "Transfers", "value": true, "items": null },
    "pos": { "displayName": "Point of Sale", "value": false, "items": null },
    "transactionStatus": { "displayName": "Status", "value": false, "items": null },
    "others": { "displayName": "Others", "value": false, "items": null }
  }
}

Error Codes

CodeWhen it happens
400Missing required fields, malformed jsonFilter string, or invalid date format
401Token missing, expired, or invalid
403Caller does not have access to the Daily Spending Report feature
404No report data found for the given parameters
500Internal server error

Common Mistakes

  • Providing fromDate or toDate in a non-ISO 8601 format — always use "YYYY-MM-DDTHH:MM:SSZ" format.
  • Passing a hardcoded cursor from a previous session — cursors are not stable across sessions; always use the endCursor returned in the most recent response.
  • Setting take to a very large value without pagination — use a reasonable page size (e.g., 50–200) and iterate using afterCursor to avoid timeouts.
  • Supplying a malformed JSON string in jsonFilter — ensure the value is a valid serialized JSON string, not a raw JSON object.
  • Calling this endpoint without Daily Spending Report access — confirm the partner account has this feature enabled before integrating.

Related Endpoints

  • POST /Report/transactions — Retrieve card transaction activity for the Daily Spending Report
  • POST /Report/internalTransfers — Retrieve internal (between Netevia accounts) transfer activity for reporting
  • GET /FinancialAccount/{financialAccountId}/activity — Retrieve activity for a specific financial account
  • POST /api/auth/v2 — Obtain a Bearer token for authentication

Example

curl -X POST https://api.banking.netevia.dev/Report/externalTransfers \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "cardProductId": null,
    "take": 50,
    "afterCursor": null,
    "fromDate": "2026-06-01T00:00:00Z",
    "toDate": "2026-06-08T23:59:59Z",
    "jsonFilter": null
  }'
Body Params
string | null
int32 | null
string | null
date-time | null
date-time | null
string | null
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
string
enum
Defaults to application/json

Generated from available request content types

Allowed:
Response

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
text/plain
application/json
text/json