Transaction History
Transaction History
List, detail, and statement lookups over previously settled transactions — the transactionhistory package (Service Codes 12-14).
resp, err := transactionhistory.TransactionHistoryList(ctx, transport, hb, transactionhistory.TransactionHistoryListRequest{
PartnerReferenceNo: "2020102900000000000001",
FromDateTime: "2026-09-14T10:00:00+07:00",
ToDateTime: "2026-09-14T10:00:00+07:00",
})
if err != nil {
// errors.Is(err, snap.ErrBadRequest), snap.ErrUnauthorized, etc.
}TransactionHistoryList
Lists past transactions in a date range (Service Code 12).
func TransactionHistoryList(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req TransactionHistoryListRequest) (TransactionHistoryListResponse, error)Request — TransactionHistoryListRequest
pageSize and pageNumber are string, not int — the standard sends them as quoted numbers on the wire (e.g. "10").
| Field | Type | Presence |
|---|---|---|
partnerReferenceNo | string | Optional |
fromDateTime | string | Optional |
toDateTime | string | Optional |
pageSize | string | Optional |
pageNumber | string | Optional |
additionalInfo | json.RawMessage | Optional |
Response — TransactionHistoryListResponse
The response body.
| Field | Type | Presence |
|---|---|---|
responseCode | string | Mandatory |
responseMessage | string | Mandatory |
referenceNo | string | Optional |
partnerReferenceNo | string | Optional |
detailData | []TransactionDetail | Optional |
additionalInfo | json.RawMessage | Optional |
TransactionDetail fields
One entry in detailData.
| Field | Type | Presence |
|---|---|---|
dateTime | string | Optional |
amount | *snap.Money | Optional |
remark | string | Optional |
sourceOfFunds | []SourceOfFund | Optional |
status | string | Mandatory |
type | string | Mandatory |
additionalInfo | json.RawMessage | Optional |
SourceOfFund fields
Describes one source of funds used for a transaction. source is Mandatory; amount is a pointer since only its own value/currency are Mandatory, not the container itself.
| Field | Type | Presence |
|---|---|---|
source | string | Mandatory |
amount | *snap.Money | Optional |
TransactionHistoryDetail
Fetches one transaction’s full detail (Service Code 13).
func TransactionHistoryDetail(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req TransactionHistoryDetailRequest) (TransactionHistoryDetailResponse, error)Request — TransactionHistoryDetailRequest
| Field | Type | Presence |
|---|---|---|
originalPartnerReferenceNo | string | Mandatory |
additionalInfo | json.RawMessage | Optional |
Response — TransactionHistoryDetailResponse
amount and refundAmount are pointers since the container itself is Optional, even though Money’s own value/currency are Mandatory.
| Field | Type | Presence |
|---|---|---|
responseCode | string | Mandatory |
responseMessage | string | Mandatory |
referenceNo | string | Optional |
partnerReferenceNo | string | Optional |
amount | *snap.Money | Optional |
cancelledTime | string | Optional |
dateTime | string | Mandatory |
refundAmount | *snap.Money | Optional |
remark | string | Optional |
sourceOfFunds | []SourceOfFund | Optional |
status | string | Mandatory |
type | string | Mandatory |
additionalInfo | json.RawMessage | Optional |
SourceOfFund fields
Describes one source of funds used for a transaction. source is Mandatory; amount is a pointer since only its own value/currency are Mandatory, not the container itself.
| Field | Type | Presence |
|---|---|---|
source | string | Mandatory |
amount | *snap.Money | Optional |
BankStatement
Fetches a bank-statement-style transaction listing with running balances (Service Code 14).
func BankStatement(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req BankStatementRequest) (BankStatementResponse, error)Request — BankStatementRequest
bankCardToken and accountNo are mutually exclusive — set exactly one. This package doesn’t enforce that; the server does.
| Field | Type | Presence |
|---|---|---|
partnerReferenceNo | string | Optional |
bankCardToken | string | Optional |
accountNo | string | Optional |
fromDateTime | string | Optional |
toDateTime | string | Optional |
additionalInfo | json.RawMessage | Optional |
Response — BankStatementResponse
The response body.
| Field | Type | Presence |
|---|---|---|
responseCode | string | Mandatory |
responseMessage | string | Mandatory |
referenceNo | string | Optional |
partnerReferenceNo | string | Optional |
balance | []BankStatementBalance | Optional |
totalCreditEntries | *BankStatementEntryTotal | Optional |
totalDebitEntries | *BankStatementEntryTotal | Optional |
hasMore | string | Optional |
lastRecordDateTime | string | Optional |
detailData | []BankStatementDetail | Optional |
additionalInfo | json.RawMessage | Optional |
BankStatementBalance fields
One entry in balance: the running balance before/after the statement period. Uses BankStatementBalanceAmount instead of plain Money because it also carries a dateTime.
| Field | Type | Presence |
|---|---|---|
amount | BankStatementBalanceAmount | Mandatory |
startingBalance | BankStatementBalanceAmount | Mandatory |
endingBalance | BankStatementBalanceAmount | Mandatory |
BankStatementBalanceAmount fields
The {value, currency, dateTime} shape used by BankStatementBalance — like Money, plus a timestamp.
| Field | Type | Presence |
|---|---|---|
value | string | Mandatory |
currency | string | Mandatory |
dateTime | string | Mandatory |
BankStatementEntryTotal fields
Shared shape for totalCreditEntries and totalDebitEntries. numberOfEntries is string, not int — same reasoning as pageSize/pageNumber above.
| Field | Type | Presence |
|---|---|---|
numberOfEntries | string | Optional |
amount | snap.Money | Mandatory |
BankStatementDetail fields
One entry in detailData: a single transaction line.
| Field | Type | Presence |
|---|---|---|
detailBalance | *BankStatementDetailBalance | Optional |
amount | *snap.Money | Optional |
originAmount | *snap.Money | Optional |
transactionDate | string | Mandatory |
remark | string | Mandatory |
transactionId | string | Optional |
type | string | Mandatory |
transactionDetailStatus | string | Optional |
detailInfo | json.RawMessage | Optional |
BankStatementDetailBalance fields
The balance immediately before (startAmount) and after (endAmount) one transaction.
| Field | Type | Presence |
|---|---|---|
startAmount | []BankStatementDetailBalanceEntry | Optional |
endAmount | []BankStatementDetailBalanceEntry | Optional |
BankStatementDetailBalanceEntry fields
One entry in startAmount/endAmount.
| Field | Type | Presence |
|---|---|---|
amount | *snap.Money | Optional |