紛争管理
DEUNA Admin で、不正利用の取り扱い、証拠に基づいた対応、およびプロバイダーの決定を管理します。
このページで
紛争管理は、すべての chargeback のワークフローを 1 つの DEUNA 管理インターフェースに統合します。運用チームは、元の支払いからケース、応答、および認定されたプロバイダーからの最終的な結果まで、コンテキストを失うことなく移動できます。
オプションの 紛争エージェント は、ケースのコンテキストを標準化、期限の優先順位付け、証拠のギャップの特定、および推奨されるアクションの準備に役立ちます。これは、プロバイダーの機能を拡張したり、承認権限を付与したりするものではありません。このガイドで定義されているアクセス、承認、および結果の境界は依然として適用されます。
紛争
チャージバックを締め切り、準備状態、および次のアクションで優先します。
| ケース | 理由 | プロバイダー | 紛争 | 締め切り | ステータス |
|---|---|---|---|---|---|
| 商品が届いていない | Worldpay | $128.40 | 10月4日 | 応答が必要 | |
| カード保持者が承認していない | Adyen | $82.00 | 10月7日 | 審査中 | |
| クレジットが処理されていない | Stripe | $246.90 | 完了 | 円 | |
| 重複処理 | Worldpay | $54.25 | 完了 | 失効 |
01 / 検証から結果までの 1 つの統合ワークフロー#
ワークフローは 5 つの段階に従います。ケースは、認定されたプロバイダーからの通知から自動的に開始するか、既存の chargeback から登録できます。登録は既存のケースを記録し、銀行との chargeback を開始しません。
| 段階 | 商人の結果 |
|---|---|
| 01 · 受信または登録 | プロバイダーのケースを元の支払いとプロセッサアカウントに接続します。 |
| 02 · 必要なものを理解する | 請求内容、返信期限、利用可能なアクション、および現在の要件を確認してください。 |
| 03 · 準備とレビュー | 構造化された事実と、正確で検証された証拠のバージョンを組み合わせて、パッケージを承認します。 |
| 04 · 適切なリクエストを送信 | そのプロバイダアカウント、ケースステージ、およびラウンドに対して許可されているアクションを送信します。 |
| 05 · 確認された進捗状況を追跡 | プロバイダのレビューと最終的なケースの結果とは別に、配送状況を追跡します。 |
1つのケース、3つの独立した追跡
本人確認は、DEUNAが報告されたケースを信頼できるプロバイダまたは支払い元に一致させるかどうかを最初に判断します。その後、3つのステータス追跡は、異なる運用上の質問に答えます。
02 / 1回接続。元のアカウントを使用#
紛争は、元の支払い処理を行ったプロセッサのアカウントに紐付けられます。DEUNAは既存のケースを別のプロセッサにルーティングせず、チェックアウトの有効化だけでは紛争へのアクセスを確立しません。
DEUNAとの設定を確認してください
本番環境で稼働する前に、有効な環境、国、支払い製品、およびプロセッサアカウントを確認するために、テクニカルアカウントマネージャーにお問い合わせください。取り込みが自動か手動か、サポートされているケースのステージとプロバイダのアクション、およびプロバイダの状態の更新方法を確認してください。また、役割モデル、証拠のルール、外部支払いサポート、および残りのプロバイダ側の設定を確認してください。
機能が有効になっていない場合、Adminは、あなたのアカウントの連絡先情報を含む、早期アクセス画面を表示します。
チャージバックの自動受信を設定する
自動受信は決済プロバイダーから始まります。DEUNA がプロバイダー接続の通知経路全体を認定して有効化すると、プロバイダーはネイティブの 新しい紛争またはチャージバック イベントを、その加盟店と環境に割り当てられた DEUNA のコールバックへ送信します。DEUNA はケースデータを正規化する前に通知を検証し、検証できない通知を拒否し、プロバイダーのイベント ID とケース ID を使って重複配信を排除します。
各環境の正確なコールバック URL、プロバイダイベント名、署名方法、および秘密キーについて、技術アカウントマネージャーにお問い合わせください。 設定された宛先は、プロバイダ固有のパターンに従います。 他の商社、環境、またはプロセッサからの URL をコピーしないでください。
| 環境 | プロバイダのコールバックパターン |
|---|---|
| サンドボックス | https://api.sandbox.deuna.io/merchants/{merchant_id}/chargebacks/{provider} |
| 本番 | https://api.deuna.io/merchants/{merchant_id}/chargebacks/{provider} |
例として、有効な接続のプロバイダー側の設定は以下のようになります。
Destination: https://api.sandbox.deuna.io/merchants/merchant_demo/chargebacks/provider_name
Method: POST
Events: new dispute or chargeback; subsequent case updates when certified
Payload: provider-native JSON, sent without transformation
Signing: enabled with the secret and signature headers issued for this connection
Retries: enabled according to the provider's webhook policyパラメーター {provider} の値とイベント名は自由入力ではありません。DEUNA のゲートウェイはプロバイダーごとのチャージバックアダプターを使用しており、共通のプロバイダーペイロードはありません。接続に対して確認されたコールバックとイベントだけを使用してください。元のリクエストボディとすべてのプロバイダー署名ヘッダーを保持してください。どちらかを変更すると検証に失敗する可能性があります。プロバイダーの Webhook 設定に DEUNA のプライベート API キーを入力しないでください。
API を使用して新しいケースを登録する
自動受信が有効でない場合、またはプロバイダー通知を受信できなかった場合は、サーバー側のプライベート認証情報を使用して既存のチャージバックを登録します。このリクエストは DEUNA ケースを状態 reported で作成します。発行会社、カードネットワーク、またはプロバイダーにチャージバックを開始するものではありません。
curl --request POST \
--url 'https://api.sandbox.deuna.io/merchants/disputes' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: YOUR_PRIVATE_API_KEY' \
--header 'X-Idempotency-Key: register-cb-demo-001' \
--data '{
"payment_context": {
"origin": "deuna",
"order_token": "order_demo_001"
},
"case": {
"provider_case_id": "cb_demo_001",
"amount": 125000,
"currency": "MXN",
"reason": "product_not_received"
},
"draft": {}
}'const response = await fetch("https://api.sandbox.deuna.io/merchants/disputes", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_PRIVATE_API_KEY",
"X-Idempotency-Key": "register-cb-demo-001"
},
body: JSON.stringify({
"payment_context": {
"origin": "deuna",
"order_token": "order_demo_001"
},
"case": {
"provider_case_id": "cb_demo_001",
"amount": 125000,
"currency": "MXN",
"reason": "product_not_received"
},
"draft": {}
})
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();import requests
response = requests.request(
"POST",
"https://api.sandbox.deuna.io/merchants/disputes",
headers={
"Content-Type": "application/json",
"X-Api-Key": "YOUR_PRIVATE_API_KEY",
"X-Idempotency-Key": "register-cb-demo-001"
},
json={
"payment_context": {
"origin": "deuna",
"order_token": "order_demo_001"
},
"case": {
"provider_case_id": "cb_demo_001",
"amount": 125000,
"currency": "MXN",
"reason": "product_not_received"
},
"draft": {}
},
)
response.raise_for_status()
data = response.json()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.deuna.io/merchants/disputes",
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: YOUR_PRIVATE_API_KEY",
"X-Idempotency-Key: register-cb-demo-001"
],
CURLOPT_POSTFIELDS => json_encode([
"payment_context" => [
"origin" => "deuna",
"order_token" => "order_demo_001"
],
"case" => [
"provider_case_id" => "cb_demo_001",
"amount" => 125000,
"currency" => "MXN",
"reason" => "product_not_received"
],
"draft" => []
])
]);
$response = curl_exec($curl);
curl_close($curl);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sandbox.deuna.io/merchants/disputes"))
.header("Content-Type", "application/json")
.header("X-Api-Key", "YOUR_PRIVATE_API_KEY")
.header("X-Idempotency-Key", "register-cb-demo-001")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"payment_context\": {\n \"origin\": \"deuna\",\n \"order_token\": \"order_demo_001\"\n },\n \"case\": {\n \"provider_case_id\": \"cb_demo_001\",\n \"amount\": 125000,\n \"currency\": \"MXN\",\n \"reason\": \"product_not_received\"\n },\n \"draft\": {}\n }"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
request, err := http.NewRequest("POST", "https://api.sandbox.deuna.io/merchants/disputes", strings.NewReader("{\n \"payment_context\": {\n \"origin\": \"deuna\",\n \"order_token\": \"order_demo_001\"\n },\n \"case\": {\n \"provider_case_id\": \"cb_demo_001\",\n \"amount\": 125000,\n \"currency\": \"MXN\",\n \"reason\": \"product_not_received\"\n },\n \"draft\": {}\n }"))
if err != nil { panic(err) }
request.Header.Set("Content-Type", "application/json")
request.Header.Set("X-Api-Key", "YOUR_PRIVATE_API_KEY")
request.Header.Set("X-Idempotency-Key", "register-cb-demo-001")
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}金額は、通貨の最小単位を使用します。 125000 は 1,250.00 MXN です。同一のリクエストを再試行するときは、同じ X-Idempotency-Key を使用してください。登録に成功すると 201 Createdが返されます。同じキーで同一のリクエストを再送すると元の結果が返されますが、同じプロバイダーケースと競合する別のリクエストでは 409 Conflictが返されます。冪等性キーがない場合は 400、認証情報が無効な場合は 401が返されます。認証された加盟店のスコープ外にある支払いまたは接続は公開されません。
登録後、 GET /merchants/disputes/{id} を呼び出し、プロバイダーケース ID、元の支払い、プロセッサアカウント、金額、通貨、および reported の本人確認状態を確認します。報告済みのケースは、DEUNA が信頼できるプロバイダー情報を受信し、そのアカウントの認定済み要件を読み込むまで、レビューや送信に進めません。
紛争オペレーションを不正検出フィードとは分離してください
紛争管理は、プロセッサのケースの調査、商人の応答の準備、利用可能なアクションの送信、および結果の追跡を行うためのワークスペースです。 チャージバックのアップロード これは、歴史的な結果を不正検出プロバイダに送信する別のワークフローです。フィードファイルは紛争を登録したり、プロバイダに返信したり、アクティブなケースに証拠を添付したりしません。
検証済みのAPIインターフェース
DEUNA API Gatewayを介して公開されている紛争ルーティングには、 プライベート APIキーまたは承認された商人のセッションが必要です。ブラウザキーは使用できません。 X-Idempotency-Key 副作用のあるリクエストで利用し、実行時に機能を検出してください。
| 目的 | 公開されたエンドポイント |
|---|---|
| 設定されたアカウントと利用可能性の確認 | GET /merchants/disputes/connections, GET /merchants/disputes/connections/{processor_account_id}, GET /merchants/disputes/capabilities |
| ケースの登録、リスト表示、および読み取り | POST /merchants/disputes, GET /merchants/disputes, GET /merchants/disputes/{id} |
| 応答の準備 | PATCH /merchants/disputes/{id}/draft, PATCH /merchants/disputes/{id}/metadata, GET /merchants/disputes/{id}/requirements |
| 証拠と情報リクエストの管理 | /merchants/disputes/{id}/evidence およびそのバージョンルート; /merchants/disputes/{id}/information-requests およびその応答ルート |
| レビューと送信 | /merchants/disputes/{id}/reviews, POST /merchants/disputes/{id}/reviews/{review_id}/approve, POST /merchants/disputes/{id}/submit |
| 変更と試行の追跡 | GET /merchants/disputes/{id}/updates, GET /merchants/disputes/{id}/submissions, GET /merchants/disputes/{id}/submissions/{submission_id} |
詳細は、 商人のエンドポイントカタログ 現在のゲートウェイの在庫を確認してください。
03 / ケースのすべてのステップを1つのワークスペースで#
注意が必要なケースを優先
開きます 操作 > 紛争 応答期限、紛争金額、請求理由、準備状態、プロバイダの状態、および次のアクションを比較するために。キューはオペレーターの作業、7日以内の期限切れのケース、プロバイダのフォローアップ、および記録された結果を強調表示します。注文トークンまたはプロバイダの支払いIDで検索し、プロセッサアカウント、ステータス、または作成日によってビューを絞り込みます。
ケースと支払いに関する情報をまとめます
使用する 紛争を登録 既存のプロバイダからのチャージバックが自動入力されない場合に。プロバイダのケースID、商社参照、元のプロセッサアカウント、ケースのステージ、ラウンド、開始時間、および応答期限から開始します。DEUNAの注文が存在する場合は、それを読み込みます。存在しない場合は、承認された外部支払い識別子とコンテキストを提供します。最後に、請求理由とDEUNAが検証できない商社の情報(配送、サービス利用、同意された条件、キャンセル、または顧客とのコミュニケーションなど)を提供します。
アクションを実行する前に、ケースを理解する
ケース概要は、請求、元の理由、正規化された理由、ステージ、ラウンド、争論金額、期限、支払い、キャプチャ、払い戻し、注文アイテム、および次のアクションを1つの場所にまとめます。レビューまたは提出する前に、プロバイダの事実、支払い事実、および商社の記録間の矛盾を解決します。
04 / 包括的な防御を構築#
あなたの回答が製品です。ファイルはそれを提供する方法です。DEUNAは、認定されたプロセッサとの接続で受け入れられる表現に、ビジネスの事実、現在の要件、および正確な証拠のバージョンを組み合わせます。
応答の準備
開きます 応答 顧客、購入、争論されたアイテム、日付順の記録、履行またはサービス利用、ポリシー、払い戻し、およびコミュニケーションから商社の立場を構築します。明確で事実に基づいた言語を使用し、すべての重要なステートメントをソースに接続します。DEUNAは既知の注文および支払い事実を再利用できますが、物語を作成したり、注文記録を履行の証拠として扱ったりしません。
応答を請求に一致させる
要件は、請求理由、プロセッサアカウント、支払い方法、国、ステージ、ラウンド、およびアクションによって変化します。これらの例は、コンテンツがどのように変化するかを示しています。ライブ要件は常に authoritative です。
| 請求 | 構造化されたコンテンツ | 可能なサポート証拠 |
|---|---|---|
| 商品が届かない | 争論されたアイテム、配送先住所、キャリアおよび追跡情報、発送および配達の日付、商社の説明。 | 承認されたキャリア記録、配達日証明、または署名された配達確認。 |
| デジタルサービスが届かない | サービスの説明、アカウント参照、サービス期間、アクセスまたは利用の日付、キャンセルコンテキスト。 | アクセスログ、サービス利用記録、サービス契約、または関連する顧客とのコミュニケーション。 |
| クレジットが処理されない | 元の支払い、払い戻し参照、金額、通貨、完了状態および時間。 | 正式な払い戻しまたはクレジットの確認。保留中の払い戻しは完了した払い戻しではありません。 |
| 重複取引 | 取引参照、日付、金額、別々の注文または商品、および商業的な差異。 | 購入明細または注文記録による明確な購入の証明。 |
| サブスクリプションのキャンセル | 合意、適用されるポリシーのバージョンと時間、更新通知、およびキャンセル履歴。 | 適用される条件、同意記録、および関連する通信。 |
| 不正な購入 | 利用可能な認証結果、同意事実、および許可されたアカウント、デバイス、またはセッションコンテキスト。 | 元の認証または同意記録と関連する履行証明。フルなPAN、CVV、資格情報、または秘密は提供しないでください。 |
完全性は真実を確立したり、有利なプロバイダの決定を保証したりしません。
証拠を関連付けてください
証拠は単なるアップロードされたファイル名ではありません。各アイテムにはカテゴリ、イベントの日付、説明、関連する注文アイテム、サポートされているレスポンスフィールド、および不変のファイルバージョンがあります。ファイルのアップロードまたは置換はバージョンを作成しますが、レスポンスは送信しません。紛争の証拠のファイル形式とサイズ制限は、以下にまとめられています。
| 証拠契約 | 現在のDEUNAの制限 |
|---|---|
| 受け入れ可能なベース形式 | PDF、JPEG、PNG、プレーンテキスト、およびRFC 822メールメッセージ |
| ファイルサイズ | ファイルバージョンあたり25MiB |
| 証拠の数 | ケースあたり50個の論理的な証拠アイテム |
| バージョン履歴 | 証拠アイテムあたり20個の不変バージョン |
プロセッサは、より小さいサイズ、数、ページ、形式、または証拠役割の制限を課すことができます。アップロード後、バージョンは検証とセキュリティチェックに合格してから有効になります。 利用可能. 承認されたバージョンのみがレビューに進むことができます。
欠落している情報を解決する
情報リクエストは、欠落している、読めない、または矛盾する事実を追跡可能なタスクに変換します。影響を受けるレスポンスパス、証拠役割、注文アイテム、要件、担当者、およびレスポンス先を特定します。商人のレスポンスは再検証をトリガーしますが、リクエストを自動的に解決したり、ケースを承認したり、プロバイダの期限を停止したりしません。
正確なパッケージを準備してレビュー
レビューはプロバイダのアクション、構造化されたレスポンス、現在の要件、および正確な証拠バージョンを凍結します。レビュー担当者は、ロックされたパッケージを現在のドラフトと比較します。関連するコンテンツの変更または新しい最新の証拠バージョンは、古い承認を無効にします。レビューを送信する前に、新しいレビューを作成して承認してください。
送信と調整
承認されたパッケージが完全で、最新で、資格がある場合にのみ送信してください。選択されたアクションは、プロバイダとの接続とケースによって異なります。防御、補完、責任の負う、またはサポートされている場合に、応答を停止することができます。キューに入れられたり、送信中のアクションは、DEUNAが操作の処理を受け入れたことを示すだけです。
実行が 結果不明元の試行を再試行する前に、確認してください。無効な再試行は、同じプロバイダのアクションを2回送信する可能性があります。
05 / 進行状況を確認#
開きます アクティビティ 登録、プロバイダの状況、応答の変更、証拠の完了、情報リクエスト、レビュー、承認、送信試行、および結果を、時系列順に確認できます。送信履歴は、作業版が後で変更された場合でも、元のアクション、試行、受信、および実行結果を正確に保持します。
API統合の場合、 GET /merchants/disputes/{id}/updates ケースの変更を返します。また、送信エンドポイントはアクションの再調整をサポートします。常に、ソース、タイムスタンプ、および有効性を保持してください。正常なアップロードは、プロバイダの承認を意味せず、承認は有利なケース決定を意味しません。
ステータス参照
| 追跡 | 州 | 意味 |
|---|---|---|
| 準備 | draft, needs_information, under_review, ready, approved, submitted, completed | 商社の応答が進行できるかどうかを記述します。 |
| アクションの実行 | queued, transmitting, reconciling, succeeded, rejected, outcome_unknown, cancelled_before_send | 1つのプロバイダのアクション試行を記述します。不確実性は再試行前に解決する必要があります。 |
| プロバイダーのライフサイクル | unknown, needs_response, under_review, won, lost, accepted, withdrawn, closed | 最後に確認されたプロバイダの状態のみを記述します。 |
ローカルの締め切りが過ぎたことは、プロバイダーがケースを「失効」とマークしたことの証拠ではありません。同様に、 承認 とは、商人が責任を承諾したことを意味し、プロバイダーが証拠を承認したことを意味するわけではありません。
元の支払いに戻る
関連する紛争がある支払いの場合、注文の詳細ページには、紛争金額、プロバイダーの状態、準備状態、次のアクション、および応答期限を含む、各ケースが表示されます。 紛争の管理 を選択してケースを開く、または この注文に関連するすべての紛争を表示する でフィルタリングされたキューに戻る。
06 / キューの背後にあるポートフォリオを見る#
開きます ポートフォリオ分析 特定の期間と通貨におけるチャージバックのリスクと回収状況を理解するために。ポートフォリオビューは、コホートの定義を明確に保ち、金額を通貨間で変換しません。
| 表示 | 説明内容 |
|---|---|
| リスク | チャージバック率、異議申し立て金額、および対象となる処理済み決済における日次トレンド。 |
| 結果 | 解決済、未解決、および勝訴率、回収金額。未解決のケースは、勝訴率から除外されます。 |
| 詳細 | プロバイダー別、金額、勝訴率、および紛争理由の組み合わせ。 |
30日または90日の期間と利用可能な通貨を選択します。ポートフォリオフィルターは、キューフィルターとは独立しています。
運用原則#
主要な用語#
| 用語 | 意味 |
|---|---|
| 請求理由 | 発行元、ネットワーク、またはプロバイダーが支払いを「異議申し立て」と判断する理由。 |
| 反論理由 | 商人の許可された対応ポジション。 |
| 実行エラー | アクションの準備または実行に失敗した場合。これは、請求理由やケースの結果とは異なります。 |
| 証拠 | 複数のレスポンス事実に関連付けられた、バージョン管理されたファイル。 |
| 情報要求 | 特定の問題または欠けている要件に対する回答または解決が必要な質問。 |
| レビュー | アクション、応答、要件、および正確な証拠版の完全なスナップショット。 |
| トランザクションの実行 | 承認されたプロバイダーによるアクションの実行要求。 |
| プロバイダーからの結果 | プロバイダーによって報告される、最終的な決定または処理完了。 |