List Transactions API

GET /transaction — query bank transactions across linked accounts in SePay Bank Hub with pagination plus filters by date, type, and account.

||

API Endpoint

GET
https://bankhub-api.sepay.vn/v1/transaction

Query Parameters

pageinteger

Page number

Default: 1
per_pageinteger

Number of items per page

Default: 20
company_xidstring

Filter by company ID

bank_account_xidstring

Filter by bank account ID

brand_namestring

Filter by bank name (MBBank, Vietcombank...)

transaction_datestring

Filter by specific date (YYYY-MM-DD)

start_transaction_datestring

Filter from date (YYYY-MM-DD)

end_transaction_datestring

Filter to date (YYYY-MM-DD)

transfer_typeenum

Filter by transaction type (credit = incoming, debit = outgoing)

webhook_successenum

Filter by webhook status (0 = failed, 1 = success)

qstring

Search keyword (transaction content, payment code, account number)

Note
  • This API requires a Bearer Token in the Authorization header
  • Results are sorted by newest transaction time by default
  • Use transfer_type to distinguish inbound (credit) and outbound (debit) transactions
  • The webhook_success field indicates whether the webhook was delivered successfully

Error Handling

401Unauthorized

The access token is invalid or has expired

API Response

Response 200 - Success
{
  "data": [
    {
      "transaction_id": "string",
      "transaction_date": "string",
      "bank_account_xid": "string",
      "company_xid": "string",
      "brand_name": "string",
      "account_number": "string",
      "va": "string",
      "va_xid": "string",
      "reference_number": "string",
      "transfer_type": "credit",
      "amount": 0,
      "transaction_content": "string",
      "payment_code": "string",
      "webhook_success": 0
    }
  ],
  "meta": {
    "page": 0,
    "per_page": 0,
    "total": 0,
    "total_pages": 0
  }
}
dataarray<object>

List of transactions

metaobject

Pagination information

Code Examples

>
>
>
curl --request GET \
--url 'https://bankhub-api.sepay.vn/v1/transaction?page=SOME_INTEGER_VALUE&per_page=SOME_INTEGER_VALUE&company_xid=SOME_STRING_VALUE&bank_account_xid=SOME_STRING_VALUE&brand_name=SOME_STRING_VALUE&transaction_date=SOME_STRING_VALUE&start_transaction_date=SOME_STRING_VALUE&end_transaction_date=SOME_STRING_VALUE&transfer_type=SOME_STRING_VALUE&webhook_success=SOME_INTEGER_VALUE&q=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

Usage Examples

JSGet the first page with 10 transactions
1
2
curl --location 'https://bankhub-api.sepay.vn/v1/transaction?per_page=10&page=1' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
JSFilter transactions by company
1
2
curl --location 'https://bankhub-api.sepay.vn/v1/transaction?company_xid=d3dafd01-e06b-11f0-b29e-52c7e9b4f41b' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
JSFilter inbound transactions only
1
2
curl --location 'https://bankhub-api.sepay.vn/v1/transaction?transfer_type=credit' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
JSFilter by date range
1
2
curl --location 'https://bankhub-api.sepay.vn/v1/transaction?start_transaction_date=2024-01-01&end_transaction_date=2024-01-31' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
JSSearch by transaction content
1
2
curl --location 'https://bankhub-api.sepay.vn/v1/transaction?q=DH123456' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'

Performance Notes
  • Use an appropriate per_page value to optimize performance (recommended: 20-50)
  • For large volumes of transactions, filter by company_xid or bank_account_xid
  • Use start_transaction_date and end_transaction_date to limit the time range
  • Combine multiple filters to narrow down search results
Useful Filters
  • transfer_type: Filter by transaction type (credit = inbound, debit = outbound)
  • start_transaction_date / end_transaction_date: Filter by date range
  • q: Search by transaction content, payment code, or account number
  • bank_account_xid: Filter by specific bank account