Transactions API
概要
Transactions APIは、チャージ、返金、送金、調整、手数料を含む完全な取引履歴へのアクセスを提供します。このAPIを会計、照合、詳細な財務レポート作成に使用します。
利用可能なエンドポイント
- Transactionsの一覧表示 - GET /transactions
- Transactionの取得 - GET /transactions/:id
できること
- 取引履歴の表示 - すべてのアカウントアクティビティの完全な記録にアクセス
- 日付でフィルタリング - 特定の期間の取引を取得
- タイプでフィルタリング - チャージ、返金、送金、または手数料のみを表示
- アカウントの照合 - 銀行明細書と取引を照合
- レポートの生成 - 会計用に取引データをエクスポート
- 残高変更の追跡 - 各取引が残高にどのように影響するかを確認
取引タイプ
入金取引(受取金)
- チャージ - 顧客からの成功した決済
- 紛争取り消し - 勝訴した紛争による資金返還
- 返金取り消し - キャンセルされた返金
出金取引(支払金)
- 返金 - 顧客への返金
- 送金 - 銀行口座への支払い
- 手数料 - 取引およびサービス手数料
- 紛争 - チャージバックおよび異議申立額
- 調整 - アカウント修正
Transactionオブジェクトの構造
{
"object": "transaction",
"id": "trxn_test_5xuy4w91xqz7d1w9u0t",
"type": "credit",
"amount": 100000,
"currency": "thb",
"direction": "credit",
"source": {
"object": "charge",
"id": "chrg_test_5xuy4w91xqz7d1w9u0t"
},
"created_at": "2025-02-07T12:00:00Z"
}
ユースケース
会計と照合
Omise取引を銀行明細書および内部記録と照合します:
// Get all transactions for a specific day
const transactions = await omise.transactions.list({
from: '2025-02-07T00:00:00Z',
to: '2025-02-07T23:59:59Z',
limit: 100
});
// Calculate daily totals
let credits = 0;
let debits = 0;
transactions.data.forEach(txn => {
if (txn.direction === 'credit') {
credits += txn.amount;
} else {
debits += txn.amount;
}
});
console.log(`Credits: ${credits}, Debits: ${debits}, Net: ${credits - debits}`);
財務レポート作成
会計のための月次レポートを生成します:
// Get monthly transaction summary
const monthlyTransactions = await omise.transactions.list({
from: '2025-02-01T00:00:00Z',
to: '2025-02-28T23:59:59Z',
limit: 100
});
// Group by type
const summary = {
charges: 0,
refunds: 0,
transfers: 0,
fees: 0
};
monthlyTransactions.data.forEach(txn => {
const sourceType = txn.source?.object;
if (sourceType === 'charge') summary.charges += txn.amount;
if (sourceType === 'refund') summary.refunds += txn.amount;
if (sourceType === 'transfer') summary.transfers += txn.amount;
// Add more types as needed
});
残高の検証
残高計算を検証します:
// Calculate expected balance from transactions
const allTransactions = await getAllTransactions(); // Your pagination logic
let calculatedBalance = 0;
allTransactions.forEach(txn => {
if (txn.direction === 'credit') {
calculatedBalance += txn.amount;
} else {
calculatedBalance -= txn.amount;
}
});
const currentBalance = await omise.balance.retrieve();
console.log(`Calculated: ${calculatedBalance}, Actual: ${currentBalance.available}`);
フィルタリングとページネーション
日付範囲フィルタリング
GET /transactions?from=2025-01-01T00:00:00Z&to=2025-01-31T23:59:59Z
ページネーション
GET /transactions?limit=100&offset=0
組み合わせフィルター
GET /transactions?from=2025-02-01T00:00:00Z&limit=50&offset=0
ベストプラクティス
✅ 推奨事項
- 日付範囲を使用 - パフォーマンス向上のために特定の期間でフィルタリング
- 結果をページ分割 - 妥当なペ ージサイズを使用(50-100)
- 取引データをキャッシュ - 取引は不変なので長期間キャッシュ可能
- タイムゾーンを処理 - すべてのタイムスタンプはUTC(Zタイムゾーン)
- 取引IDを保存 - 照合と監査のためにIDを保持
- 定期的なエクスポート - 会計記録のために月次エクスポート
❌ 避けるべきこと
- すべての取引を取得しない - 常に日付フィルターを使用
- 頻繁にポーリングしない - 取引は一度作成されたら変更されません
- ページネーションを無視しない - 大きな結果セットを適切に処理
- 順序を仮定しない - 順序パラメータを明示的に指定
- 照合をスキップしない - 定期的なチェックで会計問題を防止
よくある質問
TransactionsとBalanceの違いは何ですか?
- Balance - 現在のアカウント残高(単一の時点)
- Transactions - すべてのアクティビティの履歴記録(時間経過)
取引はどのくらいの期間保存されますか?
すべての取引は永続的に保存され、API経由でアクセス可能です。
取引を削除できますか?
いいえ、取引は不変の監査記録であり、削除または変更できません。
会計ソフトウェア用にエクスポートするにはどうすればよいですか?
日付フィルターを使用してList Transactions APIを使用し、会計システム(QuickBooks、Xeroなど)用にデータをフォーマットします。
関連リソース
- Transactionsの一覧表示 - GET /transactions
- Transactionの取得 - GET /transactions/:id
- Balance API - 現在の残高を確認
- Charges API - チャージを表示
- Refunds API - 返金を表示
- Transfers API - 送金を表示
関連情報
サポートが必要ですか? support@omise.coまでお問い合わせください