トランザクション API
概要
トランザクション APIは、課金、返金、振込、調整、手数料を含む完全な取引履歴へのアクセスを提供します。このAPIを使用して、会計処理、照合、詳細な財務レポートを作成できます。
利用可能なエンドポイント
- トランザクション一覧取得 - GET /transactions
- トランザクション詳細取得 - GET /transactions/:id
機能
- 取引履歴の閲覧 - すべてのアカウントアクティビティの完全な記録にアクセス
- 日付でフィルタリング - 特定の期間のトランザクションを取得
- 種類でフィルタリング - 課金、返金、振込、手数料のみを表示
- アカウントの照合 - トランザクションと銀行明細書を照合
- レポート生成 - 会計用にトランザクションデータをエクスポート
- 残高変動の追跡 - 各トランザクションが残高に与える影響を確認
トランザクションの種類
クレジットトランザクション(入金)
- 課金 - 顧客からの決済完了
- 紛争取消 - 勝訴により返還された資金
- 返金取消 - キャンセルされた返金
デビットトランザクション(出金)
- 返金 - 顧客への返金
- 振込 - 銀行口座への送金
- 手数料 - 取引手数料およびサービス手数料
- 紛争 - チャージバックおよび係争中の金額
- 調整 - アカウントの修正
トランザクションオブジェクトの構造
{
"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のトランザクションを銀行明細書や社内記録と照合します:
// 特定の日のすべてのトランザクションを取得
const transactions = await omise.transactions.list({
from: '2025-02-07T00:00:00Z',
to: '2025-02-07T23:59:59Z',
limit: 100
});
// 日次合計を計算
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}`);
財務レポート
会計用の月次レポートを生成:
// 月次トランザクションサマリーを取得
const monthlyTransactions = await omise.transactions.list({
from: '2025-02-01T00:00:00Z',
to: '2025-02-28T23:59:59Z',
limit: 100
});
// 種 類別にグループ化
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;
// 必要に応じて他の種類を追加
});
残高の検証
残高計算を検証:
// トランザクションから期待される残高 を計算
const allTransactions = await getAllTransactions(); // ページネーションロジック
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を保持
- 定期的なエクスポート - 会計記録用に月次でエクスポート
避けるべき事項
- すべてのトランザクションを取得しない - 常に日付フィルタを使用
- 頻繁にポーリングしない - トランザクションは作成後に変更されない
- ページネーションを無視しない - 大きな結果セットを適切に処理
- 順序を仮定しない - orderパラメータを明示的に指定
- 照合を省略しない - 定期的なチェックで会計上の問題を防止