Đối soát
doi soatĐề nghị phân bổ giao dịch vào công nợ, gợi ý khớp và quy tắc đối soát; duyệt theo chính sách người lập và người duyệt. de nghi phan bo giao dich vao cong no, goi y khop va quy tac doi soat; duyet theo chinh sach nguoi lap va nguoi duyet.Đề nghị phân bổ giao dịch vào công nợ, gợi ý khớp và quy tắc đối soát; duyệt theo chính sách người lập và người duyệt.
Endpoint
Phần tiêu đề “Endpoint”| Method | Path | Tóm tắt | Quyền | Nhóm tốc độ | Tương tác |
|---|---|---|---|---|---|
POST | /v1/accounting/coa-profiles/{id}:duplicate | Nhân bản hồ sơ hệ thống tài khoản | mapping.write | write | Scalar |
GET | /v1/accounting/export-readiness | Kiểm tra mức độ sẵn sàng xuất kế toán | export.dry_run | read | Scalar |
GET | /v1/accounting/mapping/bank-accounts/{id} | Lấy ánh xạ tài khoản ngân hàng sang tài khoản kế toán | mapping.write | read | Scalar |
PUT | /v1/accounting/mapping/bank-accounts/{id} | Cập nhật ánh xạ tài khoản ngân hàng | mapping.write | write | Scalar |
GET | /v1/accounting/mapping/changes | Danh sách thay đổi ánh xạ chờ duyệt | mapping.approve | read | Scalar |
POST | /v1/accounting/mapping/changes/{id}:approve | Duyệt thay đổi ánh xạ | mapping.approve | write | Scalar |
POST | /v1/accounting/mapping/changes/{id}:reject | Từ chối thay đổi ánh xạ | mapping.approve | write | Scalar |
GET | /v1/accounting/mapping/counterparty-codes | Mã đối tượng theo phần mềm đích | mapping.write | read | Scalar |
PUT | /v1/accounting/mapping/counterparty-codes | Đặt mã đối tượng | mapping.write | write | Scalar |
POST | /v1/accounting/mapping/counterparty-codes:import | Nhập danh mục mã đối tượng từ phần mềm đích | mapping.write | write | Scalar |
GET | /v1/accounting/mapping/rules | Danh sách quy tắc định khoản | mapping.write | read | Scalar |
POST | /v1/accounting/mapping/rules | Tạo quy tắc định khoản | mapping.write | write | Scalar |
PATCH | /v1/accounting/mapping/rules/{id} | Cập nhật quy tắc định khoản | mapping.write | write | Scalar |
POST | /v1/accounting/mapping/rules:propose | Đề xuất quy tắc định khoản (gói, maker-checker) | mapping.write | write | Scalar |
GET | /v1/accounting/mapping/templates | Danh sách bộ mẫu quy tắc định khoản | mapping.write | read | Scalar |
POST | /v1/accounting/mapping:apply-template | Áp dụng bộ mẫu quy tắc định khoản | mapping.write | write | Scalar |
GET | /v1/accounting/misa/connection | Thông tin kết nối MISA AMIS | accounting.misa.read | read | Scalar |
PUT | /v1/accounting/misa/connection | Thiết lập kết nối MISA AMIS | accounting.misa.manage | write | Scalar |
DELETE | /v1/accounting/misa/connection | Ngắt kết nối MISA AMIS | accounting.misa.manage | write | Scalar |
POST | /v1/accounting/misa/connection:test | Kiểm tra kết nối và danh mục MISA | accounting.misa.manage | write | Scalar |
GET | /v1/accounting/misa/dictionary | Danh sách ánh xạ danh mục MISA | accounting.misa.read | read | Scalar |
POST | /v1/accounting/misa/dictionary:sync | Đồng bộ danh mục thiếu sang MISA AMIS | accounting.misa.manage | write | Scalar |
GET | /v1/accounting/misa/requests | Danh sách đề nghị chứng từ MISA | accounting.misa.read | read | Scalar |
GET | /v1/accounting/misa/requests/{id} | Chi tiết đề nghị chứng từ MISA | accounting.misa.read | read | Scalar |
POST | /v1/accounting/misa/requests/{id}:cancel | Huỷ đề nghị chứng từ trong MISA | accounting.misa.manage | write | Scalar |
POST | /v1/accounting/misa/requests/{id}:mark-generated | Xác nhận kế toán đã lập chứng từ thủ công | accounting.misa.manage | write | Scalar |
POST | /v1/accounting/misa/requests/{id}:resend | Gửi lại đề nghị chứng từ sang MISA | accounting.misa.manage | write | Scalar |
POST | /v1/accounting/misa/requests/{id}:reverse | Đảo đề nghị chứng từ MISA đã lập | accounting.misa.manage | write | Scalar |
GET | /v1/accounting/periods | Danh sách kỳ kế toán | export.dry_run | read | Scalar |
POST | /v1/accounting/periods/{ym}/lock-requests | Yêu cầu khoá kỳ kế toán | period.lock_request | write | Scalar |
POST | /v1/accounting/periods/{ym}/lock-requests/{id}:approve | Duyệt khoá kỳ kế toán | period.lock_approve | write | Scalar |
POST | /v1/accounting/periods/{ym}/lock-requests/{id}:reject | Từ chối khoá kỳ kế toán | period.lock_approve | write | Scalar |
POST | /v1/accounting/periods/{ym}/unlock-requests | Yêu cầu mở khoá kỳ kế toán | period.unlock_request | write | Scalar |
POST | /v1/accounting/periods/{ym}/unlock-requests/{id}:approve | Duyệt mở khoá kỳ kế toán | period.unlock_approve | write | Scalar |
POST | /v1/accounting/periods/{ym}/unlock-requests/{id}:reject | Từ chối mở khoá kỳ kế toán | period.unlock_approve | write | Scalar |
GET | /v1/allocations | Danh sách phân bổ đối soát | allocation.create | read | Scalar |
POST | /v1/allocations | Tạo bản nháp phân bổ đối soát | allocation.create | write | Scalar |
GET | /v1/allocations/{id} | Chi tiết phân bổ đối soát | allocation.create | read | Scalar |
PATCH | /v1/allocations/{id} | Cập nhật bản nháp phân bổ đối soát | allocation.create | write | Scalar |
DELETE | /v1/allocations/{id} | Xoá bản nháp phân bổ | allocation.create | write | Scalar |
GET | /v1/allocations/{id}/writeback | Trạng thái ghi ngược hoadon.pro của phân bổ | allocation.create | read | Scalar |
POST | /v1/allocations/{id}:approve | Duyệt phân bổ đối soát (checker) | allocation.approve | write | Scalar |
POST | /v1/allocations/{id}:reject | Từ chối phân bổ đối soát | allocation.reject | write | Scalar |
POST | /v1/allocations/{id}:retry-writeback | Thử lại ghi ngược thanh toán sang hoadon.pro | hoadon.writeback.retry | replay | Scalar |
POST | /v1/allocations/{id}:reverse | Đảo phân bổ đã duyệt | allocation.approve | write | Scalar |
POST | /v1/allocations/{id}:submit | Gửi phân bổ để phê duyệt (maker) | allocation.create | write | Scalar |
POST | /v1/allocations/{id}:withdraw | Rút lại phân bổ đang chờ duyệt (maker) | allocation.withdraw | write | Scalar |
POST | /v1/allocations:approve-batch | Duyệt hàng loạt phân bổ (tối đa 50 dòng) | allocation.approve | write | Scalar |
GET | /v1/expected-payments | Danh sách khoản dự thu/chi | allocation.create | read | Scalar |
POST | /v1/expected-payments | Tạo khoản dự thu/chi | allocation.create | write | Scalar |
POST | /v1/expected-payments:import | Nhập hàng loạt dự thu/chi (tối đa 500 dòng) | allocation.create | write | Scalar |
GET | /v1/exports | Danh sách các lô xuất kế toán | export.download | read | Scalar |
POST | /v1/exports | Tạo lô xuất kế toán (gửi duyệt) | export.create | export | Scalar |
POST | /v1/exports/dry-run | Chạy thử kiểm tra xuất kế toán | export.dry_run | export | Scalar |
GET | /v1/exports/golden | Danh sách phiên bản golden templates | export.dry_run | read | Scalar |
GET | /v1/exports/{id} | Chi tiết một lô xuất kế toán | export.download | read | Scalar |
GET | /v1/exports/{id}/file | Tải tệp chứng từ xuất | export.download | read | Scalar |
GET | /v1/exports/{id}/preview | Xem trước các dòng chứng từ của lô xuất | export.download | read | Scalar |
POST | /v1/exports/{id}:approve | Duyệt lô xuất kế toán | export.approve | export | Scalar |
POST | /v1/exports/{id}:re-export | Xuất lại lô chứng từ | export.create | export | Scalar |
POST | /v1/exports/{id}:reject | Từ chối lô xuất kế toán | export.reject | export | Scalar |
POST | /v1/exports/{id}:rerun-checks | Chạy lại kiểm tra điều kiện xuất | export.create | export | Scalar |
GET | /v1/recon-followups | Danh sách việc cần xử lý đối soát | allocation.create | read | Scalar |
GET | /v1/recon-rules | Danh sách quy tắc gợi ý đối soát | rule.read | read | Scalar |
POST | /v1/recon-rules | Tạo quy tắc gợi ý mới (không có auto_post) | rule.manage | write | Scalar |
GET | /v1/recon-rules/{id} | Chi tiết quy tắc đối soát | rule.read | read | Scalar |
PUT | /v1/recon-rules/{id} | Cập nhật quy tắc đối soát (tạo phiên bản mới) | rule.manage | write | Scalar |
DELETE | /v1/recon-rules/{id} | Xoá quy tắc đối soát | rule.manage | write | Scalar |
POST | /v1/recon-rules/{id}:disable | Tắt quy tắc đối soát | rule.manage | write | Scalar |
POST | /v1/recon-rules/{id}:dry-run | Chạy thử quy tắc trên 30 ngày (không ghi sổ) | rule.read | write | Scalar |
POST | /v1/recon-rules/{id}:enable | Bật quy tắc đối soát | rule.manage | write | Scalar |
GET | /v1/recon-settings | Cài đặt dung sai & phạm vi đối soát | rule.read | read | Scalar |
PUT | /v1/recon-settings | Cập nhật cài đặt dung sai & phạm vi đối soát | recon.settings.write | write | Scalar |
GET | /v1/reconciliation/queue | Hàng chờ duyệt đối soát | allocation.create | read | Scalar |
POST | /v1/reconciliation/queue | Đưa giao dịch vào hàng chờ đối soát | allocation.create | write | Scalar |
POST | /v1/reconciliation/suggestions:rerun | Chạy lại công cụ gợi ý đối soát | allocation.create | write | Scalar |
GET | /v1/reconciliation/summary | Tổng quan đối soát | allocation.create | read | Scalar |
GET | /v1/reconciliation/workspace | Dữ liệu màn làm việc đối soát | allocation.create | read | Scalar |
GET | /v1/settlement/obligations | Danh sách nghĩa vụ thanh toán | settlement.read | read | Scalar |
POST | /v1/settlement/obligations/allocations/{aid}:approve | Duyệt gạch nợ nghĩa vụ | obligation_allocation.approve | write | Scalar |
POST | /v1/settlement/obligations/allocations/{aid}:reject | Từ chối gạch nợ nghĩa vụ | obligation_allocation.approve | write | Scalar |
POST | /v1/settlement/obligations/allocations/{aid}:reverse | Đảo gạch nợ đã duyệt | obligation_allocation.approve | write | Scalar |
POST | /v1/settlement/obligations/allocations:bulk-approve | Duyệt hàng loạt gạch nợ | obligation_allocation.approve | write | Scalar |
GET | /v1/settlement/obligations/{id} | Chi tiết nghĩa vụ thanh toán | settlement.read | read | Scalar |
POST | /v1/settlement/obligations/{id}/allocations | Tạo gạch nợ nghĩa vụ với giao dịch ngân hàng | obligation_allocation.create | write | Scalar |
POST | /v1/settlement/obligations/{id}:remind | Gửi nhắc nợ đối tác | settlement.read | write | Scalar |
POST | /v1/settlement/obligations/{id}:statement-send | Gửi bảng kê đối soát qua email | settlement.read | write | Scalar |
POST | /v1/settlement/orders:import | Nhập danh sách đơn hàng xuất từ sàn | payout.import | write | Scalar |
GET | /v1/settlement/payouts | Danh sách đợt quyết toán / sao kê sàn | settlement.read | read | Scalar |
GET | /v1/settlement/payouts/{id} | Chi tiết đợt quyết toán | settlement.read | read | Scalar |
POST | /v1/settlement/payouts/{id}:assign-statement | Gán thủ công giao dịch ngân hàng vào đợt payout | payout.import | write | Scalar |
POST | /v1/settlement/payouts/{id}:reminder | Đặt hẹn nhắc tiền về cho đợt payout | settlement.read | write | Scalar |
POST | /v1/settlement/payouts/{id}:variance-approve | Duyệt ghi nhận chênh lệch payout | payout.variance.approve | write | Scalar |
POST | /v1/settlement/payouts/{id}:variance-claim-export | Xuất tệp khiếu nại chênh lệch gửi sàn | payout.variance.propose | write | Scalar |
POST | /v1/settlement/payouts/{id}:variance-recognition | Đề xuất ghi nhận chênh lệch payout | payout.variance.propose | write | Scalar |
GET | /v1/settlement/report-files/{id} | Tải tệp báo cáo đối soát (XLSX / PDF) | settlement.read | export | Scalar |
GET | /v1/settlement/report-schedules | Danh sách lịch tự động gửi báo cáo đối soát | settlement.read | read | Scalar |
PUT | /v1/settlement/report-schedules/{id} | Cấu hình lịch tự động gửi báo cáo đối soát | settlement.read | write | Scalar |
GET | /v1/settlement/reports/{kind} | Báo cáo đối soát settlement (XLSX / PDF) | settlement.read | read | Scalar |
GET | /v1/settlement/settings | Ngưỡng đối soát payout | settlement.read | read | Scalar |
PUT | /v1/settlement/settings | Đặt ngưỡng đối soát payout | partner.approve | write | Scalar |
GET | /v1/settlement/sku-brand-map | Lấy bảng ánh xạ SKU sang nhãn hàng / đối tác hãng | settlement.read | read | Scalar |
PUT | /v1/settlement/sku-brand-map | Cập nhật bảng ánh xạ SKU sàn | partner.write | write | Scalar |
GET | /v1/settlement/split-rules | Danh sách quy tắc chia doanh thu | settlement.read | read | Scalar |
POST | /v1/settlement/split-rules | Tạo quy tắc chia doanh thu | split_rule.write | write | Scalar |
GET | /v1/settlement/split-rules/{id} | Chi tiết quy tắc chia | settlement.read | read | Scalar |
POST | /v1/settlement/split-rules/{id}/versions | Tạo phiên bản quy tắc mới | split_rule.write | write | Scalar |
POST | /v1/settlement/split-rules/{id}/versions/{vid}:approve | Duyệt phiên bản quy tắc | split_rule.approve | write | Scalar |
POST | /v1/settlement/split-rules/{id}/versions/{vid}:reject | Từ chối phiên bản quy tắc | split_rule.approve | write | Scalar |
GET | /v1/settlement/statements/{id} | Trạng thái nhập sao kê sàn | payout.import | read | Scalar |
POST | /v1/settlement/statements/{id}:commit | Xác nhận nhập sao kê sàn | payout.import | write | Scalar |
POST | /v1/settlement/statements:import | Tải lên tệp sao kê sàn (Shopee, TikTok, Lazada) | payout.import | write | Scalar |
GET | /v1/settlement/summary | Tổng quan đối soát | settlement.read | read | Scalar |
GET | /v1/transactions/{id}/suggestions | Gợi ý đối soát cho một giao dịch | allocation.create | read | Scalar |
POST | /v1/transactions/{id}:ignore-recon | Đánh dấu giao dịch không cần đối soát | allocation.create | write | Scalar |
POST | /v1/transactions/{id}:route-settlement | Chuyển giao dịch payout sang đối soát sàn (Settlement) | allocation.create | write | Scalar |
Chi tiết endpoint
Phần tiêu đề “Chi tiết endpoint”POST /v1/accounting/coa-profiles/{id}:duplicate
Phần tiêu đề “POST /v1/accounting/coa-profiles/{id}:duplicate”Nhân bản hồ sơ hệ thống tài khoản
Nhân bản hồ sơ hệ thống tài khoản và danh mục tài khoản mà không sửa lịch sử.
Quyền: mapping.write Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Nội dung yêu cầu:
DuplicateCoaProfileBody(application/json) - Phản hồi thành công
201: Đã nhân bản hồ sơ thành công. —DuplicateCoaProfileResult,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | string (uuid) | — |
idempotency-key | header | Không | string | Khoá 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/accounting/coa-profiles/$ID:duplicate" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "TT133 - bản nháp chuyển sang TT99"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/coa-profiles/{id}:duplicate", { params: { path: { "id": "<id>" }, }, body: { "name": "TT133 - bản nháp chuyển sang TT99" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import duplicate_coa_profilefrom dongtien_api.models import DuplicateCoaProfileBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = duplicate_coa_profile.sync( id="<id>", client=dt.client, body=DuplicateCoaProfileBody.from_dict({ "name": "TT133 - bản nháp chuyển sang TT99", }), )GET /v1/accounting/export-readiness
Phần tiêu đề “GET /v1/accounting/export-readiness”Kiểm tra mức độ sẵn sàng xuất kế toán
Kiểm tra tiền điều kiện trước khi tạo lô (giao dịch tạm tính, độ khớp số dư, ánh xạ thiếu).
Quyền: export.dry_run- Nhóm tốc độ:
read - Phản hồi thành công
200: Mức độ sẵn sàng xuất kế toán. —ExportReadiness,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
period | query | Có | string | — |
target | query | Có | ExportTarget | Đích xuất kế toán: MISA AMIS, MISA SME, Fast, Excel TT133, Excel TT99 hoặc OpenAPI MISA AMIS. |
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/export-readiness?period=$PERIOD&target=misa_amis" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/export-readiness", { params: { query: { "period": "<period>", "target": "misa_amis" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_export_readiness
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_export_readiness.sync( client=dt.client, period="<period>", target="misa_amis", )GET /v1/accounting/mapping/bank-accounts/{id}
Phần tiêu đề “GET /v1/accounting/mapping/bank-accounts/{id}”Lấy ánh xạ tài khoản ngân hàng sang tài khoản kế toán
Xem định khoản và mã tương ứng của tài khoản ngân hàng trong phần mềm đích.
Quyền: mapping.write- Nhóm tốc độ:
read - Phản hồi thành công
200: Thông tin ánh xạ tài khoản. —BankAccountGlMap \| null,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AccountId | Mã tài khoản ngân hàng (acc_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/mapping/bank-accounts/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/mapping/bank-accounts/{id}", { params: { path: { "id": "acc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_bank_account_gl_map
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_bank_account_gl_map.sync(id="acc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)PUT /v1/accounting/mapping/bank-accounts/{id}
Phần tiêu đề “PUT /v1/accounting/mapping/bank-accounts/{id}”Cập nhật ánh xạ tài khoản ngân hàng
Thiết lập tài khoản kế toán (1121...) và mã tương ứng trong MISA/Fast.
Quyền: mapping.write Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Nội dung yêu cầu:
PutBankAccountGlMapBody(application/json, bắt buộc) - Phản hồi thành công
200: Đã cập nhật ánh xạ. —BankAccountGlMap,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AccountId | Mã tài khoản ngân hàng (acc_…). |
idempotency-key | header | Không | string | Khoá 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 PUT "https://api.dongtien.pro/v1/accounting/mapping/bank-accounts/$ID" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "gl_code": "1121", "effective_from": "2026-10-19"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.PUT("/v1/accounting/mapping/bank-accounts/{id}", { params: { path: { "id": "acc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "gl_code": "1121", "effective_from": "2026-10-19" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import put_bank_account_gl_mapfrom dongtien_api.models import PutBankAccountGlMapBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = put_bank_account_gl_map.sync( id="acc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body=PutBankAccountGlMapBody.from_dict({ "gl_code": "1121", "effective_from": "2026-10-19", }), )GET /v1/accounting/mapping/changes
Phần tiêu đề “GET /v1/accounting/mapping/changes”Danh sách thay đổi ánh xạ chờ duyệt
Các thay đổi ánh xạ tài khoản ngân hàng và quy tắc định khoản đang chờ người kiểm tra duyệt.
Quyền: mapping.approve- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách thay đổi ánh xạ. —MappingChangeList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
state | query | Không | string | — |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
limit | query | Không | integer | — |
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/mapping/changes" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/mapping/changes");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_mapping_changes
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_mapping_changes.sync(client=dt.client)POST /v1/accounting/mapping/changes/{id}:approve
Phần tiêu đề “POST /v1/accounting/mapping/changes/{id}:approve”Duyệt thay đổi ánh xạ
Người kiểm tra (khác người đề xuất) duyệt thay đổi ánh xạ; từ lúc duyệt, ánh xạ mới áp dụng cho các chứng từ chưa xuất.
Quyền: mapping.approve Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã duyệt thay đổi ánh xạ. —MappingChange,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ApprovalRequestId | Mã yêu cầu duyệt (apr_…). |
idempotency-key | header | Không | string | Khoá 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/accounting/mapping/changes/$ID:approve" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/mapping/changes/{id}:approve", { params: { path: { "id": "apr_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import approve_mapping_change
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = approve_mapping_change.sync(id="apr_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/accounting/mapping/changes/{id}:reject
Phần tiêu đề “POST /v1/accounting/mapping/changes/{id}:reject”Từ chối thay đổi ánh xạ
Người kiểm tra từ chối thay đổi ánh xạ; ánh xạ đang áp dụng không đổi.
Quyền: mapping.approve Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Nội dung yêu cầu:
RejectRequestBody(application/json, bắt buộc) - Phản hồi thành công
200: Đã từ chối thay đổi ánh xạ. —MappingChange,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ApprovalRequestId | Mã yêu cầu duyệt (apr_…). |
idempotency-key | header | Không | string | Khoá 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/accounting/mapping/changes/$ID:reject" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Sai tài khoản kế toán, vui lòng kiểm tra lại."}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/mapping/changes/{id}:reject", { params: { path: { "id": "apr_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "reason": "Sai tài khoản kế toán, vui lòng kiểm tra lại." },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import reject_mapping_changefrom dongtien_api.models import RejectRequestBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = reject_mapping_change.sync( id="apr_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body=RejectRequestBody.from_dict({ "reason": "Sai tài khoản kế toán, vui lòng kiểm tra lại.", }), )GET /v1/accounting/mapping/counterparty-codes
Phần tiêu đề “GET /v1/accounting/mapping/counterparty-codes”Mã đối tượng theo phần mềm đích
Mã đối tượng (khách hàng/nhà cung cấp) sẽ xuất cho một đích: mã kế toán đã lưu hoặc mã suy ra (đánh dấu derived = sẽ tạo mới trên đích).
- Nhóm tốc độ:
read - Phản hồi thành công
200: Mã đối tượng. —CounterpartyCodeList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
target | query | Có | CounterpartyCodeTarget | Phần mềm kế toán đích của mã đối tượng. |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
limit | query | Không | integer | — |
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/mapping/counterparty-codes?target=misa_amis" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/mapping/counterparty-codes", { params: { query: { "target": "misa_amis" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_counterparty_codes
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_counterparty_codes.sync(client=dt.client, target="misa_amis")PUT /v1/accounting/mapping/counterparty-codes
Phần tiêu đề “PUT /v1/accounting/mapping/counterparty-codes”Đặt mã đối tượng
Lưu mã đối tượng cho một đối tác trên một đích. Mã trùng với mã của đối tác khác trên cùng đích bị từ chối (409).
Quyền: mapping.write Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Nội dung yêu cầu:
PutCounterpartyCodeBody(application/json, bắt buộc) - Phản hồi thành công
200: Đã lưu mã đối tượng. —CounterpartyCodeEntry,application/json - Mã lỗi riêng của endpoint:
conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
idempotency-key | header | Không | string | Khoá 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 PUT "https://api.dongtien.pro/v1/accounting/mapping/counterparty-codes" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "counterparty_id": "cpt_0f5k2m9q4h7t3n8r6v1w0x5yz0", "target": "misa_amis", "code": "KH_VINHPHAT"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.PUT("/v1/accounting/mapping/counterparty-codes", { body: { "counterparty_id": "cpt_0f5k2m9q4h7t3n8r6v1w0x5yz0", "target": "misa_amis", "code": "KH_VINHPHAT" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import put_counterparty_codefrom dongtien_api.models import PutCounterpartyCodeBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = put_counterparty_code.sync( client=dt.client, body=PutCounterpartyCodeBody.from_dict({ "counterparty_id": "cpt_0f5k2m9q4h7t3n8r6v1w0x5yz0", "target": "misa_amis", "code": "KH_VINHPHAT", }), )POST /v1/accounting/mapping/counterparty-codes:import
Phần tiêu đề “POST /v1/accounting/mapping/counterparty-codes:import”Nhập danh mục mã đối tượng từ phần mềm đích
Dùng lại mã đã có trong MISA/Fast: khớp đối tác theo MST rồi theo tên đã chuẩn hoá và lưu mã.
Quyền: mapping.write Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Nội dung yêu cầu:
ImportCounterpartyCodesBody(application/json, bắt buộc) - Phản hồi thành công
200: Kết quả nhập. —ImportCounterpartyCodesResult,application/json - Mã lỗi riêng của endpoint:
conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
idempotency-key | header | Không | string | Khoá 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/accounting/mapping/counterparty-codes:import" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "target": "misa_amis", "rows": [ { "code": "KH_VINHPHAT", "mst": "0301234567", "name": "CTY CP VAT LIEU XD VINH PHAT" } ]}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/mapping/counterparty-codes:import", { body: { "target": "misa_amis", "rows": [ { "code": "KH_VINHPHAT", "mst": "0301234567", "name": "CTY CP VAT LIEU XD VINH PHAT" } ] },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import import_counterparty_codesfrom dongtien_api.models import ImportCounterpartyCodesBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = import_counterparty_codes.sync( client=dt.client, body=ImportCounterpartyCodesBody.from_dict({ "target": "misa_amis", "rows": [ { "code": "KH_VINHPHAT", "mst": "0301234567", "name": "CTY CP VAT LIEU XD VINH PHAT", }, ], }), )GET /v1/accounting/mapping/rules
Phần tiêu đề “GET /v1/accounting/mapping/rules”Danh sách quy tắc định khoản
Liệt kê các quy tắc định khoản tự động cho giao dịch.
Quyền: mapping.write- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách quy tắc định khoản. —MappingRuleList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
profile_id | query | Không | string (uuid) | — |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
limit | query | Không | integer | — |
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/mapping/rules" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/mapping/rules");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_mapping_rules
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_mapping_rules.sync(client=dt.client)POST /v1/accounting/mapping/rules
Phần tiêu đề “POST /v1/accounting/mapping/rules”Tạo quy tắc định khoản
Thêm quy tắc ánh xạ phân loại sang định khoản Nợ/Có.
Quyền: mapping.write Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Nội dung yêu cầu:
CreateMappingRuleBody(application/json, bắt buộc) - Phản hồi thành công
201: Đã tạo quy tắc định khoản. —MappingRule,application/json - Mã lỗi riêng của endpoint:
conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
idempotency-key | header | Không | string | Khoá 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/accounting/mapping/rules" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Thu tiền khách hàng qua ngân hàng", "profile_id": "0192f2f0-7c3e-7d3a-9b1a-3c5d6e7f8a90", "conditions": {}, "voucher_type": "BC", "debit_account": "1121", "credit_account": "131", "case_code_required": false, "priority": 100, "effective_from": "2026-10-19"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/mapping/rules", { body: { "name": "Thu tiền khách hàng qua ngân hàng", "profile_id": "0192f2f0-7c3e-7d3a-9b1a-3c5d6e7f8a90", "conditions": {}, "voucher_type": "BC", "debit_account": "1121", "credit_account": "131", "case_code_required": false, "priority": 100, "effective_from": "2026-10-19" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import create_mapping_rulefrom dongtien_api.models import CreateMappingRuleBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = create_mapping_rule.sync( client=dt.client, body=CreateMappingRuleBody.from_dict({ "name": "Thu tiền khách hàng qua ngân hàng", "profile_id": "0192f2f0-7c3e-7d3a-9b1a-3c5d6e7f8a90", "conditions": {}, "voucher_type": "BC", "debit_account": "1121", "credit_account": "131", "case_code_required": False, "priority": 100, "effective_from": "2026-10-19", }), )PATCH /v1/accounting/mapping/rules/{id}
Phần tiêu đề “PATCH /v1/accounting/mapping/rules/{id}”Cập nhật quy tắc định khoản
Sửa đổi điều kiện hoặc tài khoản định khoản của quy tắc.
Quyền: mapping.write Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json, bắt buộc) - Phản hồi thành công
200: Đã cập nhật quy tắc. —MappingRule,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MappingRuleId | Mã quy tắc định khoản (map_…). |
idempotency-key | header | Không | string | Khoá 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 PATCH "https://api.dongtien.pro/v1/accounting/mapping/rules/$ID" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Thu tiền khách hàng qua ngân hàng", "profile_id": "0192f2f0-7c3e-7d3a-9b1a-3c5d6e7f8a90", "conditions": {}, "voucher_type": "BC", "debit_account": "1121", "credit_account": "131", "case_code_required": false, "priority": 100, "effective_from": "2026-10-19"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.PATCH("/v1/accounting/mapping/rules/{id}", { params: { path: { "id": "map_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "name": "Thu tiền khách hàng qua ngân hàng", "profile_id": "0192f2f0-7c3e-7d3a-9b1a-3c5d6e7f8a90", "conditions": {}, "voucher_type": "BC", "debit_account": "1121", "credit_account": "131", "case_code_required": false, "priority": 100, "effective_from": "2026-10-19" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import patch_mapping_rule
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = patch_mapping_rule.sync( id="map_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "name": "Thu tiền khách hàng qua ngân hàng", "profile_id": "0192f2f0-7c3e-7d3a-9b1a-3c5d6e7f8a90", "conditions": {}, "voucher_type": "BC", "debit_account": "1121", "credit_account": "131", "case_code_required": False, "priority": 100, "effective_from": "2026-10-19", }, )POST /v1/accounting/mapping/rules:propose
Phần tiêu đề “POST /v1/accounting/mapping/rules:propose”Đề xuất quy tắc định khoản (gói, maker-checker)
Gói một hoặc nhiều quy tắc định khoản thành MỘT yêu cầu duyệt mapping_change; chỉ khi người duyệt (khác người đề xuất) chấp thuận các quy tắc mới có hiệu lực.
- Nhóm tốc độ:
write - Nội dung yêu cầu:
ProposeMappingRulesBody(application/json, bắt buộc) - Phản hồi thành công
201: Đã gửi đề xuất, chờ duyệt. —MappingProposalResult,application/json - Mã lỗi riêng của endpoint:
conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
idempotency-key | header | Không | string | Khoá 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/accounting/mapping/rules:propose" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "rules": [ { "name": "Thu tiền khách hàng qua ngân hàng", "conditions": { "direction": "in" }, "voucher_type": "BC", "debit_account": "1121", "credit_account": "131", "priority": 90 } ], "note": "Quy tắc cho tài khoản VCB chính."}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/mapping/rules:propose", { body: { "rules": [ { "name": "Thu tiền khách hàng qua ngân hàng", "conditions": { "direction": "in" }, "voucher_type": "BC", "debit_account": "1121", "credit_account": "131", "priority": 90 } ], "note": "Quy tắc cho tài khoản VCB chính." },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import propose_mapping_rulesfrom dongtien_api.models import ProposeMappingRulesBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = propose_mapping_rules.sync( client=dt.client, body=ProposeMappingRulesBody.from_dict({ "rules": [ { "name": "Thu tiền khách hàng qua ngân hàng", "conditions": { "direction": "in", }, "voucher_type": "BC", "debit_account": "1121", "credit_account": "131", "priority": 90, }, ], "note": "Quy tắc cho tài khoản VCB chính.", }), )GET /v1/accounting/mapping/templates
Phần tiêu đề “GET /v1/accounting/mapping/templates”Danh sách bộ mẫu quy tắc định khoản
Các bộ mẫu quy tắc có thể áp dụng cho hồ sơ hệ thống tài khoản của công ty (chỉ bộ mẫu cùng hệ thống TK).
Quyền: mapping.write- Nhóm tốc độ:
read - Phản hồi thành công
200: Bộ mẫu áp dụng được. —MappingTemplateList,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/mapping/templates" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/mapping/templates");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_mapping_templates
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_mapping_templates.sync(client=dt.client)POST /v1/accounting/mapping:apply-template
Phần tiêu đề “POST /v1/accounting/mapping:apply-template”Áp dụng bộ mẫu quy tắc định khoản
Tạo toàn bộ quy tắc của bộ mẫu thành MỘT yêu cầu duyệt mapping_change (maker-checker). Từ chối nếu hệ thống TK của hồ sơ khác bộ mẫu hoặc thiếu tài khoản mà bộ mẫu cần.
- Nhóm tốc độ:
write - Nội dung yêu cầu:
ApplyMappingTemplateBody(application/json, bắt buộc) - Phản hồi thành công
201: Đã gửi bộ mẫu để duyệt. —ApplyMappingTemplateResult,application/json - Mã lỗi riêng của endpoint:
conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
idempotency-key | header | Không | string | Khoá 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/accounting/mapping:apply-template" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "template_id": "tt133-standard"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/mapping:apply-template", { body: { "template_id": "tt133-standard" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import apply_mapping_templatefrom dongtien_api.models import ApplyMappingTemplateBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = apply_mapping_template.sync( client=dt.client, body=ApplyMappingTemplateBody.from_dict({ "template_id": "tt133-standard", }), )GET /v1/accounting/misa/connection
Phần tiêu đề “GET /v1/accounting/misa/connection”Thông tin kết nối MISA AMIS
Lấy trạng thái kết nối MISA AMIS của công ty hiện tại.
Quyền: accounting.misa.read- Nhóm tốc độ:
read - Phản hồi thành công
200: Thông tin kết nối. —MisaConnection \| null,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/misa/connection" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/misa/connection");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_misa_connection
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_misa_connection.sync(client=dt.client)PUT /v1/accounting/misa/connection
Phần tiêu đề “PUT /v1/accounting/misa/connection”Thiết lập kết nối MISA AMIS
Lưu mã kết nối AMIS (access_code) do khách hàng cung cấp và thử lấy token ngay.
Quyền: accounting.misa.manage Cần xác thực lại gần đây- Nhóm tốc độ:
write - Nội dung yêu cầu:
PutMisaConnectionBody(application/json, bắt buộc) - Phản hồi thành công
200: Kết nối đã được cập nhật. —MisaConnection,application/json - Mã lỗi riêng của endpoint:
step_up_required,conflict
curl -sS -X PUT "https://api.dongtien.pro/v1/accounting/misa/connection" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "access_code": "AMIS-7F3K9Q2XMD41"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.PUT("/v1/accounting/misa/connection", { body: { "access_code": "AMIS-7F3K9Q2XMD41" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import put_misa_connectionfrom dongtien_api.models import PutMisaConnectionBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = put_misa_connection.sync( client=dt.client, body=PutMisaConnectionBody.from_dict({ "access_code": "AMIS-7F3K9Q2XMD41", }), )DELETE /v1/accounting/misa/connection
Phần tiêu đề “DELETE /v1/accounting/misa/connection”Ngắt kết nối MISA AMIS
Xoá mã kết nối MISA AMIS và ngừng đồng bộ chứng từ.
Quyền: accounting.misa.manage Cần xác thực lại gần đây- Nhóm tốc độ:
write - Phản hồi thành công
204: Đã ngắt kết nối. — không có nội dung - Mã lỗi riêng của endpoint:
step_up_required,conflict
curl -sS -X DELETE "https://api.dongtien.pro/v1/accounting/misa/connection" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.DELETE("/v1/accounting/misa/connection");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import delete_misa_connection
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = delete_misa_connection.sync(client=dt.client)POST /v1/accounting/misa/connection:test
Phần tiêu đề “POST /v1/accounting/misa/connection:test”Kiểm tra kết nối và danh mục MISA
Gọi thử các API danh mục của MISA AMIS để kiểm tra tính hợp lệ của mã kết nối và lấy danh sách chi nhánh, tài khoản ngân hàng.
Quyền: accounting.misa.manage Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Phản hồi thành công
200: Kết quả kiểm tra kết nối. —MisaConnectionTestResult,application/json - Mã lỗi riêng của endpoint:
conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
idempotency-key | header | Không | string | Khoá 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/accounting/misa/connection:test" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/misa/connection:test");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import test_misa_connection
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = test_misa_connection.sync(client=dt.client)GET /v1/accounting/misa/dictionary
Phần tiêu đề “GET /v1/accounting/misa/dictionary”Danh sách ánh xạ danh mục MISA
Xem bảng ánh xạ tài khoản ngân hàng và đối tượng sang mã trong MISA AMIS.
Quyền: accounting.misa.read- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách danh mục MISA. —MisaDictionaryItem[],application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
kind | query | Không | MisaDictionaryKind | Loại danh mục MISA: bank_account (tài khoản ngân hàng) hoặc account_object (khách hàng/nhà cung cấp). |
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/misa/dictionary" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/misa/dictionary");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_misa_dictionary
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_misa_dictionary.sync(client=dt.client)POST /v1/accounting/misa/dictionary:sync
Phần tiêu đề “POST /v1/accounting/misa/dictionary:sync”Đồng bộ danh mục thiếu sang MISA AMIS
Tạo các tài khoản ngân hàng hoặc đối tượng còn thiếu trong MISA bằng save_dictionary kèm ID và thăm dò (poll) kết quả.
Quyền: accounting.misa.manage Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Phản hồi thành công
202: Đã tiếp nhận yêu cầu đồng bộ danh mục. —object,application/json - Mã lỗi riêng của endpoint:
conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
idempotency-key | header | Không | string | Khoá 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/accounting/misa/dictionary:sync" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/misa/dictionary:sync");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import sync_misa_dictionary
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = sync_misa_dictionary.sync(client=dt.client)GET /v1/accounting/misa/requests
Phần tiêu đề “GET /v1/accounting/misa/requests”Danh sách đề nghị chứng từ MISA
Liệt kê các đề nghị lập chứng từ đã gửi sang MISA AMIS.
Quyền: accounting.misa.read- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách đề nghị chứng từ. —MisaVoucherRequestList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
state | query | Không | MisaVoucherRequestState | Trạng thái đề nghị chứng từ MISA: queued, blocked, sent, generated, failed_generation, posted_inferred, unconfirmed, superseded, dead. |
batch_id | query | Không | ExportBatchId | Mã lô xuất kế toán (exb_…). |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
limit | query | Không | integer | — |
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/misa/requests" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/misa/requests");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_misa_voucher_requests
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_misa_voucher_requests.sync(client=dt.client)GET /v1/accounting/misa/requests/{id}
Phần tiêu đề “GET /v1/accounting/misa/requests/{id}”Chi tiết đề nghị chứng từ MISA
Xem chi tiết một đề nghị lập chứng từ và lịch sử gửi.
Quyền: accounting.misa.read- Nhóm tốc độ:
read - Phản hồi thành công
200: Chi tiết đề nghị chứng từ. —MisaVoucherRequest,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MisaVoucherRequestId | Mã đề nghị chứng từ MISA AMIS (mvr_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/misa/requests/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/misa/requests/{id}", { params: { path: { "id": "mvr_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_misa_voucher_request
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_misa_voucher_request.sync(id="mvr_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/accounting/misa/requests/{id}:cancel
Phần tiêu đề “POST /v1/accounting/misa/requests/{id}:cancel”Huỷ đề nghị chứng từ trong MISA
Huỷ đề nghị lập chứng từ (chỉ có tác dụng khi kế toán chưa bấm Lập CT trong AMIS).
Quyền: accounting.misa.manage Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã yêu cầu huỷ đề nghị. —MisaVoucherRequest,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MisaVoucherRequestId | Mã đề nghị chứng từ MISA AMIS (mvr_…). |
idempotency-key | header | Không | string | Khoá 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/accounting/misa/requests/$ID:cancel" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/misa/requests/{id}:cancel", { params: { path: { "id": "mvr_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import cancel_misa_voucher_request
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = cancel_misa_voucher_request.sync(id="mvr_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/accounting/misa/requests/{id}:mark-generated
Phần tiêu đề “POST /v1/accounting/misa/requests/{id}:mark-generated”Xác nhận kế toán đã lập chứng từ thủ công
Đánh dấu thủ công chứng từ đã được lập trong AMIS khi webhook callback chưa được kích hoạt.
Quyền: accounting.misa.manage Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã đánh dấu chứng từ đã lập. —MisaVoucherRequest,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MisaVoucherRequestId | Mã đề nghị chứng từ MISA AMIS (mvr_…). |
idempotency-key | header | Không | string | Khoá 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/accounting/misa/requests/$ID:mark-generated" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/misa/requests/{id}:mark-generated", { params: { path: { "id": "mvr_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import mark_generated_misa_voucher_request
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = mark_generated_misa_voucher_request.sync(id="mvr_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/accounting/misa/requests/{id}:resend
Phần tiêu đề “POST /v1/accounting/misa/requests/{id}:resend”Gửi lại đề nghị chứng từ sang MISA
Gửi lại đề nghị cùng org_refid (MISA sẽ cập nhật đè tại chỗ nếu kế toán chưa bấm Lập CT).
Quyền: accounting.misa.manage Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã đưa đề nghị vào hàng đợi gửi lại. —MisaVoucherRequest,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MisaVoucherRequestId | Mã đề nghị chứng từ MISA AMIS (mvr_…). |
idempotency-key | header | Không | string | Khoá 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/accounting/misa/requests/$ID:resend" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/misa/requests/{id}:resend", { params: { path: { "id": "mvr_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import resend_misa_voucher_request
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = resend_misa_voucher_request.sync(id="mvr_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/accounting/misa/requests/{id}:reverse
Phần tiêu đề “POST /v1/accounting/misa/requests/{id}:reverse”Đảo đề nghị chứng từ MISA đã lập
Ghi nhận chứng từ đã lập (hoặc đã ghi sổ) trong AMIS là bị đảo/huỷ: đề nghị chuyển sang superseded để không còn được tính là đã đẩy. MISA OpenAPI không có lệnh xoá, nên kế toán phải xoá hoặc đảo chứng từ trong AMIS; bút toán đảo tương ứng đi theo lô xuất kế tiếp. Chỉ áp dụng cho đề nghị generated hoặc posted_inferred.
- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã ghi nhận đảo chứng từ. —MisaVoucherRequest,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MisaVoucherRequestId | Mã đề nghị chứng từ MISA AMIS (mvr_…). |
idempotency-key | header | Không | string | Khoá 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/accounting/misa/requests/$ID:reverse" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/misa/requests/{id}:reverse", { params: { path: { "id": "mvr_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import reverse_misa_voucher_request
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = reverse_misa_voucher_request.sync(id="mvr_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)GET /v1/accounting/periods
Phần tiêu đề “GET /v1/accounting/periods”Danh sách kỳ kế toán
Lấy danh sách các kỳ kế toán và trạng thái khoá/mở.
Quyền: export.dry_run- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách các kỳ. —AccountingPeriod[],application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/accounting/periods" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/accounting/periods");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_accounting_periods
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_accounting_periods.sync(client=dt.client)POST /v1/accounting/periods/{ym}/lock-requests
Phần tiêu đề “POST /v1/accounting/periods/{ym}/lock-requests”Yêu cầu khoá kỳ kế toán
Gửi yêu cầu khoá kỳ qua quy trình maker-checker. Cần nêu rõ lý do khoá.
Quyền: period.lock_request Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Nội dung yêu cầu:
LockPeriodRequest(application/json, bắt buộc) - Phản hồi thành công
200: Yêu cầu khoá kỳ đã gửi. —AccountingPeriod,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
ym | path | Có | string | — |
idempotency-key | header | Không | string | Khoá 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/accounting/periods/$YM/lock-requests" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Đã hoàn tất đối soát và chốt sổ tháng 09/2026."}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/periods/{ym}/lock-requests", { params: { path: { "ym": "<ym>" }, }, body: { "reason": "Đã hoàn tất đối soát và chốt sổ tháng 09/2026." },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import request_period_lockfrom dongtien_api.models import LockPeriodRequest
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = request_period_lock.sync( ym="<ym>", client=dt.client, body=LockPeriodRequest.from_dict({ "reason": "Đã hoàn tất đối soát và chốt sổ tháng 09/2026.", }), )POST /v1/accounting/periods/{ym}/lock-requests/{id}:approve
Phần tiêu đề “POST /v1/accounting/periods/{ym}/lock-requests/{id}:approve”Duyệt khoá kỳ kế toán
Người kiểm tra (checker khác maker) duyệt khoá kỳ kế toán.
Quyền: period.lock_approve Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Phản hồi thành công
200: Kỳ kế toán đã được khoá. —AccountingPeriod,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
ym | path | Có | string | — |
id | path | Có | string | — |
idempotency-key | header | Không | string | Khoá 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/accounting/periods/$YM/lock-requests/$ID:approve" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/periods/{ym}/lock-requests/{id}:approve", { params: { path: { "ym": "<ym>", "id": "<id>" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import approve_period_lock
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = approve_period_lock.sync( ym="<ym>", id="<id>", client=dt.client, )POST /v1/accounting/periods/{ym}/lock-requests/{id}:reject
Phần tiêu đề “POST /v1/accounting/periods/{ym}/lock-requests/{id}:reject”Từ chối khoá kỳ kế toán
Người kiểm tra (khác người yêu cầu) từ chối yêu cầu khoá kỳ; kỳ trở lại trạng thái mở.
Quyền: period.lock_approve Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
write - Nội dung yêu cầu:
RejectRequestBody(application/json, bắt buộc) - Phản hồi thành công
200: Yêu cầu khoá đã bị từ chối. —AccountingPeriod,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
ym | path | Có | string | — |
id | path | Có | string | — |
idempotency-key | header | Không | string | Khoá 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/accounting/periods/$YM/lock-requests/$ID:reject" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Sai tài khoản kế toán, vui lòng kiểm tra lại."}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/periods/{ym}/lock-requests/{id}:reject", { params: { path: { "ym": "<ym>", "id": "<id>" }, }, body: { "reason": "Sai tài khoản kế toán, vui lòng kiểm tra lại." },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import reject_period_lockfrom dongtien_api.models import RejectRequestBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = reject_period_lock.sync( ym="<ym>", id="<id>", client=dt.client, body=RejectRequestBody.from_dict({ "reason": "Sai tài khoản kế toán, vui lòng kiểm tra lại.", }), )POST /v1/accounting/periods/{ym}/unlock-requests
Phần tiêu đề “POST /v1/accounting/periods/{ym}/unlock-requests”Yêu cầu mở khoá kỳ kế toán
Gửi yêu cầu mở khoá kỳ đã khoá trước đó (yêu cầu step-up xác thực).
Quyền: period.unlock_request Cần xác thực lại gần đây- Nhóm tốc độ:
write - Nội dung yêu cầu:
UnlockPeriodRequest(application/json, bắt buộc) - Phản hồi thành công
200: Yêu cầu mở khoá đã gửi. —AccountingPeriod,application/json - Mã lỗi riêng của endpoint:
step_up_required,resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
ym | path | Có | string | — |
curl -sS -X POST "https://api.dongtien.pro/v1/accounting/periods/$YM/unlock-requests" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Cần điều chỉnh bút toán phát hiện sai sót sau khi khoá kỳ."}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/periods/{ym}/unlock-requests", { params: { path: { "ym": "<ym>" }, }, body: { "reason": "Cần điều chỉnh bút toán phát hiện sai sót sau khi khoá kỳ." },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import request_period_unlockfrom dongtien_api.models import UnlockPeriodRequest
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = request_period_unlock.sync( ym="<ym>", client=dt.client, body=UnlockPeriodRequest.from_dict({ "reason": "Cần điều chỉnh bút toán phát hiện sai sót sau khi khoá kỳ.", }), )POST /v1/accounting/periods/{ym}/unlock-requests/{id}:approve
Phần tiêu đề “POST /v1/accounting/periods/{ym}/unlock-requests/{id}:approve”Duyệt mở khoá kỳ kế toán
Duyệt mở lại kỳ kế toán (yêu cầu step-up xác thực).
Quyền: period.unlock_approve Cần xác thực lại gần đây- Nhóm tốc độ:
write - Phản hồi thành công
200: Kỳ kế toán đã được mở khoá. —AccountingPeriod,application/json - Mã lỗi riêng của endpoint:
step_up_required,resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
ym | path | Có | string | — |
id | path | Có | string | — |
curl -sS -X POST "https://api.dongtien.pro/v1/accounting/periods/$YM/unlock-requests/$ID:approve" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/periods/{ym}/unlock-requests/{id}:approve", { params: { path: { "ym": "<ym>", "id": "<id>" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import approve_period_unlock
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = approve_period_unlock.sync( ym="<ym>", id="<id>", client=dt.client, )POST /v1/accounting/periods/{ym}/unlock-requests/{id}:reject
Phần tiêu đề “POST /v1/accounting/periods/{ym}/unlock-requests/{id}:reject”Từ chối mở khoá kỳ kế toán
Người kiểm tra từ chối yêu cầu mở khoá; kỳ vẫn khoá (yêu cầu step-up xác thực).
Quyền: period.unlock_approve Cần xác thực lại gần đây- Nhóm tốc độ:
write - Nội dung yêu cầu:
RejectRequestBody(application/json, bắt buộc) - Phản hồi thành công
200: Yêu cầu mở khoá đã bị từ chối. —AccountingPeriod,application/json - Mã lỗi riêng của endpoint:
step_up_required,resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
ym | path | Có | string | — |
id | path | Có | string | — |
curl -sS -X POST "https://api.dongtien.pro/v1/accounting/periods/$YM/unlock-requests/$ID:reject" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Sai tài khoản kế toán, vui lòng kiểm tra lại."}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/accounting/periods/{ym}/unlock-requests/{id}:reject", { params: { path: { "ym": "<ym>", "id": "<id>" }, }, body: { "reason": "Sai tài khoản kế toán, vui lòng kiểm tra lại." },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import reject_period_unlockfrom dongtien_api.models import RejectRequestBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = reject_period_unlock.sync( ym="<ym>", id="<id>", client=dt.client, body=RejectRequestBody.from_dict({ "reason": "Sai tài khoản kế toán, vui lòng kiểm tra lại.", }), )GET /v1/allocations
Phần tiêu đề “GET /v1/allocations”Danh sách phân bổ đối soát
Quyền: allocation.create Scope: reconcile:propose- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách phân bổ —AllocationList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
limit | query | Không | integer | Số phần tử mỗi trang (1–100, mặc định 20). |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
status | query | Không | string | — |
approver | query | Không | string | — |
tx_id | query | Không | TxId | Mã 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/allocations" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/allocations");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_allocations
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_allocations.sync(client=dt.client)POST /v1/allocations
Phần tiêu đề “POST /v1/allocations”Tạo bản nháp phân bổ đối soát
Quyền: allocation.create Scope: reconcile:propose Idempotency-Key: bắt buộc- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
201: Phân bổ đã được tạo ở trạng thái draft —Allocation,application/json - Mã lỗi riêng của endpoint:
idempotency_key_required,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
idempotency-key | header | Không | string | Khoá 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ũ. Bắt buộc ở máy chủ (thiếu → 400 idempotency_key_required); SDK tự sinh. |
curl -sS -X POST "https://api.dongtien.pro/v1/allocations" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "lines": [ { "target_type": "invoice", "amount": 4500000 } ], "overpay_amount": 4500000, "overpay_handling": "customer_advance", "rounding_diff": 4500000}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/allocations", { params: { header: { "idempotency-key": crypto.randomUUID() }, }, body: { "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "lines": [ { "target_type": "invoice", "amount": 4500000 } ], "overpay_amount": 4500000, "overpay_handling": "customer_advance", "rounding_diff": 4500000 },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import create_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = create_allocation.sync( client=dt.client, body={ "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "lines": [ { "target_type": "invoice", "amount": 4500000, }, ], "overpay_amount": 4500000, "overpay_handling": "customer_advance", "rounding_diff": 4500000, }, )Công cụ propose_allocation, scope reconcile:propose.
GET /v1/allocations/{id}
Phần tiêu đề “GET /v1/allocations/{id}”Chi tiết phân bổ đối soát
Quyền: allocation.create- Nhóm tốc độ:
read - Phản hồi thành công
200: Chi tiết phân bổ —Allocation,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AllocationId | Mã phân bổ đối soát (alc_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/allocations/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/allocations/{id}", { params: { path: { "id": "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_allocation.sync(id="alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)PATCH /v1/allocations/{id}
Phần tiêu đề “PATCH /v1/allocations/{id}”Cập nhật bản nháp phân bổ đối soát
Quyền: allocation.create- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Bản nháp đã cập nhật —Allocation,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AllocationId | Mã phân bổ đối soát (alc_…). |
curl -sS -X PATCH "https://api.dongtien.pro/v1/allocations/$ID" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "lines": [ { "target_type": "invoice", "amount": 4500000 } ], "overpay_amount": 4500000, "overpay_handling": "customer_advance", "rounding_diff": 4500000}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.PATCH("/v1/allocations/{id}", { params: { path: { "id": "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "lines": [ { "target_type": "invoice", "amount": 4500000 } ], "overpay_amount": 4500000, "overpay_handling": "customer_advance", "rounding_diff": 4500000 },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import update_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = update_allocation.sync( id="alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "lines": [ { "target_type": "invoice", "amount": 4500000, }, ], "overpay_amount": 4500000, "overpay_handling": "customer_advance", "rounding_diff": 4500000, }, )DELETE /v1/allocations/{id}
Phần tiêu đề “DELETE /v1/allocations/{id}”Xoá bản nháp phân bổ
Quyền: allocation.create- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã xoá bản nháp —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AllocationId | Mã phân bổ đối soát (alc_…). |
curl -sS -X DELETE "https://api.dongtien.pro/v1/allocations/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.DELETE("/v1/allocations/{id}", { params: { path: { "id": "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import delete_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = delete_allocation.sync(id="alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)GET /v1/allocations/{id}/writeback
Phần tiêu đề “GET /v1/allocations/{id}/writeback”Trạng thái ghi ngược hoadon.pro của phân bổ
Quyền: allocation.create- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách writeback —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AllocationId | Mã phân bổ đối soát (alc_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/allocations/$ID/writeback" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/allocations/{id}/writeback", { params: { path: { "id": "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_allocation_writeback
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_allocation_writeback.sync(id="alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/allocations/{id}:approve
Phần tiêu đề “POST /v1/allocations/{id}:approve”Duyệt phân bổ đối soát (checker)
Checker phải khác maker trừ ngoại lệ D41 (org 1 người, khớp 100%, < 20M). Từ 100M cần accountant_chief.
Quyền: allocation.approve- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Phân bổ đã được duyệt —Allocation,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AllocationId | Mã phân bổ đối soát (alc_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/allocations/$ID:approve" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/allocations/{id}:approve", { params: { path: { "id": "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: {},});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import approve_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = approve_allocation.sync( id="alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={}, )POST /v1/allocations/{id}:reject
Phần tiêu đề “POST /v1/allocations/{id}:reject”Từ chối phân bổ đối soát
Quyền: allocation.reject- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Phân bổ đã bị từ chối —Allocation,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AllocationId | Mã phân bổ đối soát (alc_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/allocations/$ID:reject" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "wrong_amount", "note": "Số tiền phân bổ không khớp với hoá đơn."}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/allocations/{id}:reject", { params: { path: { "id": "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "reason": "wrong_amount", "note": "Số tiền phân bổ không khớp với hoá đơn." },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import reject_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = reject_allocation.sync( id="alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "reason": "wrong_amount", "note": "Số tiền phân bổ không khớp với hoá đơn.", }, )POST /v1/allocations/{id}:retry-writeback
Phần tiêu đề “POST /v1/allocations/{id}:retry-writeback”Thử lại ghi ngược thanh toán sang hoadon.pro
Quyền: hoadon.writeback.retry- Nhóm tốc độ:
replay - Phản hồi thành công
200: Đã đưa vào hàng đợi thử lại —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AllocationId | Mã phân bổ đối soát (alc_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/allocations/$ID:retry-writeback" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/allocations/{id}:retry-writeback", { params: { path: { "id": "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import retry_allocation_writeback
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = retry_allocation_writeback.sync(id="alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/allocations/{id}:reverse
Phần tiêu đề “POST /v1/allocations/{id}:reverse”Đảo phân bổ đã duyệt
Sinh dòng âm và đảo trạng thái ghi ngược hoadon.
Quyền: allocation.approve Cần xác thực lại gần đây- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Phân bổ đã được đảo —Allocation,application/json - Mã lỗi riêng của endpoint:
step_up_required,resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AllocationId | Mã phân bổ đối soát (alc_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/allocations/$ID:reverse" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Phân bổ nhầm hoá đơn, cần đảo để phân bổ lại."}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/allocations/{id}:reverse", { params: { path: { "id": "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "reason": "Phân bổ nhầm hoá đơn, cần đảo để phân bổ lại." },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import reverse_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = reverse_allocation.sync( id="alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "reason": "Phân bổ nhầm hoá đơn, cần đảo để phân bổ lại.", }, )POST /v1/allocations/{id}:submit
Phần tiêu đề “POST /v1/allocations/{id}:submit”Gửi phân bổ để phê duyệt (maker)
Quyền: allocation.create Scope: reconcile:propose- Nhóm tốc độ:
write - Phản hồi thành công
200: Phân bổ đã chuyển sang pending_approval —Allocation,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AllocationId | Mã phân bổ đối soát (alc_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/allocations/$ID:submit" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/allocations/{id}:submit", { params: { path: { "id": "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import submit_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = submit_allocation.sync(id="alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/allocations/{id}:withdraw
Phần tiêu đề “POST /v1/allocations/{id}:withdraw”Rút lại phân bổ đang chờ duyệt (maker)
Quyền: allocation.withdraw Scope: reconcile:propose- Nhóm tốc độ:
write - Phản hồi thành công
200: Phân bổ đã rút về draft/withdrawn —Allocation,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | AllocationId | Mã phân bổ đối soát (alc_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/allocations/$ID:withdraw" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/allocations/{id}:withdraw", { params: { path: { "id": "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import withdraw_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = withdraw_allocation.sync(id="alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/allocations:approve-batch
Phần tiêu đề “POST /v1/allocations:approve-batch”Duyệt hàng loạt phân bổ (tối đa 50 dòng)
Quyền: allocation.approve- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Kết quả duyệt hàng loạt —object,application/json - Mã lỗi riêng của endpoint:
conflict
curl -sS -X POST "https://api.dongtien.pro/v1/allocations:approve-batch" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ids": [ "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" ]}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/allocations:approve-batch", { body: { "ids": [ "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0" ] },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import approve_batch_allocations
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = approve_batch_allocations.sync( client=dt.client, body={ "ids": [ "alc_0f5k2m9q4h7t3n8r6v1w0x5yz0", ], }, )GET /v1/expected-payments
Phần tiêu đề “GET /v1/expected-payments”Danh sách khoản dự thu/chi
Quyền: allocation.create- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách dự thu/chi —ExpectedPaymentList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
limit | query | Không | integer | Số phần tử mỗi trang (1–100, mặc định 20). |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
state | query | Không | string | — |
kind | query | Không | string | — |
curl -sS -X GET "https://api.dongtien.pro/v1/expected-payments" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/expected-payments");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_expected_payments
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_expected_payments.sync(client=dt.client)POST /v1/expected-payments
Phần tiêu đề “POST /v1/expected-payments”Tạo khoản dự thu/chi
Quyền: allocation.create- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
201: Khoản dự thu/chi đã tạo —object,application/json - Mã lỗi riêng của endpoint:
conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/expected-payments" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "kind": "order", "ref": "DH-2026-001234", "counterparty_name": "Công ty TNHH Thương mại Sao Việt", "counterparty_tax_code": "0312345678", "amount": 12500000, "due_date": "2026-11-05T00:00:00Z", "description": "Thanh toán đơn hàng DH-2026-001234"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/expected-payments", { body: { "kind": "order", "ref": "DH-2026-001234", "counterparty_name": "Công ty TNHH Thương mại Sao Việt", "counterparty_tax_code": "0312345678", "amount": 12500000, "due_date": "2026-11-05T00:00:00Z", "description": "Thanh toán đơn hàng DH-2026-001234" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import create_expected_payment
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = create_expected_payment.sync( client=dt.client, body={ "kind": "order", "ref": "DH-2026-001234", "counterparty_name": "Công ty TNHH Thương mại Sao Việt", "counterparty_tax_code": "0312345678", "amount": 12500000, "due_date": "2026-11-05T00:00:00Z", "description": "Thanh toán đơn hàng DH-2026-001234", }, )POST /v1/expected-payments:import
Phần tiêu đề “POST /v1/expected-payments:import”Nhập hàng loạt dự thu/chi (tối đa 500 dòng)
Quyền: allocation.create- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Kết quả nhập hàng loạt —object,application/json - Mã lỗi riêng của endpoint:
conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/expected-payments:import" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "items": [ { "kind": "order", "counterparty_id": "cpt_0f5k2m9q4h7t3n8r6v1w0x5yz0", "amount": 4500000, "due_date": "2026-10-19T01:30:15Z", "expires_at": "2026-10-19T01:30:15Z" } ]}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/expected-payments:import", { body: { "items": [ { "kind": "order", "counterparty_id": "cpt_0f5k2m9q4h7t3n8r6v1w0x5yz0", "amount": 4500000, "due_date": "2026-10-19T01:30:15Z", "expires_at": "2026-10-19T01:30:15Z" } ] },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import import_expected_payments
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = import_expected_payments.sync( client=dt.client, body={ "items": [ { "kind": "order", "counterparty_id": "cpt_0f5k2m9q4h7t3n8r6v1w0x5yz0", "amount": 4500000, "due_date": "2026-10-19T01:30:15Z", "expires_at": "2026-10-19T01:30:15Z", }, ], }, )GET /v1/exports
Phần tiêu đề “GET /v1/exports”Danh sách các lô xuất kế toán
Liệt kê lịch sử các lô xuất kế toán theo công ty.
Quyền: export.download Scope: export:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách lô xuất. —ExportBatchList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
target | query | Không | ExportTarget | Đích xuất kế toán: MISA AMIS, MISA SME, Fast, Excel TT133, Excel TT99 hoặc OpenAPI MISA AMIS. |
period | query | Không | string | — |
state | query | Không | ExportBatchState | Trạng thái lô xuất: dry_run, pending_approval, approved, failed_validation, rejected, superseded. |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
limit | query | Không | integer | — |
curl -sS -X GET "https://api.dongtien.pro/v1/exports" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/exports");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_export_batches
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_export_batches.sync(client=dt.client)POST /v1/exports
Phần tiêu đề “POST /v1/exports”Tạo lô xuất kế toán (gửi duyệt)
Tạo một lô xuất mới ở trạng thái chờ duyệt (pending_approval). Yêu cầu Idempotency-Key. Nếu còn lỗi chặn (blocking), lô chuyển sang failed_validation.
Quyền: export.create Idempotency-Key: bắt buộc- Nhóm tốc độ:
export - Nội dung yêu cầu:
CreateExportBatchBody(application/json, bắt buộc) - Phản hồi thành công
201: Đã tạo lô xuất kế toán. —ExportBatch,application/json - Mã lỗi riêng của endpoint:
idempotency_key_required,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
idempotency-key | header | Không | string | Khoá 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ũ. Bắt buộc ở máy chủ (thiếu → 400 idempotency_key_required); SDK tự sinh. |
curl -sS -X POST "https://api.dongtien.pro/v1/exports" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "target": "misa_amis", "coa_profile": "TT133", "from": "2026-10-19", "to": "2026-10-19", "account_ids": [ "acc_0f5k2m9q4h7t3n8r6v1w0x5yz0" ], "voucher_types": [ "BC" ], "flags": { "verified_only": true, "invoice_no_in_memo": false, "cash_voucher_pairs": false, "merge_bank_fee_daily": false }, "ack_warnings": false}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/exports", { params: { header: { "idempotency-key": crypto.randomUUID() }, }, body: { "target": "misa_amis", "coa_profile": "TT133", "from": "2026-10-19", "to": "2026-10-19", "account_ids": [ "acc_0f5k2m9q4h7t3n8r6v1w0x5yz0" ], "voucher_types": [ "BC" ], "flags": { "verified_only": true, "invoice_no_in_memo": false, "cash_voucher_pairs": false, "merge_bank_fee_daily": false }, "ack_warnings": false },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import create_export_batchfrom dongtien_api.models import CreateExportBatchBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = create_export_batch.sync( client=dt.client, body=CreateExportBatchBody.from_dict({ "target": "misa_amis", "coa_profile": "TT133", "from": "2026-10-19", "to": "2026-10-19", "account_ids": [ "acc_0f5k2m9q4h7t3n8r6v1w0x5yz0", ], "voucher_types": [ "BC", ], "flags": { "verified_only": True, "invoice_no_in_memo": False, "cash_voucher_pairs": False, "merge_bank_fee_daily": False, }, "ack_warnings": False, }), )POST /v1/exports/dry-run
Phần tiêu đề “POST /v1/exports/dry-run”Chạy thử kiểm tra xuất kế toán
Kiểm tra điều kiện xuất chứng từ (cân đối Nợ-Có, tài khoản đã ánh xạ, kỳ khoá, mã đối tượng). Không lưu dữ liệu, không tiêu số chứng từ.
Quyền: export.dry_run Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
export - Nội dung yêu cầu:
ExportDryRunBody(application/json, bắt buộc) - Phản hồi thành công
200: Kết quả kiểm tra điều kiện xuất. —ExportDryRunResponse,application/json - Mã lỗi riêng của endpoint:
conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
idempotency-key | header | Không | string | Khoá 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/exports/dry-run" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "target": "misa_amis", "coa_profile": "TT133", "from": "2026-10-19", "to": "2026-10-19", "account_ids": [ "acc_0f5k2m9q4h7t3n8r6v1w0x5yz0" ], "voucher_types": [ "BC" ], "flags": { "verified_only": true, "invoice_no_in_memo": false, "cash_voucher_pairs": false, "merge_bank_fee_daily": false }}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/exports/dry-run", { body: { "target": "misa_amis", "coa_profile": "TT133", "from": "2026-10-19", "to": "2026-10-19", "account_ids": [ "acc_0f5k2m9q4h7t3n8r6v1w0x5yz0" ], "voucher_types": [ "BC" ], "flags": { "verified_only": true, "invoice_no_in_memo": false, "cash_voucher_pairs": false, "merge_bank_fee_daily": false } },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import dry_run_exportfrom dongtien_api.models import ExportDryRunBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = dry_run_export.sync( client=dt.client, body=ExportDryRunBody.from_dict({ "target": "misa_amis", "coa_profile": "TT133", "from": "2026-10-19", "to": "2026-10-19", "account_ids": [ "acc_0f5k2m9q4h7t3n8r6v1w0x5yz0", ], "voucher_types": [ "BC", ], "flags": { "verified_only": True, "invoice_no_in_memo": False, "cash_voucher_pairs": False, "merge_bank_fee_daily": False, }, }), )Chạy thử kiểm tra xuất kế toán (mặc định).
dtp export run --format misa --from 2026-10-01 --to 2026-10-31Công cụ draft_export, scope export:create.
GET /v1/exports/golden
Phần tiêu đề “GET /v1/exports/golden”Danh sách phiên bản golden templates
Lấy cấu trúc mẫu xuất kế toán chuẩn của các phần mềm kế toán.
Quyền: export.dry_run- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách golden templates. —object[],application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/exports/golden" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/exports/golden");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_golden_templates
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_golden_templates.sync(client=dt.client)GET /v1/exports/{id}
Phần tiêu đề “GET /v1/exports/{id}”Chi tiết một lô xuất kế toán
Xem chi tiết lô xuất, danh sách kiểm tra và các tệp đính kèm.
Quyền: export.download Scope: export:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Chi tiết lô xuất. —ExportBatchDetail,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ExportBatchId | Mã lô xuất kế toán (exb_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/exports/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/exports/{id}", { params: { path: { "id": "exb_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_export_batch
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_export_batch.sync(id="exb_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)GET /v1/exports/{id}/file
Phần tiêu đề “GET /v1/exports/{id}/file”Tải tệp chứng từ xuất
Tải tệp của lô đã duyệt và sinh xong (file_state = ready). Tệp được phát qua Worker kèm X-Content-SHA256 (sha256 lúc sinh tệp) và mỗi lượt tải được ghi nhật ký. Lô lớn được tách thành nhiều tệp (mỗi tệp tối đa 10.000 dòng, không cắt giữa chứng từ): ..._P001, ..._P002, ... kèm ..._MANIFEST.csv ghi số dòng, số chứng từ và tổng tiền từng phần và tổng toàn lô. Lô có nhiều tệp: bỏ trống name để tải một tệp ZIP chứa tất cả (X-Content-SHA256 là của tệp ZIP), hoặc chỉ định name để tải từng tệp (xem files trong chi tiết lô); ZIP quá lớn (> 40 MB) bị từ chối, hãy tải từng tệp.
- Nhóm tốc độ:
read - Phản hồi thành công
200: Nội dung tệp xuất (xlsx hoặc csv), hoặc tệp ZIP khi lô có nhiều tệp. —string (binary),application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;string (binary),application/zip;string,text/csv - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ExportBatchId | Mã lô xuất kế toán (exb_…). |
name | query | Không | string | Tên tệp trong lô; bỏ trống ở lô nhiều tệp để tải ZIP chứa tất cả. |
curl -sS -X GET "https://api.dongtien.pro/v1/exports/$ID/file" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/exports/{id}/file", { params: { path: { "id": "exb_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_export_file
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_export_file.sync(id="exb_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)GET /v1/exports/{id}/preview
Phần tiêu đề “GET /v1/exports/{id}/preview”Xem trước các dòng chứng từ của lô xuất
Xem danh sách các dòng chứng từ theo từng loại (BC, BN, PT, PC).
Quyền: export.download- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách dòng chứng từ xem trước. —ExportPreviewLineList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor,resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ExportBatchId | Mã lô xuất kế toán (exb_…). |
type | query | Không | VoucherType | Loại chứng từ ngân hàng/tiền mặt: BC (Báo Có), BN (Báo Nợ), PT (Phiếu Thu), PC (Phiếu Chi). |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
limit | query | Không | integer | — |
curl -sS -X GET "https://api.dongtien.pro/v1/exports/$ID/preview" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/exports/{id}/preview", { params: { path: { "id": "exb_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import preview_export_batch
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = preview_export_batch.sync(id="exb_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/exports/{id}:approve
Phần tiêu đề “POST /v1/exports/{id}:approve”Duyệt lô xuất kế toán
Người kiểm tra (checker khác maker) duyệt lô xuất. Cấp dải số chứng từ chính thức và khởi chạy sinh tệp.
Quyền: export.approve Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
export - Phản hồi thành công
200: Đã duyệt lô xuất. —ExportBatch,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ExportBatchId | Mã lô xuất kế toán (exb_…). |
idempotency-key | header | Không | string | Khoá 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/exports/$ID:approve" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/exports/{id}:approve", { params: { path: { "id": "exb_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import approve_export_batch
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = approve_export_batch.sync(id="exb_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/exports/{id}:re-export
Phần tiêu đề “POST /v1/exports/{id}:re-export”Xuất lại lô chứng từ
Tạo một lô xuất mới thay thế (supersedes) lô đã được duyệt trước đó.
Quyền: export.create Idempotency-Key: bắt buộc- Nhóm tốc độ:
export - Phản hồi thành công
201: Lô xuất thay thế đã được tạo. —ExportBatch,application/json - Mã lỗi riêng của endpoint:
idempotency_key_required,resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ExportBatchId | Mã lô xuất kế toán (exb_…). |
idempotency-key | header | Không | string | Khoá 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ũ. Bắt buộc ở máy chủ (thiếu → 400 idempotency_key_required); SDK tự sinh. |
curl -sS -X POST "https://api.dongtien.pro/v1/exports/$ID:re-export" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Idempotency-Key: $(uuidgen)"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/exports/{id}:re-export", { params: { path: { "id": "exb_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, header: { "idempotency-key": crypto.randomUUID() }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import re_export_batch
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = re_export_batch.sync(id="exb_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/exports/{id}:reject
Phần tiêu đề “POST /v1/exports/{id}:reject”Từ chối lô xuất kế toán
Người kiểm tra từ chối duyệt lô xuất và nêu rõ lý do.
Quyền: export.reject Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
export - Nội dung yêu cầu:
RejectExportBatchBody(application/json, bắt buộc) - Phản hồi thành công
200: Đã từ chối lô xuất. —ExportBatch,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ExportBatchId | Mã lô xuất kế toán (exb_…). |
idempotency-key | header | Không | string | Khoá 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/exports/$ID:reject" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Sai tài khoản đối ứng ở chứng từ BC-0012"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/exports/{id}:reject", { params: { path: { "id": "exb_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "reason": "Sai tài khoản đối ứng ở chứng từ BC-0012" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import reject_export_batchfrom dongtien_api.models import RejectExportBatchBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = reject_export_batch.sync( id="exb_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body=RejectExportBatchBody.from_dict({ "reason": "Sai tài khoản đối ứng ở chứng từ BC-0012", }), )POST /v1/exports/{id}:rerun-checks
Phần tiêu đề “POST /v1/exports/{id}:rerun-checks”Chạy lại kiểm tra điều kiện xuất
Chạy lại bộ kiểm tra khi giao dịch hoặc quy tắc ánh xạ đã được cập nhật.
Quyền: export.create Idempotency-Key: tuỳ chọn- Nhóm tốc độ:
export - Phản hồi thành công
200: Kết quả kiểm tra mới. —ExportDryRunResponse,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict,idempotency_in_flight,idempotency_key_reused
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ExportBatchId | Mã lô xuất kế toán (exb_…). |
idempotency-key | header | Không | string | Khoá 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/exports/$ID:rerun-checks" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/exports/{id}:rerun-checks", { params: { path: { "id": "exb_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import rerun_export_checks
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = rerun_export_checks.sync(id="exb_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)GET /v1/recon-followups
Phần tiêu đề “GET /v1/recon-followups”Danh sách việc cần xử lý đối soát
Nhắc thu phần còn lại, nhắc hoàn tiền trả thừa, hoá đơn quá hạn.
Quyền: allocation.create- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách followups —ReconFollowupList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
limit | query | Không | integer | Số phần tử mỗi trang (1–100, mặc định 20). |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
status | query | Không | string | — |
curl -sS -X GET "https://api.dongtien.pro/v1/recon-followups" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/recon-followups");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_recon_followups
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_recon_followups.sync(client=dt.client)GET /v1/recon-rules
Phần tiêu đề “GET /v1/recon-rules”Danh sách quy tắc gợi ý đối soát
Quyền: rule.read- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách quy tắc —MatchRuleList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
limit | query | Không | integer | Số phần tử mỗi trang (1–100, mặc định 20). |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/recon-rules" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/recon-rules");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_recon_rules
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_recon_rules.sync(client=dt.client)POST /v1/recon-rules
Phần tiêu đề “POST /v1/recon-rules”Tạo quy tắc gợi ý mới (không có auto_post)
Quyền: rule.manage- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
201: Quy tắc mới đã tạo —object,application/json - Mã lỗi riêng của endpoint:
conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/recon-rules" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Khớp đúng số tiền và mã đơn hàng", "direction": "in", "strategy": "one_to_one", "priority": 50, "conds": [ { "field": "tx.content", "op": "contains", "value": "DH" } ], "tolerance_vnd": 1000, "window_days": 45, "mode": "suggest_only", "is_enabled": true}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/recon-rules", { body: { "name": "Khớp đúng số tiền và mã đơn hàng", "direction": "in", "strategy": "one_to_one", "priority": 50, "conds": [ { "field": "tx.content", "op": "contains", "value": "DH" } ], "tolerance_vnd": 1000, "window_days": 45, "mode": "suggest_only", "is_enabled": true },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import create_recon_rule
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = create_recon_rule.sync( client=dt.client, body={ "name": "Khớp đúng số tiền và mã đơn hàng", "direction": "in", "strategy": "one_to_one", "priority": 50, "conds": [ { "field": "tx.content", "op": "contains", "value": "DH", }, ], "tolerance_vnd": 1000, "window_days": 45, "mode": "suggest_only", "is_enabled": True, }, )GET /v1/recon-rules/{id}
Phần tiêu đề “GET /v1/recon-rules/{id}”Chi tiết quy tắc đối soát
Quyền: rule.read- Nhóm tốc độ:
read - Phản hồi thành công
200: Chi tiết quy tắc —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MatchRuleId | Mã quy tắc đối soát (rul_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/recon-rules/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/recon-rules/{id}", { params: { path: { "id": "rul_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_recon_rule
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_recon_rule.sync(id="rul_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)PUT /v1/recon-rules/{id}
Phần tiêu đề “PUT /v1/recon-rules/{id}”Cập nhật quy tắc đối soát (tạo phiên bản mới)
Quyền: rule.manage- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Quy tắc đã được cập nhật phiên bản mới —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MatchRuleId | Mã quy tắc đối soát (rul_…). |
curl -sS -X PUT "https://api.dongtien.pro/v1/recon-rules/$ID" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "direction": "in", "strategy": "one_to_one", "conds": [ { "op": "=" } ], "bonus": [ { "tone": "y" } ], "mode": "suggest_only"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.PUT("/v1/recon-rules/{id}", { params: { path: { "id": "rul_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "direction": "in", "strategy": "one_to_one", "conds": [ { "op": "=" } ], "bonus": [ { "tone": "y" } ], "mode": "suggest_only" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import update_recon_rule
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = update_recon_rule.sync( id="rul_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "direction": "in", "strategy": "one_to_one", "conds": [ { "op": "=", }, ], "bonus": [ { "tone": "y", }, ], "mode": "suggest_only", }, )DELETE /v1/recon-rules/{id}
Phần tiêu đề “DELETE /v1/recon-rules/{id}”Xoá quy tắc đối soát
Quyền: rule.manage- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã xoá quy tắc —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MatchRuleId | Mã quy tắc đối soát (rul_…). |
curl -sS -X DELETE "https://api.dongtien.pro/v1/recon-rules/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.DELETE("/v1/recon-rules/{id}", { params: { path: { "id": "rul_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import delete_recon_rule
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = delete_recon_rule.sync(id="rul_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/recon-rules/{id}:disable
Phần tiêu đề “POST /v1/recon-rules/{id}:disable”Tắt quy tắc đối soát
Quyền: rule.manage- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã tắt quy tắc —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MatchRuleId | Mã quy tắc đối soát (rul_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/recon-rules/$ID:disable" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/recon-rules/{id}:disable", { params: { path: { "id": "rul_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import disable_recon_rule
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = disable_recon_rule.sync(id="rul_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/recon-rules/{id}:dry-run
Phần tiêu đề “POST /v1/recon-rules/{id}:dry-run”Chạy thử quy tắc trên 30 ngày (không ghi sổ)
Quyền: rule.read- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Kết quả chạy thử —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MatchRuleId | Mã quy tắc đối soát (rul_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/recon-rules/$ID:dry-run" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "rule": { "direction": "in", "strategy": "one_to_one", "priority": 50, "conds": [ { "op": "=" } ], "bonus": [ { "tone": "y" } ], "tolerance_vnd": 1000, "window_days": 45, "mode": "suggest_only", "is_enabled": true }, "window_days": 30, "limit": 500}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/recon-rules/{id}:dry-run", { params: { path: { "id": "rul_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "rule": { "direction": "in", "strategy": "one_to_one", "priority": 50, "conds": [ { "op": "=" } ], "bonus": [ { "tone": "y" } ], "tolerance_vnd": 1000, "window_days": 45, "mode": "suggest_only", "is_enabled": true }, "window_days": 30, "limit": 500 },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import dry_run_recon_rule
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = dry_run_recon_rule.sync( id="rul_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "rule": { "direction": "in", "strategy": "one_to_one", "priority": 50, "conds": [ { "op": "=", }, ], "bonus": [ { "tone": "y", }, ], "tolerance_vnd": 1000, "window_days": 45, "mode": "suggest_only", "is_enabled": True, }, "window_days": 30, "limit": 500, }, )POST /v1/recon-rules/{id}:enable
Phần tiêu đề “POST /v1/recon-rules/{id}:enable”Bật quy tắc đối soát
Quyền: rule.manage- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã bật quy tắc —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | MatchRuleId | Mã quy tắc đối soát (rul_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/recon-rules/$ID:enable" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/recon-rules/{id}:enable", { params: { path: { "id": "rul_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import enable_recon_rule
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = enable_recon_rule.sync(id="rul_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)GET /v1/recon-settings
Phần tiêu đề “GET /v1/recon-settings”Cài đặt dung sai & phạm vi đối soát
Quyền: rule.read- Nhóm tốc độ:
read - Phản hồi thành công
200: Cài đặt đối soát —object,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/recon-settings" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/recon-settings");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_recon_settings
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_recon_settings.sync(client=dt.client)PUT /v1/recon-settings
Phần tiêu đề “PUT /v1/recon-settings”Cập nhật cài đặt dung sai & phạm vi đối soát
Quyền: recon.settings.write- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Cài đặt đã cập nhật —object,application/json - Mã lỗi riêng của endpoint:
conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
curl -sS -X PUT "https://api.dongtien.pro/v1/recon-settings" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "large_amount_threshold": 4500000, "solo_self_approve_limit": 4500000}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.PUT("/v1/recon-settings", { body: { "large_amount_threshold": 4500000, "solo_self_approve_limit": 4500000 },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import update_recon_settings
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = update_recon_settings.sync( client=dt.client, body={ "large_amount_threshold": 4500000, "solo_self_approve_limit": 4500000, }, )GET /v1/reconciliation/queue
Phần tiêu đề “GET /v1/reconciliation/queue”Hàng chờ duyệt đối soát
Danh sách phân bổ đang ở trạng thái pending_approval kèm checklist kiểm tra chính sách.
Quyền: allocation.create- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách hàng chờ duyệt —ReconQueueList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
limit | query | Không | integer | Số phần tử mỗi trang (1–100, mặc định 20). |
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
filter | query | Không | string | — |
store_id | query | Không | string | — |
counter_id | query | Không | string | — |
curl -sS -X GET "https://api.dongtien.pro/v1/reconciliation/queue" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/reconciliation/queue");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_recon_queue
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_recon_queue.sync(client=dt.client)Công cụ suggest_reconciliation, scope transactions:read.
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "suggest_reconciliation", "arguments": {} }}POST /v1/reconciliation/queue
Phần tiêu đề “POST /v1/reconciliation/queue”Đưa giao dịch vào hàng chờ đối soát
Quyền: allocation.create- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Kết quả đưa vào hàng chờ —object,application/json - Mã lỗi riêng của endpoint:
conflict
curl -sS -X POST "https://api.dongtien.pro/v1/reconciliation/queue" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "tx_ids": [ "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0" ]}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/reconciliation/queue", { body: { "tx_ids": [ "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0" ] },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import enqueue_recon_queue
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = enqueue_recon_queue.sync( client=dt.client, body={ "tx_ids": [ "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", ], }, )POST /v1/reconciliation/suggestions:rerun
Phần tiêu đề “POST /v1/reconciliation/suggestions:rerun”Chạy lại công cụ gợi ý đối soát
Quyền: allocation.create- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Gợi ý đã được tính lại —object,application/json - Mã lỗi riêng của endpoint:
conflict
curl -sS -X POST "https://api.dongtien.pro/v1/reconciliation/suggestions:rerun" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "company_id": "org_0f5k2m9q4h7t3n8r6v1w0x5yz0"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/reconciliation/suggestions:rerun", { body: { "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "company_id": "org_0f5k2m9q4h7t3n8r6v1w0x5yz0" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import rerun_suggestions
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = rerun_suggestions.sync( client=dt.client, body={ "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "company_id": "org_0f5k2m9q4h7t3n8r6v1w0x5yz0", }, )GET /v1/reconciliation/summary
Phần tiêu đề “GET /v1/reconciliation/summary”Tổng quan đối soát
KPI giao dịch chưa đối soát, gợi ý >= 90%, chờ duyệt và tỷ lệ đã đối soát.
Quyền: allocation.create- Nhóm tốc độ:
read - Phản hồi thành công
200: KPI đối soát —object,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/reconciliation/summary" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/reconciliation/summary");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_recon_summary
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_recon_summary.sync(client=dt.client)GET /v1/reconciliation/workspace
Phần tiêu đề “GET /v1/reconciliation/workspace”Dữ liệu màn làm việc đối soát
Danh sách giao dịch chưa đối soát (vào/ra), gợi ý và trạng thái kết nối hoadon.pro.
Quyền: allocation.create- Nhóm tốc độ:
read - Phản hồi thành công
200: Dữ liệu workspace —object,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
company_id | query | Không | OrgId | Mã công ty / tổ chức (org_…). |
direction | query | Không | string | — |
curl -sS -X GET "https://api.dongtien.pro/v1/reconciliation/workspace" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/reconciliation/workspace");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_recon_workspace
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_recon_workspace.sync(client=dt.client)GET /v1/settlement/obligations
Phần tiêu đề “GET /v1/settlement/obligations”Danh sách nghĩa vụ thanh toán
Quyền: settlement.read Scope: settlement:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách nghĩa vụ. —ObligationList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
limit | query | Không | integer | — |
partner_id | query | Không | PartnerId | Mã đối tác sàn/hãng/CTV (ptn_…). |
direction | query | Không | ObligationDirection | in phải thu · out phải trả. |
state | query | Không | ObligationState | not_due chưa đến hạn · awaiting_payout chờ payout · partially_settled đã gạch một phần · settled tất toán · variance chênh lệch. |
is_overdue | query | Không | string | Chỉ nghĩa vụ đã quá hạn. |
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/obligations" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/obligations");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_obligations
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_obligations.sync(client=dt.client)POST /v1/settlement/obligations/allocations/{aid}:approve
Phần tiêu đề “POST /v1/settlement/obligations/allocations/{aid}:approve”Duyệt gạch nợ nghĩa vụ
Checker duyệt allocation: ghi bút toán hai chân vào sổ nghĩa vụ settlement_entries / settlement_lines (append-only) và cập nhật số tiền đã gạch.
- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Gạch nợ đã duyệt thành công. —ObligationAllocation,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
aid | path | Có | ObligationAllocationId | Mã gạch nợ nghĩa vụ (ola_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/obligations/allocations/$AID:approve" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/obligations/allocations/{aid}:approve", { params: { path: { "aid": "ola_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: {},});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import approve_obligation_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = approve_obligation_allocation.sync( aid="ola_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={}, )POST /v1/settlement/obligations/allocations/{aid}:reject
Phần tiêu đề “POST /v1/settlement/obligations/allocations/{aid}:reject”Từ chối gạch nợ nghĩa vụ
Quyền: obligation_allocation.approve- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Gạch nợ đã bị từ chối. —ObligationAllocation,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
aid | path | Có | ObligationAllocationId | Mã gạch nợ nghĩa vụ (ola_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/obligations/allocations/$AID:reject" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Giao dịch ngân hàng không thuộc nghĩa vụ này"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/obligations/allocations/{aid}:reject", { params: { path: { "aid": "ola_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "reason": "Giao dịch ngân hàng không thuộc nghĩa vụ này" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import reject_obligation_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = reject_obligation_allocation.sync( aid="ola_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "reason": "Giao dịch ngân hàng không thuộc nghĩa vụ này", }, )POST /v1/settlement/obligations/allocations/{aid}:reverse
Phần tiêu đề “POST /v1/settlement/obligations/allocations/{aid}:reverse”Đảo gạch nợ đã duyệt
Ghi bút toán đảo (append-only) cho gạch nợ đã duyệt và trả lại số dư còn lại của nghĩa vụ. Cần lý do. Kỳ kế toán đã khoá: bút toán đảo được ghi vào kỳ mở kế tiếp.
Quyền: obligation_allocation.approve- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Gạch nợ đã được đảo. —ObligationAllocation,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
aid | path | Có | ObligationAllocationId | Mã gạch nợ nghĩa vụ (ola_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/obligations/allocations/$AID:reverse" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Gạch nhầm giao dịch"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/obligations/allocations/{aid}:reverse", { params: { path: { "aid": "ola_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "reason": "Gạch nhầm giao dịch" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import reverse_obligation_allocation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = reverse_obligation_allocation.sync( aid="ola_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "reason": "Gạch nhầm giao dịch", }, )POST /v1/settlement/obligations/allocations:bulk-approve
Phần tiêu đề “POST /v1/settlement/obligations/allocations:bulk-approve”Duyệt hàng loạt gạch nợ
Duyệt qua danh sách allocation, mỗi bản ghi kiểm tra độc lập quy tắc maker-checker.
Quyền: obligation_allocation.approve- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Kết quả duyệt hàng loạt. —object,application/json - Mã lỗi riêng của endpoint:
conflict
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/obligations/allocations:bulk-approve" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "allocation_ids": [ "ola_0f5k2m9q4h7t3n8r6v1w0x5yz0" ]}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/obligations/allocations:bulk-approve", { body: { "allocation_ids": [ "ola_0f5k2m9q4h7t3n8r6v1w0x5yz0" ] },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import bulk_approve_obligation_allocations
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = bulk_approve_obligation_allocations.sync( client=dt.client, body={ "allocation_ids": [ "ola_0f5k2m9q4h7t3n8r6v1w0x5yz0", ], }, )GET /v1/settlement/obligations/{id}
Phần tiêu đề “GET /v1/settlement/obligations/{id}”Chi tiết nghĩa vụ thanh toán
Bao gồm chi tiết các dòng cấu thành và các đợt gạch nợ.
Quyền: settlement.read Scope: settlement:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Chi tiết nghĩa vụ. —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ObligationId | Mã nghĩa vụ thanh toán (obl_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/obligations/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/obligations/{id}", { params: { path: { "id": "obl_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_obligation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_obligation.sync(id="obl_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/settlement/obligations/{id}/allocations
Phần tiêu đề “POST /v1/settlement/obligations/{id}/allocations”Tạo gạch nợ nghĩa vụ với giao dịch ngân hàng
Tạo yêu cầu gạch nợ: chỉ giao dịch đã xác thực (verified), đúng chiều (phải thu ⇒ tiền vào, phải trả ⇒ tiền ra), tổng gạch không vượt số tiền giao dịch và số dư còn lại của nghĩa vụ. Trả thừa cần overpay_handling và luôn qua duyệt.
- Nhóm tốc độ:
write - Nội dung yêu cầu:
CreateObligationAllocationBody(application/json) - Phản hồi thành công
201: Yêu cầu gạch nợ đã tạo. —ObligationAllocation,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ObligationId | Mã nghĩa vụ thanh toán (obl_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/obligations/$ID/allocations" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "amount": 4500000, "overpay_handling": "credit_next"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/obligations/{id}/allocations", { params: { path: { "id": "obl_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "amount": 4500000, "overpay_handling": "credit_next" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import create_obligation_allocationfrom dongtien_api.models import CreateObligationAllocationBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = create_obligation_allocation.sync( id="obl_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body=CreateObligationAllocationBody.from_dict({ "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "amount": 4500000, "overpay_handling": "credit_next", }), )POST /v1/settlement/obligations/{id}:remind
Phần tiêu đề “POST /v1/settlement/obligations/{id}:remind”Gửi nhắc nợ đối tác
Gửi email nhắc khoản phải thu/phải trả quá hạn tới địa chỉ liên hệ của đối tác (qua dt-notify, không lặp trong cùng ngày).
Quyền: settlement.read- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Đã gửi nhắc thành công. —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ObligationId | Mã nghĩa vụ thanh toán (obl_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/obligations/$ID:remind" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "recipient_email": "ketoan@congtyabc.vn"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/obligations/{id}:remind", { params: { path: { "id": "obl_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "recipient_email": "ketoan@congtyabc.vn" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import remind_obligation
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = remind_obligation.sync( id="obl_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "recipient_email": "ketoan@congtyabc.vn", }, )POST /v1/settlement/obligations/{id}:statement-send
Phần tiêu đề “POST /v1/settlement/obligations/{id}:statement-send”Gửi bảng kê đối soát qua email
Tạo bảng kê Excel kèm chữ ký HMAC statement_hash và gửi email cho đối tác.
- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Email bảng kê đã được gửi. —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | ObligationId | Mã nghĩa vụ thanh toán (obl_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/obligations/$ID:statement-send" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "recipient_email": "ketoan@congtyabc.vn", "note": "Bảng kê kỳ 01-15/10/2026"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/obligations/{id}:statement-send", { params: { path: { "id": "obl_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "recipient_email": "ketoan@congtyabc.vn", "note": "Bảng kê kỳ 01-15/10/2026" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import send_statement
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = send_statement.sync( id="obl_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "recipient_email": "ketoan@congtyabc.vn", "note": "Bảng kê kỳ 01-15/10/2026", }, )POST /v1/settlement/orders:import
Phần tiêu đề “POST /v1/settlement/orders:import”Nhập danh sách đơn hàng xuất từ sàn
Nhập danh sách đơn hàng (SKU, giá, phí, ngày giao) để phục vụ tính nghĩa vụ hãng/CTV theo sku_brand_map.
- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Kết quả nhập đơn hàng. —object,application/json - Mã lỗi riêng của endpoint:
conflict
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/orders:import" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "platform": "shopee", "shop_id": "shopee_88123456", "orders": [ { "order_no": "2410215ABCD123", "sku": "AO-THUN-DEN-L", "revenue": 350000, "platform_fee": 38500, "voucher_seller": 20000, "net_amount": 291500, "delivered_at": "2026-10-18T09:30:00Z", "ctv_code": "CTV-0123" } ]}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/orders:import", { body: { "platform": "shopee", "shop_id": "shopee_88123456", "orders": [ { "order_no": "2410215ABCD123", "sku": "AO-THUN-DEN-L", "revenue": 350000, "platform_fee": 38500, "voucher_seller": 20000, "net_amount": 291500, "delivered_at": "2026-10-18T09:30:00Z", "ctv_code": "CTV-0123" } ] },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import import_settlement_orders
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = import_settlement_orders.sync( client=dt.client, body={ "platform": "shopee", "shop_id": "shopee_88123456", "orders": [ { "order_no": "2410215ABCD123", "sku": "AO-THUN-DEN-L", "revenue": 350000, "platform_fee": 38500, "voucher_seller": 20000, "net_amount": 291500, "delivered_at": "2026-10-18T09:30:00Z", "ctv_code": "CTV-0123", }, ], }, )GET /v1/settlement/payouts
Phần tiêu đề “GET /v1/settlement/payouts”Danh sách đợt quyết toán / sao kê sàn
Quyền: settlement.read Scope: settlement:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách đợt quyết toán. —PayoutList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
limit | query | Không | integer | — |
platform | query | Không | SettlementPlatform | Sàn thương mại điện tử: shopee · tiktok · lazada. |
state | query | Không | PayoutState | matched khớp tuyệt đối · variance lệch N đ · awaiting_payout chờ tiền về · provisional tạm tính (chỉ SMS/email) · orphan_credit thừa/thiếu statement. |
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/payouts" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/payouts");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_payouts
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_payouts.sync(client=dt.client)GET /v1/settlement/payouts/{id}
Phần tiêu đề “GET /v1/settlement/payouts/{id}”Chi tiết đợt quyết toán
Quyền: settlement.read Scope: settlement:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Chi tiết đợt quyết toán. —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | PayoutId | Mã đợt quyết toán sàn (pay_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/payouts/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/payouts/{id}", { params: { path: { "id": "pay_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_payout
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_payout.sync(id="pay_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/settlement/payouts/{id}:assign-statement
Phần tiêu đề “POST /v1/settlement/payouts/{id}:assign-statement”Gán thủ công giao dịch ngân hàng vào đợt payout
Dành cho trường hợp orphan_credit hoặc cần khớp thủ công, bắt buộc ghi rõ lý do để ghi nhận chuỗi audit.
Quyền: payout.import- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Payout đã được gán giao dịch. —Payout,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | PayoutId | Mã đợt quyết toán sàn (pay_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/payouts/$ID:assign-statement" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "reason": "Khoản tiền về từ Shopee không kèm mã payout"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/payouts/{id}:assign-statement", { params: { path: { "id": "pay_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "reason": "Khoản tiền về từ Shopee không kèm mã payout" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import assign_payout_statement
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = assign_payout_statement.sync( id="pay_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "tx_id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", "reason": "Khoản tiền về từ Shopee không kèm mã payout", }, )POST /v1/settlement/payouts/{id}:reminder
Phần tiêu đề “POST /v1/settlement/payouts/{id}:reminder”Đặt hẹn nhắc tiền về cho đợt payout
Quyền: settlement.read- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Đã đặt hẹn nhắc. —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | PayoutId | Mã đợt quyết toán sàn (pay_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/payouts/$ID:reminder" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "remind_at": "2026-10-19T01:30:15Z"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/payouts/{id}:reminder", { params: { path: { "id": "pay_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "remind_at": "2026-10-19T01:30:15Z" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import set_payout_reminder
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = set_payout_reminder.sync( id="pay_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "remind_at": "2026-10-19T01:30:15Z", }, )POST /v1/settlement/payouts/{id}:variance-approve
Phần tiêu đề “POST /v1/settlement/payouts/{id}:variance-approve”Duyệt ghi nhận chênh lệch payout
Checker duyệt ghi nhận chênh lệch: sinh nghĩa vụ phải thu sàn tương ứng.
Quyền: payout.variance.approve- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã duyệt chênh lệch. —Payout,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | PayoutId | Mã đợt quyết toán sàn (pay_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/payouts/$ID:variance-approve" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/payouts/{id}:variance-approve", { params: { path: { "id": "pay_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import approve_variance_recognition
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = approve_variance_recognition.sync(id="pay_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/settlement/payouts/{id}:variance-claim-export
Phần tiêu đề “POST /v1/settlement/payouts/{id}:variance-claim-export”Xuất tệp khiếu nại chênh lệch gửi sàn
Xuất tệp Excel bảng kê khiếu nại (hệ thống không tự gửi ra ngoài, người dùng tự đính kèm khiếu nại sàn).
Quyền: payout.variance.propose- Nhóm tốc độ:
write - Phản hồi thành công
200: Đường dẫn tải file khiếu nại. —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | PayoutId | Mã đợt quyết toán sàn (pay_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/payouts/$ID:variance-claim-export" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/payouts/{id}:variance-claim-export", { params: { path: { "id": "pay_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import export_variance_claim
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = export_variance_claim.sync(id="pay_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/settlement/payouts/{id}:variance-recognition
Phần tiêu đề “POST /v1/settlement/payouts/{id}:variance-recognition”Đề xuất ghi nhận chênh lệch payout
Tạo yêu cầu phê duyệt ghi nhận chênh lệch. Khi được duyệt, hệ thống sẽ sinh nghĩa vụ phải thu bù từ sàn.
Quyền: payout.variance.propose- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Yêu cầu ghi nhận chênh lệch đã gửi duyệt. —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | PayoutId | Mã đợt quyết toán sàn (pay_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/payouts/$ID:variance-recognition" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Sàn trừ phí vận chuyển không có trong biểu phí", "note": "Chênh lệch 45.000đ"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/payouts/{id}:variance-recognition", { params: { path: { "id": "pay_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "reason": "Sàn trừ phí vận chuyển không có trong biểu phí", "note": "Chênh lệch 45.000đ" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import propose_variance_recognition
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = propose_variance_recognition.sync( id="pay_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "reason": "Sàn trừ phí vận chuyển không có trong biểu phí", "note": "Chênh lệch 45.000đ", }, )GET /v1/settlement/report-files/{id}
Phần tiêu đề “GET /v1/settlement/report-files/{id}”Tải tệp báo cáo đối soát (XLSX / PDF)
Tệp do GET /v1/settlement/reports/{kind}?format=xlsx|pdf sinh ra, lưu bất biến trên R2 (PDF A4 ngang, phông tiếng Việt nhúng). Cần phiên/khoá API có quyền settlement.read (không phải liên kết công khai); hết hạn sau 7 ngày trả 404. Mỗi lần tải được ghi nhật ký kiểm toán.
- Nhóm tốc độ:
export - Phản hồi thành công
200: Tệp XLSX hoặc PDF của báo cáo (theoformatlúc sinh). —string (binary),application/pdf;string (binary),application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | SettlementReportId | Mã bản báo cáo đối soát (srp_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/report-files/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/report-files/{id}", { params: { path: { "id": "srp_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import download_settlement_report_file
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = download_settlement_report_file.sync(id="srp_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)GET /v1/settlement/report-schedules
Phần tiêu đề “GET /v1/settlement/report-schedules”Danh sách lịch tự động gửi báo cáo đối soát
Quyền: settlement.read Scope: settlement:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Các lịch báo cáo của tổ chức. —object,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/report-schedules" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/report-schedules");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_report_schedules
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_report_schedules.sync(client=dt.client)PUT /v1/settlement/report-schedules/{id}
Phần tiêu đề “PUT /v1/settlement/report-schedules/{id}”Cấu hình lịch tự động gửi báo cáo đối soát
Quyền: settlement.read- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Lịch đã lưu thành công. —SettlementReportSchedule,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | SettlementReportScheduleId | Mã lịch báo cáo đối soát (srs_…). |
curl -sS -X PUT "https://api.dongtien.pro/v1/settlement/report-schedules/$ID" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "kind": "partner_statement", "cron": "0 8 5 * *", "partner_id": "ptn_0f5k2m9q4h7t3n8r6v1w0x5yz0", "recipients": [ "ketoan@congtyabc.vn" ], "channel": "email", "enabled": true}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.PUT("/v1/settlement/report-schedules/{id}", { params: { path: { "id": "srs_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "kind": "partner_statement", "cron": "0 8 5 * *", "partner_id": "ptn_0f5k2m9q4h7t3n8r6v1w0x5yz0", "recipients": [ "ketoan@congtyabc.vn" ], "channel": "email", "enabled": true },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import upsert_report_schedule
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = upsert_report_schedule.sync( id="srs_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "kind": "partner_statement", "cron": "0 8 5 * *", "partner_id": "ptn_0f5k2m9q4h7t3n8r6v1w0x5yz0", "recipients": [ "ketoan@congtyabc.vn", ], "channel": "email", "enabled": True, }, )GET /v1/settlement/reports/{kind}
Phần tiêu đề “GET /v1/settlement/reports/{kind}”Báo cáo đối soát settlement (XLSX / PDF)
Xuất báo cáo tuổi nợ, đối soát sàn, bảng kê đối tác kèm mã HMAC statement_hash, hoặc đối chiếu phí sàn thực tế với biểu phí.
- Nhóm tốc độ:
read - Phản hồi thành công
200: Dữ liệu báo cáo hoặc đường dẫn tải tệp. —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
kind | path | Có | SettlementReportKind | Loại báo cáo đối soát: receivable_payable_aging tuổi nợ · payout_reconciliation đối soát sao kê sàn · partner_statement bảng kê đối tác/hãng · platform_fee_actual phí sàn thực trả vs biểu phí. |
format | query | Không | string | — |
partner_id | query | Không | PartnerId | Mã đối tác sàn/hãng/CTV (ptn_…). |
from_date | query | Không | Date | Ngày lịch YYYY-MM-DD (giờ Việt Nam). |
to_date | query | Không | Date | Ngày lịch YYYY-MM-DD (giờ Việt Nam). |
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/reports/$KIND" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/reports/{kind}", { params: { path: { "kind": "receivable_payable_aging" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_settlement_report
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_settlement_report.sync(kind="receivable_payable_aging", client=dt.client)GET /v1/settlement/settings
Phần tiêu đề “GET /v1/settlement/settings”Ngưỡng đối soát payout
Quyền: settlement.read Scope: settlement:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Ngưỡng hiện hành (mặc định 0 khi chưa lưu). —SettlementSettings,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/settings" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/settings");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_settlement_settings
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_settlement_settings.sync(client=dt.client)PUT /v1/settlement/settings
Phần tiêu đề “PUT /v1/settlement/settings”Đặt ngưỡng đối soát payout
Quyền: partner.approve- Nhóm tốc độ:
write - Nội dung yêu cầu:
SettlementSettings(application/json) - Phản hồi thành công
200: Đã lưu. —SettlementSettings,application/json - Mã lỗi riêng của endpoint:
conflict
curl -sS -X PUT "https://api.dongtien.pro/v1/settlement/settings" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "allowable_drift_vnd": 5500, "variance_alert_threshold_vnd": 50000}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.PUT("/v1/settlement/settings", { body: { "allowable_drift_vnd": 5500, "variance_alert_threshold_vnd": 50000 },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import put_settlement_settingsfrom dongtien_api.models import SettlementSettings
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = put_settlement_settings.sync( client=dt.client, body=SettlementSettings.from_dict({ "allowable_drift_vnd": 5500, "variance_alert_threshold_vnd": 50000, }), )GET /v1/settlement/sku-brand-map
Phần tiêu đề “GET /v1/settlement/sku-brand-map”Lấy bảng ánh xạ SKU sang nhãn hàng / đối tác hãng
Quyền: settlement.read Scope: settlement:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Bảng ánh xạ SKU. —object,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/sku-brand-map" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/sku-brand-map");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_sku_brand_map
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_sku_brand_map.sync(client=dt.client)PUT /v1/settlement/sku-brand-map
Phần tiêu đề “PUT /v1/settlement/sku-brand-map”Cập nhật bảng ánh xạ SKU sàn
Quyền: partner.write- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Đã lưu bảng ánh xạ. —object,application/json - Mã lỗi riêng của endpoint:
conflict
curl -sS -X PUT "https://api.dongtien.pro/v1/settlement/sku-brand-map" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "mappings": [ { "partner_id": "ptn_0f5k2m9q4h7t3n8r6v1w0x5yz0" } ]}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.PUT("/v1/settlement/sku-brand-map", { body: { "mappings": [ { "partner_id": "ptn_0f5k2m9q4h7t3n8r6v1w0x5yz0" } ] },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import put_sku_brand_map
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = put_sku_brand_map.sync( client=dt.client, body={ "mappings": [ { "partner_id": "ptn_0f5k2m9q4h7t3n8r6v1w0x5yz0", }, ], }, )GET /v1/settlement/split-rules
Phần tiêu đề “GET /v1/settlement/split-rules”Danh sách quy tắc chia doanh thu
Quyền: settlement.read Scope: settlement:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách quy tắc chia. —SplitRuleList,application/json - Mã lỗi riêng của endpoint:
invalid_cursor
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
cursor | query | Không | Cursor | Con trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa. |
limit | query | Không | integer | — |
partner_id | query | Không | PartnerId | Mã đối tác sàn/hãng/CTV (ptn_…). |
kind | query | Không | SplitRuleKind | payable_brand phải trả hãng/nhà cung cấp · payable_ctv phải trả CTV · receivable_agent phải thu đại lý. |
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/split-rules" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/split-rules");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import list_split_rules
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_split_rules.sync(client=dt.client)POST /v1/settlement/split-rules
Phần tiêu đề “POST /v1/settlement/split-rules”Tạo quy tắc chia doanh thu
Tạo quy tắc chia và phiên bản v1 ban đầu ở trạng thái draft.
- Nhóm tốc độ:
write - Nội dung yêu cầu:
CreateSplitRuleBody(application/json) - Phản hồi thành công
201: Quy tắc chia đã tạo. —SplitRule,application/json - Mã lỗi riêng của endpoint:
conflict
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/split-rules" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "kind": "payable_brand", "partner_id": "ptn_0f5k2m9q4h7t3n8r6v1w0x5yz0", "name": "Chia doanh thu hãng An Phát", "initial_version": { "conds": { "brands": [ "Thương hiệu An Phát" ], "platforms": [ "shopee" ] }, "pct_bp": 1500, "basis": "net_after_platform_fee", "trigger": "on_delivered", "effective_from": "2026-11-01" }}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/split-rules", { body: { "kind": "payable_brand", "partner_id": "ptn_0f5k2m9q4h7t3n8r6v1w0x5yz0", "name": "Chia doanh thu hãng An Phát", "initial_version": { "conds": { "brands": [ "Thương hiệu An Phát" ], "platforms": [ "shopee" ] }, "pct_bp": 1500, "basis": "net_after_platform_fee", "trigger": "on_delivered", "effective_from": "2026-11-01" } },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import create_split_rulefrom dongtien_api.models import CreateSplitRuleBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = create_split_rule.sync( client=dt.client, body=CreateSplitRuleBody.from_dict({ "kind": "payable_brand", "partner_id": "ptn_0f5k2m9q4h7t3n8r6v1w0x5yz0", "name": "Chia doanh thu hãng An Phát", "initial_version": { "conds": { "brands": [ "Thương hiệu An Phát", ], "platforms": [ "shopee", ], }, "pct_bp": 1500, "basis": "net_after_platform_fee", "trigger": "on_delivered", "effective_from": "2026-11-01", }, }), )GET /v1/settlement/split-rules/{id}
Phần tiêu đề “GET /v1/settlement/split-rules/{id}”Chi tiết quy tắc chia
Quyền: settlement.read Scope: settlement:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Chi tiết quy tắc và các phiên bản. —SplitRule,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | SplitRuleId | Mã quy tắc chia doanh thu (spl_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/split-rules/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/split-rules/{id}", { params: { path: { "id": "spl_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_split_rule
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_split_rule.sync(id="spl_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/settlement/split-rules/{id}/versions
Phần tiêu đề “POST /v1/settlement/split-rules/{id}/versions”Tạo phiên bản quy tắc mới
Phiên bản mới chờ duyệt; phiên bản cũ vẫn hoạt động cho đến ngày hiệu lực của phiên bản mới.
Quyền: split_rule.write- Nhóm tốc độ:
write - Nội dung yêu cầu:
CreateSplitRuleVersionBody(application/json) - Phản hồi thành công
201: Phiên bản mới đã tạo. —SplitRuleVersion,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | SplitRuleId | Mã quy tắc chia doanh thu (spl_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/split-rules/$ID/versions" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "conds": { "brands": [ "Thương hiệu An Phát" ], "platforms": [ "shopee" ] }, "pct_bp": 1200, "basis": "net_after_platform_fee", "trigger": "on_delivered", "effective_from": "2026-11-01"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/split-rules/{id}/versions", { params: { path: { "id": "spl_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "conds": { "brands": [ "Thương hiệu An Phát" ], "platforms": [ "shopee" ] }, "pct_bp": 1200, "basis": "net_after_platform_fee", "trigger": "on_delivered", "effective_from": "2026-11-01" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import create_split_rule_versionfrom dongtien_api.models import CreateSplitRuleVersionBody
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = create_split_rule_version.sync( id="spl_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body=CreateSplitRuleVersionBody.from_dict({ "conds": { "brands": [ "Thương hiệu An Phát", ], "platforms": [ "shopee", ], }, "pct_bp": 1200, "basis": "net_after_platform_fee", "trigger": "on_delivered", "effective_from": "2026-11-01", }), )POST /v1/settlement/split-rules/{id}/versions/{vid}:approve
Phần tiêu đề “POST /v1/settlement/split-rules/{id}/versions/{vid}:approve”Duyệt phiên bản quy tắc
Maker-checker: Người duyệt phải khác người tạo phiên bản. Trả 409 conflict khi phiên bản chồng lấn điều kiện với quy tắc đang áp dụng cùng loại mà cùng mức ưu tiên và cùng ngày hiệu lực (không xác định được quy tắc nào thắng); trường hợp còn lại trả lint_warnings.
- Nhóm tốc độ:
write - Phản hồi thành công
200: Phiên bản đã duyệt. —SplitRuleVersion,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | SplitRuleId | Mã quy tắc chia doanh thu (spl_…). |
vid | path | Có | SplitRuleVersionId | Mã phiên bản quy tắc chia (spv_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/split-rules/$ID/versions/$VID:approve" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/split-rules/{id}/versions/{vid}:approve", { params: { path: { "id": "spl_0f5k2m9q4h7t3n8r6v1w0x5yz0", "vid": "spv_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import approve_split_rule_version
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = approve_split_rule_version.sync( id="spl_0f5k2m9q4h7t3n8r6v1w0x5yz0", vid="spv_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, )POST /v1/settlement/split-rules/{id}/versions/{vid}:reject
Phần tiêu đề “POST /v1/settlement/split-rules/{id}/versions/{vid}:reject”Từ chối phiên bản quy tắc
Quyền: split_rule.approve- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Phiên bản đã bị từ chối. —SplitRuleVersion,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | SplitRuleId | Mã quy tắc chia doanh thu (spl_…). |
vid | path | Có | SplitRuleVersionId | Mã phiên bản quy tắc chia (spv_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/split-rules/$ID/versions/$VID:reject" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Tỷ lệ chia chưa đúng hợp đồng ký gửi"}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/split-rules/{id}/versions/{vid}:reject", { params: { path: { "id": "spl_0f5k2m9q4h7t3n8r6v1w0x5yz0", "vid": "spv_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "reason": "Tỷ lệ chia chưa đúng hợp đồng ký gửi" },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import reject_split_rule_version
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = reject_split_rule_version.sync( id="spl_0f5k2m9q4h7t3n8r6v1w0x5yz0", vid="spv_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "reason": "Tỷ lệ chia chưa đúng hợp đồng ký gửi", }, )GET /v1/settlement/statements/{id}
Phần tiêu đề “GET /v1/settlement/statements/{id}”Trạng thái nhập sao kê sàn
Quyền: payout.import- Nhóm tốc độ:
read - Phản hồi thành công
200: Trạng thái và bản xem trước. —SettlementImport,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | StatementImportId | Mã lần nhập sao kê (imp_…). |
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/statements/$ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/statements/{id}", { params: { path: { "id": "imp_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_settlement_import
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_settlement_import.sync(id="imp_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/settlement/statements/{id}:commit
Phần tiêu đề “POST /v1/settlement/statements/{id}:commit”Xác nhận nhập sao kê sàn
Chỉ khi tác vụ ở preview_ready. Workflow ghi đơn và đợt payout theo từng trang rồi khớp với giao dịch ngân hàng.
- Nhóm tốc độ:
write - Phản hồi thành công
202: Đã nhận lệnh nhập. —SettlementImport,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | StatementImportId | Mã lần nhập sao kê (imp_…). |
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/statements/$ID:commit" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/statements/{id}:commit", { params: { path: { "id": "imp_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import commit_settlement_import
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = commit_settlement_import.sync(id="imp_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/settlement/statements:import
Phần tiêu đề “POST /v1/settlement/statements:import”Tải lên tệp sao kê sàn (Shopee, TikTok, Lazada)
Tải tệp Excel/CSV sao kê sàn (multipart/form-data, tối đa 25 MB): niêm phong và lưu R2, tạo tác vụ payout, đọc 5.000 đơn/trang, xem trước rồi chờ lệnh commit, sau đó khớp với giao dịch ngân hàng đã xác thực. Nhập lại cùng statement_ref sẽ gộp, không trùng đơn/đợt. Không tính quota billing (D33). Quá 25 MB: 413; tệp rỗng: 422.
- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(multipart/form-data) - Phản hồi thành công
202: Job import sao kê đã được tiếp nhận. —SettlementImport,application/json - Mã lỗi riêng của endpoint:
conflict
curl -sS -X POST "https://api.dongtien.pro/v1/settlement/statements:import" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/settlement/statements:import");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import import_settlement_statement
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = import_settlement_statement.sync(client=dt.client)GET /v1/settlement/summary
Phần tiêu đề “GET /v1/settlement/summary”Tổng quan đối soát
Phải thu, phải trả (còn lại chưa gạch), hạn trả gần nhất, số đợt payout đã khớp và tổng chênh lệch.
Quyền: settlement.read Scope: settlement:read- Nhóm tốc độ:
read - Phản hồi thành công
200: Tổng quan đối soát của tổ chức. —SettlementSummary,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/settlement/summary" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/settlement/summary");import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_settlement_summary
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_settlement_summary.sync(client=dt.client)GET /v1/transactions/{id}/suggestions
Phần tiêu đề “GET /v1/transactions/{id}/suggestions”Gợi ý đối soát cho một giao dịch
Quyền: allocation.create- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách tối đa 3 phương án gợi ý —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | TxId | Mã 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/suggestions" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/transactions/{id}/suggestions", { params: { path: { "id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import get_tx_suggestions
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_tx_suggestions.sync(id="tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)POST /v1/transactions/{id}:ignore-recon
Phần tiêu đề “POST /v1/transactions/{id}:ignore-recon”Đánh dấu giao dịch không cần đối soát
Quyền: allocation.create- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json) - Phản hồi thành công
200: Đã cập nhật trạng thái không cần đối soát —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | TxId | Mã giao dịch (tx_…), ổn định vĩnh viễn kể cả khi bị gộp. |
curl -sS -X POST "https://api.dongtien.pro/v1/transactions/$ID:ignore-recon" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reason": "Giao dịch chuyển khoản nội bộ giữa các tài khoản của công ty."}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/transactions/{id}:ignore-recon", { params: { path: { "id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, }, body: { "reason": "Giao dịch chuyển khoản nội bộ giữa các tài khoản của công ty." },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import ignore_recon_tx
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = ignore_recon_tx.sync( id="tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client, body={ "reason": "Giao dịch chuyển khoản nội bộ giữa các tài khoản của công ty.", }, )POST /v1/transactions/{id}:route-settlement
Phần tiêu đề “POST /v1/transactions/{id}:route-settlement”Chuyển giao dịch payout sang đối soát sàn (Settlement)
Quyền: allocation.create- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã chuyển sang settlement —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | TxId | Mã giao dịch (tx_…), ổn định vĩnh viễn kể cả khi bị gộp. |
curl -sS -X POST "https://api.dongtien.pro/v1/transactions/$ID:route-settlement" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/transactions/{id}:route-settlement", { params: { path: { "id": "tx_0f5k2m9q4h7t3n8r6v1w0x5yz0" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.doi_soat import route_settlement_tx
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = route_settlement_tx.sync(id="tx_0f5k2m9q4h7t3n8r6v1w0x5yz0", client=dt.client)Đối tượng
Phần tiêu đề “Đối tượng”DuplicateCoaProfileBody
Phần tiêu đề “DuplicateCoaProfileBody”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
name | string | Không | — |
DuplicateCoaProfileResult
Phần tiêu đề “DuplicateCoaProfileResult”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
id | string | Có | — |
name | string | Có | — |
system | string | Có | — |
ExportReadiness
Phần tiêu đề “ExportReadiness”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
balance_anchor_mismatch | boolean | Có | — |
blockers | string[] | Có | — |
missing_counterparty_codes_count | integer | Có | — |
period | string | Có | — |
period_locked | boolean | Có | — |
provisional_count | integer | Có | — |
ready | boolean | Có | true nếu sẵn sàng tạo lô xuất. |
target | ExportTarget | Có | Giá trị: misa_amis, misa_sme, fast, excel_tt133, excel_tt99, misa_amis_api. |
unmapped_accounts_count | integer | Có | — |
warnings | string[] | Có | — |
BankAccountGlMap
Phần tiêu đề “BankAccountGlMap”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
bank_account_id | AccountId | Có | — |
code_fast | string | null | Không | Mã tương ứng trong Fast. |
code_misa | string | null | Không | Mã tương ứng trong MISA. |
created_at | Timestamp | Có | — |
effective_from | Date | Có | — |
gl_code | string | Có | Mã tài khoản kế toán (ví dụ: 1121). |
id | string (uuid) | Có | — |
org_id | OrgId | Có | — |
profile_id | string (uuid) | Có | — |
state | string | Có | Giá trị: pending_approval, active, disabled. |
updated_at | Timestamp | Có | — |
PutBankAccountGlMapBody
Phần tiêu đề “PutBankAccountGlMapBody”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
code_fast | string | Không | — |
code_misa | string | Không | — |
effective_from | Date | Có | — |
gl_code | string | Có | Số hiệu tài khoản kế toán (TT200/TT133), ví dụ 1121. |
MappingChangeList
Phần tiêu đề “MappingChangeList”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
data | MappingChange[] | Có | — |
data[].checker_user_id | UserId | null | Không | — |
data[].created_at | Timestamp | Có | — |
data[].decided_at | Timestamp | null | Không | — |
data[].decision_reason | string | null | Không | — |
data[].id | ApprovalRequestId | Có | — |
data[].maker_user_id | UserId | Có | — |
data[].state | string | Có | Giá trị: pending, approved, rejected, withdrawn, expired. |
data[].subject_id | string | Có | Id dòng ánh xạ, hoặc <id quy tắc>:<phiên bản> với quy tắc định khoản. |
data[].subject_type | string | Có | Giá trị: bank_account_gl_map, mapping_rule. |
has_more | boolean | Có | — |
next_cursor | string | null | Có | Con trỏ trang kế; null khi hết dữ liệu. |
object | string | Có | Giá trị: list. |
MappingChange
Phần tiêu đề “MappingChange”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
checker_user_id | UserId | null | Không | — |
created_at | Timestamp | Có | — |
decided_at | Timestamp | null | Không | — |
decision_reason | string | null | Không | — |
id | ApprovalRequestId | Có | — |
maker_user_id | UserId | Có | — |
state | string | Có | Giá trị: pending, approved, rejected, withdrawn, expired. |
subject_id | string | Có | Id dòng ánh xạ, hoặc <id quy tắc>:<phiên bản> với quy tắc định khoản. |
subject_type | string | Có | Giá trị: bank_account_gl_map, mapping_rule. |
RejectRequestBody
Phần tiêu đề “RejectRequestBody”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
reason | string | Có | — |
CounterpartyCodeList
Phần tiêu đề “CounterpartyCodeList”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
data | CounterpartyCodeEntry[] | Có | — |
data[].code | string | Có | Mã sẽ xuất: mã đã lưu, hoặc mã suy ra từ MST/tên khi chưa lưu. |
data[].counterparty_id | CounterpartyId | Có | — |
data[].max_len | integer | Có | Độ dài tối đa của mã trên đích. |
data[].mst | string | null | Có | — |
data[].name | string | Có | — |
data[].source | string | Có | Giá trị: saved, derived. |
data[].target | CounterpartyCodeTarget | Có | Giá trị: misa_amis, misa_sme, fast, excel. |
has_more | boolean | Có | — |
next_cursor | string | null | Có | Con trỏ trang kế; null khi hết dữ liệu. |
object | string | Có | Giá trị: list. |
PutCounterpartyCodeBody
Phần tiêu đề “PutCounterpartyCodeBody”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
code | string | Có | ASCII hoa, số, _ hoặc -; không dài hơn giới hạn của đích. |
counterparty_id | CounterpartyId | Có | — |
target | CounterpartyCodeTarget | Có | Giá trị: misa_amis, misa_sme, fast, excel. |
CounterpartyCodeEntry
Phần tiêu đề “CounterpartyCodeEntry”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
code | string | Có | Mã sẽ xuất: mã đã lưu, hoặc mã suy ra từ MST/tên khi chưa lưu. |
counterparty_id | CounterpartyId | Có | — |
max_len | integer | Có | Độ dài tối đa của mã trên đích. |
mst | string | null | Có | — |
name | string | Có | — |
source | string | Có | Giá trị: saved, derived. |
target | CounterpartyCodeTarget | Có | Giá trị: misa_amis, misa_sme, fast, excel. |
ImportCounterpartyCodesBody
Phần tiêu đề “ImportCounterpartyCodesBody”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
rows | object[] | Có | — |
rows[].code | string | Có | — |
rows[].mst | string | Không | — |
rows[].name | string | Không | — |
target | CounterpartyCodeTarget | Có | Giá trị: misa_amis, misa_sme, fast, excel. |
Đối tượng khác của nhóm này (xem tài liệu tương tác): ImportCounterpartyCodesResult, MappingRuleList, CreateMappingRuleBody, MappingRule, ProposeMappingRulesBody, MappingProposalResult, MappingTemplateList, ApplyMappingTemplateBody, ApplyMappingTemplateResult, MisaConnection, PutMisaConnectionBody, MisaConnectionTestResult, MisaDictionaryItem, MisaVoucherRequestList, MisaVoucherRequest, AccountingPeriod, LockPeriodRequest, UnlockPeriodRequest, AllocationList, Allocation, ExpectedPaymentList, ExportBatchList, CreateExportBatchBody, ExportBatch, ExportDryRunBody, ExportDryRunResponse, ExportBatchDetail, ExportPreviewLineList, RejectExportBatchBody, ReconFollowupList, MatchRuleList, ReconQueueList, ObligationList, ObligationAllocation, CreateObligationAllocationBody, PayoutList, Payout, SettlementReportSchedule, SettlementSettings, SplitRuleList, CreateSplitRuleBody, SplitRule, CreateSplitRuleVersionBody, SplitRuleVersion, SettlementImport, SettlementSummary
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.
de doi do dich dat dinh dong da dao dang dieu dua don dot danh duoc day di den doc dung dia dien d duong dai dau