Introduction

Casap runs disputes for financial institutions: intake, investigation, provisional credit, network filing, the decision, and every notice the regulation requires, with the clocks tracked end to end. Money and cards stay in your systems; Casap tells you when to move them.

The API is REST over HTTPS with JSON bodies, and it works in both directions: you call Casap to open and track disputes from your own app, and Casap calls endpoints you host when a dispute starts elsewhere (see Integration models). Either way, every change reaches you as a signed webhook.

Build against sandbox first; it moves no money:

https://api-sandbox.casaphq.com/v1

Cardholder-facing text (reason names, questions, status messages) follows the optional Accept-Language header: en, es or fr, forwarded as the browser sends it; anything else, or an untranslated string, is English.

File a dispute

Seven calls, in order. Three carry the weight: Eligibility Check validates the selection, Get Questionnaire returns the questions, and Create Dispute opens the case.

Recommended dispute flow: start from List Accounts or from a transaction picked on your site, then List Disputable Transactions, Eligibility Check, Get Dispute Reasons, Get Questionnaire, Create Dispute, and optionally Upload Files. List Member Disputes and Get Dispute Status power the cardholder's dispute screens.
Step Purpose
1. List Accounts Fetch the cardholder's accounts and their accountUuids. Optional, see transaction-first entry below.
2. List Disputable Transactions Show the cardholder the transactions they can dispute.
3. Eligibility Check Required. Validate the selection before moving on.
4. Get Dispute Reasons Show the reason categories that apply to the selection.
5. Get Questionnaire Show the intake questions for the chosen reason.
6. Create Dispute File the dispute with the cardholder's answers.
7. Upload Files Attach supporting documents. Optional.

Two more endpoints power the cardholder's dispute screens: List Member Disputes (the last six months) and Get Dispute Status (detail and timeline for one dispute).

Transaction-first entry. If the cardholder starts from a transaction already on your site, skip List Accounts and send the account identifier you hold; Casap confirms its format at onboarding.

After the claim

Once a dispute exists, Casap owns it. When a credit is due, a credit must be reversed, or a card has to be reissued, Casap asks your systems through the webhook, and every other change reaches the same endpoint. Cardholder communications are Casap's, sent in your branding.

After the claim: Casap investigates, files with the network, decides and notifies the cardholder. Every change reaches your webhook endpoint as a dispute.updated message carrying the actions Casap needs from you: issue provisional credit, replace card, issue final credit, reverse provisional credit. Cardholder communications are sent by Casap, or by you from the notification Casap raises.

The Webhooks section covers the message, the actions and delivery.

Where you start

Get sandbox credentials

Casap issues a sandbox credential at onboarding. Sandbox moves no money and, unless Casap enables test filing for you, files with no network. See Environments.

Make the first call

Send GET /v1/accounts for a test cardholder with the credential on the Authorization header. See Authentication.

Register a webhook endpoint

Give Casap an HTTPS URL. Verify every message's signature, store it, then acknowledge. See Getting set up.

Go live

Production has its own host and its own credential. Switch both; nothing else changes.

Next steps