トランザクションと支払いレポート
トランザクションレポートは、Omiseアカウントのすべ ての支払い活動に関する詳細な洞察を提供します。会計、調整、およびビジネス分析のために、請求金、返金、紛争、および転送に関する包括的なデータにアクセスします。
概要
トランザクション報告機能は以下を含みます:
- リアルタイムデータ: トランザクションが発生するのを表示
- 包括的なフィルタリング: ステータス、金額、日付、支払い方法などでフィルター
- 高度な検索: 特定のトランザクションをすばやく検索
- 一括エクスポート: 複数の形式でトランザクションデータをダウンロード
- スケジュール済みレポート: レポート生成と配信を自動化
- APIアクセス: プログラムでトランザクションデータを取得
- 調整ツール: 支払いを銀行決済と照合
- 紛争追跡: チャージバックと紛争を監視
レポートタイプ
1. 支払いレポート
成功した支払いはすべて表示:
// Node.js - 支払いレポートを取得
const omise = require('omise')({
secretKey: 'skey_test_xxxxx'
});
async function getPaymentReport(fromDate, toDate) {
const charges = await omise.charges.list({
from: fromDate,
to: toDate,
paid: true,
limit: 100,
order: 'reverse_chronological'
});
const report = charges.data.map(charge => ({
id: charge.id,
amount: charge.amount / 100,
currency: charge.currency.toUpperCase(),
customer: charge.customer || 'Guest',
card_brand: charge.card?.brand || 'N/A',
card_last4: charge.card?.last_digits || 'N/A',
status: charge.status,
created: new Date(charge.created * 1000).toISOString(),
description: charge.description || ''
}));
return { total: charges.total, payments: report };
}
2. 請求レポート
すべての請求試行(成功と失敗):
# Python - 失敗した請求を分析
import omise
omise.api_secret = 'skey_test_xxxxx'
def analyze_failed_charges(from_date, to_date):
charges = omise.Charge.list(
from_date=from_date.isoformat(),
to_date=to_date.isoformat(),
limit=100
)
failed_charges = [c for c in charges.data if not c.paid]
failure_reasons = {}
for charge in failed_charges:
reason = charge.failure_code or 'unknown'
if reason not in failure_reasons:
failure_reasons[reason] = {'count': 0, 'amount': 0}
failure_reasons[reason]['count'] += 1
failure_reasons[reason]['amount'] += charge.amount
return {
'total_failed': len(failed_charges),
'total_attempted': charges.total,
'failure_rate': f"{(len(failed_charges) / charges.total * 100):.2f}%",
'failure_reasons': failure_reasons
}
3. 返金レポート
すべての返金トランザクション:
# Ruby - 返金レポートを生成
require 'omise'
Omise.api_key = 'skey_test_xxxxx'
def generate_refund_report(from_date, to_date)
charges = Omise::Charge.list({
from: from_date.iso8601,
to: to_date.iso8601,
limit: 100
})
refund_stats = {
'total_refunds': 0,
'total_amount': 0,
'full_refunds': 0,
'partial_refunds': 0
}
charges.data.each do |charge|
if charge.refunded_amount > 0
refunds = Omise::Refund.list(charge_id: charge.id)
refunds.data.each do |refund|
refund_stats['total_refunds'] += 1
refund_stats['total_amount'] += refund.amount
if refund.amount == charge.amount
refund_stats['full_refunds'] += 1
else
refund_stats['partial_refunds'] += 1
end
end
end
end
refund_stats
end
フィルターオプション
利用可能なフィルター
- 日付範囲: 特定の日付、相対範囲、カスタム範囲
- ステータス: 成功、失敗、保留中、反転、期限切れ
- 金額: 最小、最大、正確、範囲
- 支払い方法: クレジット/デビットカード、インターネットバンキング、モバイルバンキング、電子ウォレット、QR支払い、分割払い
- 通貨: THB、SGD、JPY、USDなど
- 顧客: 顧客ID、メール、名前
- メタデータ: カスタムメタデータフィールド、注文ID、参照番号
APIを介したフィルタリング
// Node.js - 高度なフィルタリング
async function getFilteredTransactions(filters) {
const params = {
limit: 100,
order: 'reverse_chronological'
};
if (filters.from) params.from = filters.from;
if (filters.to) params.to = filters.to;
if (filters.status === 'successful') params.paid = true;
if (filters.status === 'failed') params.paid = false;
const charges = await omise.charges.list(params);
let filteredCharges = charges.data;
if (filters.minAmount) {
filteredCharges = filteredCharges.filter(c => c.amount >= filters.minAmount * 100);
}
if (filters.currency) {
filteredCharges = filteredCharges.filter(c => c.currency === filters.currency.toLowerCase());
}
return { total: filteredCharges.length, data: filteredCharges };
}
トランザクションを検索
ダッシュボード検索
検索を使用して特定のトランザクションを見つける:
- トランザクション ID: 完全または部分的な請求ID
- 顧客メール: 顧客のメールアドレス
- 金額: 正確な金額と通貨
- カード最後4桁: 最後の4桁(オプション的にカードブランド指定)
API経由の高度な検索
# Python - 高度なトランザクション検索
import omise
omise.api_secret = 'skey_test_xxxxx'
class TransactionSearch:
def search(self, criteria):
# 基本パラメーターで検索
params = {'limit': 100}
if criteria.get('from'):
params['from_date'] = criteria['from']
if criteria.get('to'):
params['to_date'] = criteria['to']
charges = omise.Charge.list(**params)
results = charges.data
# 追加フィルターを適用
if criteria.get('min_amount'):
results = [c for c in results if c.amount >= criteria['min_amount'] * 100]
if criteria.get('card_last4'):
results = [c for c in results if c.card and c.card.last_digits == criteria['card_last4']]
return results
# 使用例
searcher = TransactionSearch()
results = searcher.search({
'from': '2024-01-01T00:00:00Z',
'to': '2024-01-31T23:59:59Z',
'card_last4': '4242',
'min_amount': 100
})
レポートスケジューリング
スケジュール済みレポートの設定
-
レポート > スケジュール済みレポートに移動
-
「スケジュール作成」をクリック
-
レポートを構成:
- レポートタイプ(支払い、請求、返金)
- 頻度(毎日、毎週、毎月)
- 日付範囲(過去24時間、過去7日など)
- フィルターと条件
- エクスポート形式(CSV、PDF、Excel)
-
受信者を設定:
- メールアドレスを追加
- 配信時刻を構成
- タイムゾーンを設定
-
スケジュールを保存
自動レポート配信
// Node.js - カスタムレポートスケジューリング
const omise = require('omise')({ secretKey: 'skey_test_xxxxx' });
const cron = require('node-cron');
const nodemailer = require('nodemailer');
// メール構成
const transporter = nodemailer.createTransport({
host: 'smtp.example.com',
port: 587,
auth: { user: 'reports@example.com', pass: 'password' }
});
async function generateAndEmailReport() {
try {
const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000);
const today = new Date();
const charges = await omise.charges.list({
from: yesterday.toISOString(),
to: today.toISOString(),
paid: true,
limit: 100
});
const reportData = charges.data.map(charge => ({
'Transaction ID': charge.id,
'Amount': charge.amount / 100,
'Currency': charge.currency.toUpperCase(),
'Card Brand': charge.card?.brand || 'N/A',
'Status': charge.status,
'Created': new Date(charge.created * 1000).toISOString()
}));
// CSV に変換
const json2csv = require('json2csv');
const csv = json2csv.parse(reportData);
// ファイルに保存して送信
await transporter.sendMail({
from: '"Omise Reports" <reports@example.com>',
to: 'accounting@example.com',
subject: `Daily Payment Report - ${yesterday.toISOString().split('T')[0]}`,
text: `Total Transactions: ${charges.total}`,
attachments: [{ filename: 'report.csv', content: csv }]
});
console.log('Report sent successfully');
} catch (error) {
console.error('Error generating report:', error);
}
}
// 毎日午前8時に実行
cron.schedule('0 8 * * *', generateAndEmailReport);
エクスポートオプション
エクスポート形式
- CSV: Excel、Google Sheets、データ分析に最適
- Excel(XLSX): 高度なExcel機能、フォーマット設定用
- PDF: 印刷、共有、アーカイブ用
ダッシュボードからエクスポート
- 目的のレポートに移動
- フィルターと日付範囲を適用
- エクスポートボタンをクリック
- 形式を選択(CSV、Excel、PDF)
- ダウンロードが自動的に開始
よくあるご質問
トランザクションレポートはどのくらい保持されますか?
Omiseは7年間トランザクションデータを保持します。この期間内の任意の時点からデータにアクセスしてエクスポートできます 。
特定の支払い方法のレポートを生成できますか?
はい、支払い方法でフィルターしたり、クレジットカード(ブランド別)、インターネットバンキング、モバイルバンキング、電子ウォレット、QR支払いでレポートを作成できます。
トランザクション日付と決済日付の違いは何ですか?
トランザクション日付は支払い処理時刻です。決済日付は資金が銀行口座に転送される時刻です(通常T+3からT+7営業日)。
レポートをカスタマイズできますか?
APIを使用してプログラムでカスタムレポートを作成できます。ダッシュボードは標準テンプレートを提供します。
関連リソース
- ダッシュボード概要 - ダッシュボードナビゲーション
- 残高レポート - 決済・残高レポート
- 請求APIリファレンス - 請求API
- 返金APIリファレンス - 返金API