Corex

The Truss Corex API provides account data using Core Exchange 6.3.1 / FDX response formats. It supports business checking accounts and, when available, the authorized customer's open business charge-card account. The Corex API Reference contains the full request and response schemas for the operations below.

1. Enable access and obtain an access token

Contact Truss to obtain OAuth credentials and confirm Corex access in your chosen environment. Ask for the accounts:read scope to be approved for your application.

Follow the OAuth Integration Guide, requesting accounts:read. Include offline_access if your integration needs refresh tokens:

scope=accounts:read offline_access

For the development environment used below, follow that OAuth flow with development credentials. Authorize users at https://app.dev.trusspayments.com/oauth/authorize and exchange or refresh tokens at https://auth.foundation.dev.trusspayments.com/v1/oauth2/token.

Every Corex endpoint requires an access token with accounts:read, including customer details, transactions, and statements. Send it as a Bearer token. Foundation scopes such as transactions:read do not replace accounts:read.

Use the Corex base URL confirmed by Truss for your environment. The examples below use development:

export TRUSS_COREX_BASE_URL='https://api.dev.trusspayments.com/fdx/v6'
export TRUSS_ACCESS_TOKEN='YOUR_ACCESS_TOKEN'

Resource paths have no trailing slash. Include /fdx/v6 only once when constructing requests.

2. List accounts and select an account ID

curl --fail-with-body \
  --header "Authorization: Bearer ${TRUSS_ACCESS_TOKEN}" \
  "${TRUSS_COREX_BASE_URL}/accounts"

The response contains accounts and page. Each account has an accountId; copy the returned value for subsequent requests:

export TRUSS_ACCOUNT_ID='ACCOUNT_ID_FROM_RESPONSE'

Treat account IDs as opaque identifiers. Do not substitute an account number, a card number, or a Foundation resource ID.

Checking accounts have accountCategory: DEPOSIT_ACCOUNT and accountType: CHECKING. Charge-card accounts, when available, have accountCategory: LOC_ACCOUNT and accountType: CHARGE. Only accounts available to the authorized customer are returned. If no accounts are available, this endpoint returns HTTP 404.

The account list returns all available accounts in one response with page: {}; it does not support pagination or account filters.

3. Fetch transactions and follow pagination

curl --fail-with-body --get \
  --header "Authorization: Bearer ${TRUSS_ACCESS_TOKEN}" \
  --data-urlencode 'limit=100' \
  --data-urlencode 'startTime=2026-01-01T00:00:00Z' \
  --data-urlencode 'endTime=2026-01-31T23:59:59Z' \
  "${TRUSS_COREX_BASE_URL}/accounts/${TRUSS_ACCOUNT_ID}/transactions"

The response contains a transactions array and a page object. Transactions are ordered newest first and reported with status: POSTED; pending card authorizations are not included. The supported query parameters are:

Parameter Behavior
endTime Optional inclusive end time. An omitted or future value is capped at the first request's current time. A date-only value includes that entire day, subject to the same cap.
limit Page size; defaults to 100. Values are constrained to 1–500.
offset For the next page, send the exact opaque value returned in page.nextOffset. Omit on the first request.
startTime Optional inclusive start time. Omit to read from the beginning of the available history.

Use ISO 8601 timestamps with a timezone, as shown above, or dates in YYYY-MM-DD format for the time filters.

If page.nextOffset is present, copy it without decoding or modifying it and request the next page:

export TRUSS_NEXT_OFFSET='NEXT_OFFSET_FROM_RESPONSE'

curl --fail-with-body --get \
  --header "Authorization: Bearer ${TRUSS_ACCESS_TOKEN}" \
  --data-urlencode 'limit=100' \
  --data-urlencode "offset=${TRUSS_NEXT_OFFSET}" \
  "${TRUSS_COREX_BASE_URL}/accounts/${TRUSS_ACCOUNT_ID}/transactions"

Continue until page.nextOffset is absent. The cursor preserves the original time window; omit the time filters on subsequent requests. To use a different window, start a new request without an offset.

4. List and download deposit statements

curl --fail-with-body \
  --header "Authorization: Bearer ${TRUSS_ACCESS_TOKEN}" \
  "${TRUSS_COREX_BASE_URL}/accounts/${TRUSS_ACCOUNT_ID}/statements"

Deposit statement lists contain closed monthly periods, newest first. The response contains statements and page: {} and does not support pagination or date filters. Choose a returned statementId:

export TRUSS_STATEMENT_ID='STATEMENT_ID_FROM_RESPONSE'

curl --fail \
  --header "Authorization: Bearer ${TRUSS_ACCESS_TOKEN}" \
  --output statement.pdf \
  "${TRUSS_COREX_BASE_URL}/accounts/${TRUSS_ACCOUNT_ID}/statements/${TRUSS_STATEMENT_ID}"

A successful download returns application/pdf. Keep curl's default Accept: */* header for downloads; sending only Accept: application/pdf currently returns HTTP 406. A deposit PDF that is not yet available returns HTTP 404. Charge-card statement lists return an empty statements array, and charge-card statement downloads return HTTP 404.

Supported operations

All paths below are relative to the Corex base URL and require accounts:read.

Method Path Current support
GET /accounts List available checking accounts and, when available, the charge-card account.
GET /accounts/{accountId} Fetch one account.
GET /accounts/{accountId}/asset-transfer-networks Returns {"assetTransferNetworks": []} for a valid account. Brokerage transfer networks are not supported.
GET /accounts/{accountId}/contact Fetch account holder contact details; returns HTTP 404 when complete contact information is unavailable.
GET /accounts/{accountId}/payment-networks Return US_ACH routing for a checking account when available. Charge-card accounts and checking accounts without routing return HTTP 404.
GET /accounts/{accountId}/statements List closed deposit statement periods; charge-card lists are empty.
GET /accounts/{accountId}/statements/{statementId} Download a deposit statement PDF.
GET /accounts/{accountId}/transactions Read transactions using the parameters and pagination above.
GET /customers/current Fetch the authorized customer's ID, name, and status.

Corex provides read access. Use only the operations and parameters documented in the Truss reference; other account types, filters, and operations in the broader Core Exchange specification are not supported by this integration.