Building RebutCase, a chargeback app for Shopify stores
Muhammad Aamir Khan4 min read

Building RebutCase, a chargeback app for Shopify stores
A chargeback is the one email a store owner reads twice. The bank has taken the money back, the customer is not answering, and the dispute form in Shopify gives you a few days to prove that the order was real and arrived. Most merchants lose that argument not because they are wrong but because the proof is scattered across the order page, the carrier site, the inbox and a policy page that has changed since the customer bought.
I spent September and October 2026 building RebutCase, a Shopify app that gathers that proof into a response the merchant can read, change and submit. This is a note on why it looks the way it does.
Reading the complaints first
Before writing any code I read 61 merchant complaints about chargeback apps on the Shopify Community and the App Store. Three problems came up again and again.
The first was surprise fees. Several apps charge a share of every recovered dispute, so the bill goes up precisely when the store is already losing money. The second was blind submission. Some apps file evidence on the merchant's behalf, and the merchant only finds out what was sent after the bank has ruled. The third was template responses, the same paragraphs for every dispute, with the store name swapped in.
RebutCase is built against those three. It has flat monthly plans billed through Shopify, with a free plan that covers two responses a month. It never submits anything on its own; the merchant presses the button in Shopify. And every sentence in the response cites an exhibit from the store's own records, so a reviewer at the bank can check each claim against a document.
What the app does
From the day it is installed, RebutCase saves a copy of every product page and policy, and a new copy whenever one changes. A dispute that arrives months later can then show what the customer saw on the day they ordered. That turned out to be the most useful part, because by the time a chargeback lands the page has usually changed.
When a dispute comes in, the app reads the order, the payment checks, the tracking history, the customer's earlier orders and the policies. It compares them with the reason the bank gave and lists what is missing, for example a signature when the order was over a certain value. Then it writes a short response in which every sentence points to one of those exhibits. The response, a timeline and the exhibits become a PDF pack saved to the dispute. A weekly email shows the store's estimated chargeback rate next to the line at which Shopify and the card networks step in.
If you run a store and want the manual version of this, I wrote up the steps in how to respond to a chargeback on Shopify and what the numbers mean in your Shopify chargeback rate.
How it is built
The app is a React Router application on Shopify's app template, written in TypeScript on Node 24. Prisma talks to a Postgres database on Neon. The response text is joined by a language model from claims the engine has already verified against the records, so the model never invents a fact; it only phrases what the exhibits support. PDFs are built with pdf-lib, and the whole thing runs on Railway behind Cloudflare. There are 845 unit tests, most of them around the evidence checks, because a wrong check in this product costs a merchant real money.
Two rules shaped every screen. The app never promises an outcome, because nobody can know how a bank will rule. And it never acts for the merchant; it prepares, the merchant decides.
Where it stands
RebutCase was submitted to the Shopify App Store on 23 October 2026 and is in review. The website keeps a short notify list for merchants who want one email when it is listed. It is made under Zoviotech, my studio.