Bỏ qua để đến nội dung

Giao dịch

~27 phút đọc

Giao dịch ngân hàng: danh sách, chi tiết, nguồn gốc, nhật ký, đồng bộ theo con trỏ và tổng hợp.

MethodPathTóm tắtQuyềnNhóm tốc độTương tác
GET/v1/transaction-exports/{id}/fileTải tệp xuất giao dịchtx.readexportScalar
GET/v1/transactionsDanh sách giao dịchtx.readreadScalar
GET/v1/transactions/summaryTổng hợp giao dịchtx.readreadScalar
GET/v1/transactions/syncĐồng bộ thay đổi giao dịchtx.readreadScalar
GET/v1/transactions/{id}Chi tiết giao dịchtx.readreadScalar
GET/v1/transactions/{id}/eventsNhật ký của giao dịchtx.readreadScalar
GET/v1/transactions/{id}/sourcesNguồn gốc của giao dịchtx.read_rawreadScalar
POST/v1/transactions/{id}:decide-manual-verifyDuyệt hoặc từ chối xác nhận thủ côngtx.verify_manual.approvewriteScalar
POST/v1/transactions/{id}:manual-verifyĐề nghị xác nhận thủ côngtx.verify_manual.proposewriteScalar
POST/v1/transactions/{id}:reject-quarantineLoại bỏ giao dịch cách lytx.release_quarantinewriteScalar
POST/v1/transactions/{id}:release-quarantineGỡ cách ly giao dịchtx.release_quarantinewriteScalar
POST/v1/transactions/{id}:unmergeTách giao dịch đã gộptx.unmergewriteScalar
POST/v1/transactions:bulk-noteGhi chú / gắn thẻ hàng loạttx.annotatewriteScalar
POST/v1/transactions:exportXuất giao dịchtx.readexportScalar

Tải tệp xuất giao dịch

Chỉ người đã tạo lệnh xuất (hoặc cùng quyền xem trong công ty) tải được. Hết hạn sau 24 giờ trả 404. Mỗi lần tải được ghi nhật ký kiểm toán.

Quyền: tx.read Scope: transactions:read
  • Nhóm tốc độ: export
  • Phản hồi thành công 200: Tệp CSV, JSON hoặc XLSX. — TransactionExportFile, application/json; string (binary), application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; string, text/csv
  • Mã lỗi riêng của endpoint: resource_not_found
TênVị tríBắt buộcKiểuMô tả
idpathCóJobIdMã tác vụ bất đồng bộ (job_…).
curl -sS -X GET "https://api.dongtien.pro/v1/transaction-exports/$ID/file" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Danh sách giao dịch

Mới nhất trước. Mặc định không gồm giao dịch cách ly và giao dịch đã gộp. Để biết tiền đã về hãy dùng status=confirmed hoặc lắng nghe sự kiện transaction.confirmed.

Quyền: tx.read Scope: transactions:read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Danh sách giao dịch. — TransactionList, application/json
  • Mã lỗi riêng của endpoint: invalid_cursor
TênVị tríBắt buộcKiểuMô tả
limitqueryKhôngintegerSố phần tử mỗi trang (1–100, mặc định 20).
cursorqueryKhôngCursorCon trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa.
statusqueryKhôngTransactionStatusconfirmed: đã xác thực bởi nguồn đáng tin (tiền về). provisional: tạm tính, chưa đủ bằng chứng — không coi là tiền về.
sincequeryKhôngTimestamp | DateTừ thời điểm (gồm) theo occurred_at.
untilqueryKhôngTimestamp | DateĐến thời điểm (không gồm) theo occurred_at.
company_idqueryKhôngOrgIdMã công ty / tổ chức (org_…).
account_idqueryKhôngAccountIdMã tài khoản ngân hàng (acc_…).
directionqueryKhôngstring—
memoqueryKhôngstringMã nội dung chuyển khoản DTP… (khớp chính xác, không phân biệt hoa/thường).
qqueryKhôngstringTìm trong nội dung/đối tác, không phân biệt dấu.
include_quarantinedqueryKhôngstringGồm giao dịch bị cách ly (mặc định không).
include_mergedqueryKhôngstringGồm giao dịch đã bị gộp vào giao dịch khác (mặc định không).
presetqueryKhôngTransactionListPresetBộ lọc nhanh: all Tất cả · needs_action Cần xử lý (tạm tính >24 giờ hoặc đã xác thực nhưng chưa đối soát) · in_today Vào hôm nay (tiền vào từ 00:00 giờ Việt Nam) · provisional_24h Tạm tính >24 giờ · unreconciled Chưa đối soát · quarantined Cách ly (liệt kê cả giao dịch cách ly dù mặc định bị ẩn).
bankqueryKhôngstringMã ngân hàng (ACB, VCB…), không phân biệt hoa/thường.
sourcequeryKhôngstringChỉ giao dịch có ít nhất một nguồn đến từ kênh này.
verificationqueryKhôngstringMức xác thực: provisional tạm tính, verified đã xác thực. Không dùng cùng status khác nghĩa.
amount_minqueryKhônginteger | nullSố tiền tối thiểu (gồm), VND.
amount_maxqueryKhônginteger | nullSố tiền tối đa (gồm), VND; phải ≥ amount_min.
sortqueryKhôngTransactionListSortThứ tự danh sách (mặc định occurred_at_desc, mới nhất trước). Con trỏ gắn với thứ tự: dùng con trỏ của thứ tự khác trả 400 invalid_cursor.
curl -sS -X GET "https://api.dongtien.pro/v1/transactions" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Tổng hợp giao dịch

Số lượng theo bộ lọc nhanh và tổng vào/ra (kèm phần còn tạm tính). Giao dịch cách ly và đã gộp không nằm trong tổng.

Quyền: tx.read Scope: transactions:read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Tổng hợp. — TransactionSummary, application/json
  • Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
TênVị tríBắt buộcKiểuMô tả
fromqueryKhôngTimestamp | DateMặc định: đầu ngày hôm nay (giờ Việt Nam).
toqueryKhôngTimestamp | DateMặc định: bây giờ.
company_idqueryKhôngOrgIdMã công ty / tổ chức (org_…).
account_idqueryKhôngAccountIdMã tài khoản ngân hàng (acc_…).
group_byqueryKhôngstring—
curl -sS -X GET "https://api.dongtien.pro/v1/transactions/summary" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Đồng bộ thay đổi giao dịch

Đọc thay đổi theo con trỏ thay vì quét lại danh sách. Lần đầu bỏ cursor để bắt đầu từ đầu; sau đó luôn dùng next_cursor vừa nhận cho đến khi has_more=false. Tối đa 100 tài khoản trong phạm vi (nhiều hơn: lọc account_id, trả 422 too_many_accounts).

Quyền: tx.read Scope: transactions:read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Trang thay đổi. — SyncPage, application/json
  • Mã lỗi riêng của endpoint: invalid_cursor
TênVị tríBắt buộcKiểuMô tả
cursorqueryKhôngCursorCon trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa.
limitqueryKhôngintegerSố phần tử mỗi trang (1–100, mặc định 20).
account_idqueryKhôngstringChỉ đồng bộ một tài khoản.
curl -sS -X GET "https://api.dongtien.pro/v1/transactions/sync" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Chi tiết giao dịch

Giao dịch đã gộp vẫn truy cập được bằng mã cũ và trả merged_into.

Quyền: tx.read Scope: transactions:read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Giao dịch. — Transaction, application/json
  • Mã lỗi riêng của endpoint: resource_not_found
TênVị tríBắt buộcKiểuMô tả
idpathCóTxIdMã giao dịch (tx_…), ổn định vĩnh viễn kể cả khi bị gộp.
curl -sS -X GET "https://api.dongtien.pro/v1/transactions/$ID" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Nhật ký của giao dịch

Quyền: tx.read Scope: transactions:read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Nhật ký theo thời gian. — TransactionEventList, application/json
  • Mã lỗi riêng của endpoint: invalid_cursor, resource_not_found
TênVị tríBắt buộcKiểuMô tả
idpathCóTxIdMã giao dịch (tx_…), ổn định vĩnh viễn kể cả khi bị gộp.
limitqueryKhôngintegerSố phần tử mỗi trang (1–100, mặc định 20).
cursorqueryKhôngCursorCon trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa.
curl -sS -X GET "https://api.dongtien.pro/v1/transactions/$ID/events" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Nguồn gốc của giao dịch

Các nguồn đã báo giao dịch và mức tin cậy lúc nhận. Cần quyền xem dữ liệu gốc; mỗi lần xem được ghi nhật ký.

Quyền: tx.read_raw
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Các nguồn. — TransactionSourceList, application/json
  • Mã lỗi riêng của endpoint: invalid_cursor, resource_not_found
TênVị tríBắt buộcKiểuMô tả
idpathCóTxIdMã giao dịch (tx_…), ổn định vĩnh viễn kể cả khi bị gộp.
limitqueryKhôngintegerSố phần tử mỗi trang (1–100, mặc định 20).
cursorqueryKhôngCursorCon trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa.
curl -sS -X GET "https://api.dongtien.pro/v1/transactions/$ID/sources" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Duyệt hoặc từ chối xác nhận thủ công

Người thứ hai quyết định yêu cầu đang chờ của giao dịch. Cùng người đề nghị trả 403 approver_same_as_maker. Duyệt xong giao dịch thành verified với verified_by=manual và phát đúng một transaction.confirmed.

Quyền: tx.verify_manual.approve Idempotency-Key: tuỳ chọn
  • Nhóm tốc độ: write
  • Nội dung yêu cầu: DecideManualVerify (application/json, bắt buộc)
  • Phản hồi thành công 200: Giao dịch sau quyết định (vẫn provisional nếu từ chối). — Transaction, application/json
  • Mã lỗi riêng của endpoint: resource_not_found, conflict, idempotency_in_flight, idempotency_key_reused
TênVị tríBắt buộcKiểuMô tả
idpathCóTxIdMã giao dịch (tx_…), ổn định vĩnh viễn kể cả khi bị gộp.
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X POST "https://api.dongtien.pro/v1/transactions/$ID:decide-manual-verify" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"decision": "approve"
}'

Mở trong tài liệu tương tác

Đề nghị xác nhận thủ công

Chỉ tạo yêu cầu duyệt (tx_verify_manual): giao dịch vẫn provisional cho tới khi người thứ hai (khác người đề nghị) duyệt bằng :decide-manual-verify. Cần reason và evidence. Đã có yêu cầu đang chờ trả 409 conflict; giao dịch đã verified, cách ly hoặc đã gộp trả 409 conflict.

Quyền: tx.verify_manual.propose Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóTxIdMã giao dịch (tx_…), ổn định vĩnh viễn kể cả khi bị gộp.
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X POST "https://api.dongtien.pro/v1/transactions/$ID:manual-verify" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "Đã đối chiếu sao kê",
"evidence": "Sao kê VCB ngày 19/10, dòng 12"
}'

Mở trong tài liệu tương tác

Loại bỏ giao dịch cách ly

Bắt buộc reason và evidence; ghi nhật ký kiểm toán. Giao dịch chuyển rejected (cuối cùng, không tính vào số dư/quota/xuất). Không ở trạng thái cách ly trả 409 conflict.

Quyền: tx.release_quarantine Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóTxIdMã giao dịch (tx_…), ổn định vĩnh viễn kể cả khi bị gộp.
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X POST "https://api.dongtien.pro/v1/transactions/$ID:reject-quarantine" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "Đã gọi ngân hàng xác nhận",
"evidence": "Mã tham chiếu FT26292xxxxx khớp sao kê"
}'

Mở trong tài liệu tương tác

Gỡ cách ly giao dịch

Bắt buộc reason và evidence; ghi nhật ký kiểm toán. Giao dịch trở lại active nhưng vẫn provisional (không bao giờ tự xác thực). Không ở trạng thái cách ly trả 409 conflict.

Quyền: tx.release_quarantine Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóTxIdMã giao dịch (tx_…), ổn định vĩnh viễn kể cả khi bị gộp.
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X POST "https://api.dongtien.pro/v1/transactions/$ID:release-quarantine" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "Đã gọi ngân hàng xác nhận",
"evidence": "Mã tham chiếu FT26292xxxxx khớp sao kê"
}'

Mở trong tài liệu tương tác

Tách giao dịch đã gộp

Giao dịch con (merged_into có giá trị) trở lại active; giao dịch chính giảm số nguồn. Ghi nhật ký kiểm toán; quota được tính lại bất đồng bộ. Giao dịch không phải bản gộp trả 409 conflict.

Quyền: tx.unmerge Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóTxIdMã giao dịch (tx_…), ổn định vĩnh viễn kể cả khi bị gộp.
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X POST "https://api.dongtien.pro/v1/transactions/$ID:unmerge" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "Hai giao dịch khác nhau, gộp nhầm"
}'

Mở trong tài liệu tương tác

Ghi chú / gắn thẻ hàng loạt

Tối đa 100 giao dịch một lần. Chỉ là nhãn của người dùng, không tạo bút toán. Giao dịch ngoài phạm vi của người gọi báo not_found thay vì lỗi cả lô.

Quyền: tx.annotate Idempotency-Key: tuỳ chọn
  • Nhóm tốc độ: write
  • Nội dung yêu cầu: BulkNote (application/json, bắt buộc)
  • Phản hồi thành công 200: Kết quả. — BulkNoteResult, application/json
  • Mã lỗi riêng của endpoint: conflict, idempotency_in_flight, idempotency_key_reused
TênVị tríBắt buộcKiểuMô tả
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X POST "https://api.dongtien.pro/v1/transactions:bulk-note" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tx_ids": [
"tx_0f5k2m9q4h7t3n8r6v1w0x5yz0"
]
}'

Mở trong tài liệu tương tác

Xuất giao dịch

Trả 202 và mã tác vụ. Tối đa 50,000 dòng; ô bắt đầu bằng = + - @ được trung hoà để không chạy thành công thức. Không tính quota; ghi nhật ký kiểm toán. Giao dịch cách ly chỉ xuất khi include_quarantined=true.

Quyền: tx.read Scope: transactions:read Idempotency-Key: tuỳ chọn
  • Nhóm tốc độ: export
  • Nội dung yêu cầu: ExportTransactions (application/json, bắt buộc)
  • Phản hồi thành công 202: Đã nhận lệnh xuất. Tác vụ export.transactions thường đã xong khi trả lời; result.download_path trỏ tới tệp (hết hạn sau 24 giờ). — JobAccepted, application/json
  • Mã lỗi riêng của endpoint: conflict, idempotency_in_flight, idempotency_key_reused
TênVị tríBắt buộcKiểuMô tả
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X POST "https://api.dongtien.pro/v1/transactions:export" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"format": "csv",
"company_id": "org_0f5k2m9q4h7t3n8r6v1w0x5yz0",
"account_id": "acc_0f5k2m9q4h7t3n8r6v1w0x5yz0",
"status": "provisional",
"direction": "in",
"include_quarantined": false
}'

Mở trong tài liệu tương tác

TrườngKiểuBắt buộcMô tả
datamap<string, string | number | null>[]Có—
objectstringCóGiá trị: transaction_export.
TrườngKiểuBắt buộcMô tả
dataTransaction[]Có—
data[].accountobjectCó—
data[].amountPositiveVndCó—
data[].balance_afterinteger | nullCóSố dư sau giao dịch nếu nguồn có; không bao giờ suy đoán.
data[].chain_flagstring | nullKhôngChuỗi số dư nghi ngờ quanh giao dịch: chain_mismatch số dư mâu thuẫn, gap_suspected nghi thiếu giao dịch. Chỉ đánh dấu nhất quán — không đổi trạng thái xác thực (D36). Giá trị: chain_mismatch, gap_suspected.
data[].companyobjectCó—
data[].counterpartyobject | nullCó—
data[].currencystringCóGiá trị: VND.
data[].dedupe_hintstring | nullKhôngGợi ý khử trùng lúc nhập: ambiguous (nhiều ứng viên, không gộp), near_duplicate (giống nhưng chưa đủ điểm), locked_period (kỳ đã khoá), quarantined_source (nguồn bị cách ly nên không gộp). Giá trị: ambiguous, near_duplicate, locked_period, quarantined_source.
data[].descriptionstring | nullCó—
data[].directionstringCóGiá trị: in, out.
data[].idTxIdCó—
data[].lifecyclestringCóGiá trị: active, merged_child, quarantined, rejected, released.
data[].memo_codestring | nullCóMã nội dung chuyển khoản DTP… đã trích.
data[].merged_intostring | nullCóKhi bị gộp, mã giao dịch chính; mã tx_ cũ vẫn truy cập được.
data[].objectstringCóGiá trị: transaction.
data[].occurred_atTimestampCó—
data[].occurred_precisionstringCóGiá trị: date, minute, second.
data[].payment_requestPaymentRequestId | nullCó—
data[].quarantine_reasonstring | nullKhôngLý do cách ly khi lifecycle là quarantined/rejected: unverified_sender, device_sig_invalid, dkim_fail, domain_mismatch hoặc lý do do người vận hành nhập; null nếu không bị cách ly.
data[].received_atTimestampCó—
data[].recon_statusstringCóGiá trị: unreconciled, suggested, pending_approval, reconciled, not_required, routed_settlement.
data[].source_countintegerKhôngSố nguồn đã gộp vào giao dịch này (“Gộp từ n nguồn”).
data[].sourcesstring[]CóCác kênh đã báo giao dịch này (sau khi gộp). Giá trị: android, ios, email, openapi, statement, import.
data[].statusTransactionStatusCóGiá trị: provisional, confirmed.
data[].verified_bystring | nullCóBằng chứng đã xác thực giao dịch; null khi còn provisional. Giá trị: openapi, statement, trusted_sender, email_dkim, manual, import.
has_morebooleanCó—
next_cursorstring | nullCóCon trỏ trang kế; null khi hết dữ liệu.
objectstringCóGiá trị: list.
TrườngKiểuBắt buộcMô tả
fromTimestamp | DateCó—
groupsobject[]KhôngChỉ có khi truyền group_by.
groups[].countintegerCó—
groups[].inintegerCóTổng tiền vào (gồm cả tạm tính).
groups[].keystringCó—
groups[].labelstring | nullCó—
groups[].outintegerCóTổng tiền ra (gồm cả tạm tính).
groups[].provisional_inintegerCóTrong đó tiền vào còn tạm tính.
groups[].provisional_outintegerCóTrong đó tiền ra còn tạm tính.
objectstringCóGiá trị: transaction_summary.
presetsobjectCóSố giao dịch theo các bộ lọc nhanh: Tất cả · Cần xử lý · Vào hôm nay · Tạm tính >24h · Chưa đối soát · Cách ly.
presets.allintegerCó—
presets.in_todayintegerCó—
presets.needs_attentionintegerCó—
presets.provisional_over_24hintegerCó—
presets.quarantinedintegerCó—
presets.unreconciledintegerCó—
toTimestamp | DateCó—
totalsobjectCó—
totals.countintegerCó—
totals.inintegerCóTổng tiền vào (gồm cả tạm tính).
totals.outintegerCóTổng tiền ra (gồm cả tạm tính).
totals.provisional_inintegerCóTrong đó tiền vào còn tạm tính.
totals.provisional_outintegerCóTrong đó tiền ra còn tạm tính.
TrườngKiểuBắt buộcMô tả
changesSyncChange[]Có—
changes[].account_idAccountIdCó—
changes[].changestringCóGiá trị: created, verified, merged, unmerged, quarantined, released, annotated, source_added, rejected, recon_changed.
changes[].seqintegerCóSố thứ tự thay đổi trong tài khoản (tăng đơn điệu, không bỏ sót).
changes[].transactionTransactionCó—
has_morebooleanCó—
next_cursorstringCóLuôn có; lưu lại và dùng cho lần gọi kế tiếp, kể cả khi changes rỗng.
objectstringCóGiá trị: sync_page.
TrườngKiểuBắt buộcMô tả
accountobjectCó—
account.bankstringCó—
account.idAccountIdCó—
account.labelstringCó—
account.last4stringCó—
amountPositiveVndCó—
balance_afterinteger | nullCóSố dư sau giao dịch nếu nguồn có; không bao giờ suy đoán.
chain_flagstring | nullKhôngChuỗi số dư nghi ngờ quanh giao dịch: chain_mismatch số dư mâu thuẫn, gap_suspected nghi thiếu giao dịch. Chỉ đánh dấu nhất quán — không đổi trạng thái xác thực (D36). Giá trị: chain_mismatch, gap_suspected.
companyobjectCó—
company.idOrgIdCó—
company.mststring | nullCó—
counterpartyobject | nullCó—
counterparty.name_maskedstring | nullCó—
currencystringCóGiá trị: VND.
dedupe_hintstring | nullKhôngGợi ý khử trùng lúc nhập: ambiguous (nhiều ứng viên, không gộp), near_duplicate (giống nhưng chưa đủ điểm), locked_period (kỳ đã khoá), quarantined_source (nguồn bị cách ly nên không gộp). Giá trị: ambiguous, near_duplicate, locked_period, quarantined_source.
descriptionstring | nullCó—
directionstringCóGiá trị: in, out.
idTxIdCó—
lifecyclestringCóGiá trị: active, merged_child, quarantined, rejected, released.
memo_codestring | nullCóMã nội dung chuyển khoản DTP… đã trích.
merged_intostring | nullCóKhi bị gộp, mã giao dịch chính; mã tx_ cũ vẫn truy cập được.
objectstringCóGiá trị: transaction.
occurred_atTimestampCó—
occurred_precisionstringCóGiá trị: date, minute, second.
payment_requestPaymentRequestId | nullCó—
quarantine_reasonstring | nullKhôngLý do cách ly khi lifecycle là quarantined/rejected: unverified_sender, device_sig_invalid, dkim_fail, domain_mismatch hoặc lý do do người vận hành nhập; null nếu không bị cách ly.
received_atTimestampCó—
recon_statusstringCóGiá trị: unreconciled, suggested, pending_approval, reconciled, not_required, routed_settlement.
source_countintegerKhôngSố nguồn đã gộp vào giao dịch này (“Gộp từ n nguồn”).
sourcesstring[]CóCác kênh đã báo giao dịch này (sau khi gộp). Giá trị: android, ios, email, openapi, statement, import.
statusTransactionStatusCóGiá trị: provisional, confirmed.
verified_bystring | nullCóBằng chứng đã xác thực giao dịch; null khi còn provisional. Giá trị: openapi, statement, trusted_sender, email_dkim, manual, import.
TrườngKiểuBắt buộcMô tả
dataTransactionEvent[]Có—
data[].actorstringCóuser:usr_…, system:pipeline, key:apk_……
data[].atTimestampCó—
data[].detailmap<string, any>Có—
data[].kindstringCóGiá trị: created, verified, merged, unmerged, quarantined, released, activated, rejected, recon_changed, annotated, source_added, relation_added, quota_eligible.
data[].objectstringCóGiá trị: transaction_event.
has_morebooleanCó—
next_cursorstring | nullCóCon trỏ trang kế; null khi hết dữ liệu.
objectstringCóGiá trị: list.
TrườngKiểuBắt buộcMô tả
dataTransactionSource[]Có—
data[].channelstringCóGiá trị: android, ios, email, openapi, statement, import.
data[].confidencenumber | nullKhôngĐộ tin cậy của parser (0–1). null khi hệ thống không lưu — hiện tx_sources chưa có cột này.
data[].device_idstring | nullKhôngThiết bị đã gửi tin (dev_…).
data[].dkim_summaryobject | nullKhôngKết quả DKIM của email: miền ký, selector, kết quả, có chuyển tiếp hay không.
data[].objectstringCóGiá trị: transaction_source.
data[].parser_idstring | nullKhôngBộ phân tích đã đọc tin (vcb.sms…); null với nguồn không qua parser.
data[].parser_versionstring | nullKhôngPhiên bản bộ phân tích.
data[].raw_maskedstring | nullKhôngNội dung gốc đã che mọi chuỗi ≥ 8 chữ số (•••1234). Chỉ có khi người gọi có tx.read_raw; null khi bản gốc đã hết hạn lưu hoặc không còn giải mã được.
data[].raw_sha256string | nullKhôngSHA-256 (hex) của nội dung gốc; còn sau khi bản gốc hết hạn lưu.
data[].received_atTimestampCó—
data[].sender_truststringCóGiá trị: os_sender_match, app_package_match, unverified_sender, unavailable, none.
data[].sms_sent_atstring | nullKhôngThời điểm SMSC gửi tin.
data[].source_refstring | nullCóMã tham chiếu của nguồn (id ngân hàng, message-id…), đã che nếu nhạy cảm.
data[].trust_at_receiptstringCóGiá trị: verified, provisional, quarantined.
data[].trust_basisstring | nullCóGiá trị: trusted_sender, sender_verified_ios, email_dkim_direct, email_dkim_forwarded, none.
has_morebooleanCó—
next_cursorstring | nullCóCon trỏ trang kế; null khi hết dữ liệu.
objectstringCóGiá trị: list.
TrườngKiểuBắt buộcMô tả
decisionstringCóGiá trị: approve, reject.
reasonstringKhông—
TrườngKiểuBắt buộcMô tả
evidencestringCóBằng chứng người duyệt đã đối chiếu (ví dụ: sao kê, cuộc gọi ngân hàng). Ghi nhật ký kiểm toán.
reasonstringCó—
TrườngKiểuBắt buộcMô tả
expires_atTimestampCó—
idApprovalRequestIdCó—
kindstringCóGiá trị: tx_verify_manual.
objectstringCóGiá trị: approval_request.
statestringCóGiá trị: pending, approved, rejected, withdrawn, expired.
transaction_idTxIdCó—
TrườngKiểuBắt buộcMô tả
evidencestringCóBằng chứng người duyệt đã đối chiếu (ví dụ: sao kê, cuộc gọi ngân hàng). Ghi nhật ký kiểm toán.
reasonstringCó—
TrườngKiểuBắt buộcMô tả
reasonstringKhông—

Đối tượng khác của nhóm này (xem tài liệu tương tác): BulkNote, BulkNoteResult, ExportTransactions, JobAccepted

Lưu ý về từ "đã xác thực": đây là xác thực nguồn, không phải ngân hàng xác nhận quyết toán.