Integrations

Zapier in a few clicks.

The Disputek app exposes chargebacks as Zap triggers, document bundles and dispute-status updates as Zap actions, so a chargeback can start a workflow in any of the thousands of apps on Zapier - and an upstream system can push documents in, or file the dispute back out, without leaving the Zap.

What the app does

  • TriggerNew or Updated Chargeback Polls the chargebacks endpoint and emits anything new or changed. Deduplicated on the chargeback id, so a Zap never fires twice for the same record. Optionally bounded by a since timestamp.
  • ActionUpload Documents & Analyze Pushes a four-document bundle - 850, 856, 810, 812 - and runs analysis. 997 functional acknowledgments and 820 remittance advice are optional. This is how a Zap feeds Disputek from an upstream system.
  • ActionUpdate Dispute Status Files a chargeback, or records what happened to one: FILED, WON, LOST or PREVENTED. Forward-only, and an illegal transition is refused rather than forced. Needs an API key with the chargebacks:write scope, which a new key does not get by default - WON and PREVENTED record a recovery fee against the account.
  • SearchFind Chargeback Looks up a chargeback by chargeback id, PO number, or retailer name. Use it mid-Zap to pull the current classification and dispute deadline before you branch.

Connect it

  1. 1Create a Disputek API key: Settings - API Keys in the dashboard. Keys are shown once at creation, stored only as a hash, and can be revoked at any time.
  2. 2The Zapier app is not in Zapier’s directory yet, so there is nothing to search for. Ask us to publish it, or run the scaffold from Disputek’s repository against your own account. When asked for the Disputek API key, paste the dk When asked for the Disputek API key, paste the dk_ value. Zapier calls the chargebacks endpoint to test the connection - a 2xx means the key is valid.
  3. 3Build the Zap: pick New or Updated Chargeback as the trigger, then add the action steps you want - a Slack alert on a high-value chargeback, a row in your finance sheet, a task in your project tool.
  4. 4Turn the Zap on. Zapier polls on its own schedule; the trigger deduplicates on chargeback id, so a record that has not changed will not re-fire.

Integrations are a paid-plan feature. The same API key is what the webhook and n8n paths use, so one credential covers every connection you make.

What the trigger emits

Each chargeback arrives as a flat object, so a Zap can branch on it without a formatter step:

id              internal record id (Zapier dedupe key)
chargebackId     the retailer's chargeback reference
poNumber        purchase order the chargeback points at
retailer        retailer name
amount          chargeback value
classification  Likely Disputable | Likely Valid | Needs More Info
status          current dispute state
disputeDeadline when it must be filed
updatedAt       last change, for since-bounded polling

Pushing documents into Disputek

The Upload Documents & Analyze action is the write path. Zapier maps its fields onto the integration documents endpoint, which accepts the four EDI document types as text and runs the same analysis the dashboard runs:

curl -X POST https://api.disputek.com/api/integrations/documents \
  -H "Authorization: Bearer dk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "January Walmart run",
    "purchaseOrders": "850 content",
    "asns": "856 content",
    "invoices": "810 content",
    "chargebacks": "812 content"
  }'

Do this when the source of truth for your EDI documents is another system. Pair it with the analysis.completed webhook to close the loop: push here, get notified when the numbers are ready.

Why polling instead of a webhook?

The Zapier trigger polls, and that is a deliberate trade. A Zap that depends on a polling interval is simpler to reason about and cannot silently miss an event, because there is no event to miss - the next poll asks for everything changed since the last one. If you need to be told the moment analysis finishes, pair the signed webhook with the Zap.

Polling covers the read side. The write side has the opposite problem, and Zapier makes it worse: if the Upload Documents action returns a 5xx or the request times out, Zapier retries it, and an un-keyed push would create a second dataset and run a second analysis. So the action sends an Idempotency-Key header derived from the documents themselves. A retry re-sends the same documents, lands on the same key, and gets the first run's result back instead of a duplicate. Give the same documents a different name and that is a deliberate second run.