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.
| 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.
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
Authentication
The two credentials Casap accepts, and how each is protected.
Dispute and transaction lifecycle
The states a dispute moves through and what each means for money.
API Reference
Every endpoint, with request and response schemas.
Webhooks
What Casap does once a dispute exists, and what it asks of you.