Skip to content
AffCheck

CJ commission corrections for returns: a guide

How advertisers correct CJ commissions for returned merchandise before the locking date: locking cycles, correction reasons, files and extensions.

By The AffCheck team · Updated

On CJ you do not decline a sale. You send a correction: a full correction for an order that came back or was cancelled, a partial one for an order that shrank. The mechanism is different from Awin's pending list, and so is the clock — CJ's deadline is a date in the calendar, not a number of days after the sale.

This guide is for Shopify brands running a CJ programme who want the commission on returned orders corrected before it locks.

Correction, not decline

CJ's correction data import is how an advertiser tells CJ that a transaction should not be paid as recorded. A full correction removes it; a partial correction, also called a restatement, lowers the amount. Both are records in a file (or API call) with a reason code, the transaction id and the order id.1

The equivalent of Awin's "too late" is CJ's lock: "Cancellations cannot be processed for orders that are already in a Locked or Closed status."1 Once a transaction is locked, the commission is settled.

The deadline: the 10th, or your custom lifecycle

For most programmes the rule is one sentence:

"Correction data can be sent on a rolling daily basis, or before the 10th of the month for transactions which occurred in the prior calendar month."1

So every transaction from January — the 2nd and the 30th alike — has to be corrected before 10 February. That makes CJ's deadline easy to diarise and easy to miss: there is no per-transaction countdown, just a cliff once a month.

Programmes on a custom lifecycle lock a fixed number of days after the event instead. CJ's own example: for a programme with a 60-day custom lifecycle, transactions lock 60 days after the event date.1 If you do not know which you are on, ask your CJ contact before you plan the month; the two deadlines can be weeks apart.

Extensions buy a cycle, but only for some states

A transaction you are not ready to judge can be extended. The same 10th-of-the-month deadline applies — "Transactions from a previous month that you wish to extend must be processed by the 10th of the current month" — and only transactions in the NEW and ACCEPTED states qualify: "extending LOCKED or CORRECTED transactions is not permitted".2

Step 1: export the Commission Detail report

Sign in to the CJ Account Manager and export the Commission Detail report as CSV for the period you are correcting, including new and extended actions. The same data is available through the Commission Detail API if you would rather pull it.3

Keep the transaction id and the order id. Both matter: the correction record wants the transaction id, and the order id is what you will match against Shopify.

Step 2: export refunds and cancellations from Shopify

In Shopify admin, open Orders, filter to the same dates — starting a few days earlier, because an order placed on 31 December can produce a January transaction — and Export as a CSV file.

The columns that matter are Name, Created at, Total, Refunded Amount, Cancelled at and Financial Status. The export also contains customer columns; nothing in this process needs them.

Step 3: match them

Look up each CJ order id in the Shopify export. In a spreadsheet, with the CJ order id in column C and the Shopify export on a sheet called Orders:

=XLOOKUP(C2, Orders!A:A, Orders!F:F, "NOT FOUND")

where column F is Refunded Amount. Repeat for Cancelled at. Three buckets come out of it:

  • Refunded in full or cancelled → a full correction.
  • Partially refunded → a partial correction at the amount the customer kept.
  • Not found → check before doing anything. Nine times out of ten the orders export does not go back far enough.

Step 4: choose full correction, partial correction or extension

What Shopify saysWhat to send CJ
Order refunded in fullFull correction, reason RETRN
Order cancelled before fulfilmentFull correction (cancellation)
Part of the order refundedPartial correction with the new amount
Order also claimed on another networkFull correction on the duplicate claim, reason DUPO
Return window still open, decision not madeExtension, if the transaction is NEW or ACCEPTED
Order not in your Shopify exportNothing yet — widen the export

A partial correction carries the new amount (or the item), so the commission is recalculated rather than removed.1

Step 5: send the corrections

There are three routes, and which you have depends on your account:

  1. The Account Manager. Corrections can be submitted through the CJ Account Manager, including a Web Upload for the correction file.3
  2. A correction data import. CJ Support sets up a correction-data subscription for your account; after that, files can be delivered by CJ SFTP, your own FTP/SFTP or HTTP endpoint, email, or that Web Upload.3
  3. The Tracking API. The GraphQL Tracking API has cancelOrders and restateOrders mutations for programmatic corrections.3

The file itself is delimited — comma, tab or pipe — or XML. The header carries your cid and the subscription's subid; each record is REASON, TID, OID plus an amount or item for a partial correction.1 CJ's own example of a full correction record is exactly this short:

RETRN,136841,OTZ1641541E

Set the import up before you need it

The subscription is arranged with CJ Support, not self-serve, so the first correction file is not the moment to discover you do not have one. If you have never sent corrections before, ask for the subscription this month and use the Account Manager for this cycle.

Reason codes and what they are for

CJ's correction records use short reason codes, and they are case-sensitive. The documented set is CC, UQL, CSSO, DUPO, RETRN and OTHER.1

Two are the ones you will use most:

  • RETRN — returned merchandise. Your refunded orders.
  • DUPO — duplicate order. The claim to correct when the same order was also credited elsewhere.

The rest cover cases such as an invalid card or an order that could not be fulfilled. Check the current list in CJ's correction-data documentation before using one you have not sent before; the codes are exact strings, and a wrong one is a rejected record.

Whatever the code, put the specifics in the surrounding process — the order id, the date and the amount — so a publisher asking "why was this corrected?" gets an answer in one reply.

If you run CJ's Shopify app

The CJ Network Integration app has an opt-in Automated Order Corrections feature. CJ describes it plainly: "The Shopify Order Corrections enhancement within the CJ Shopify App helps automatically identify and apply corrections for eligible order cancellations and restatements that occur within Shopify after the feature is enabled."4

And, just as plainly, what it does not cover: "Cancellations or restatements that occurred before the enhancement were enabled. Corrections made outside of Shopify, such as cancellations from fulfillment systems. Corrections received after a transaction has reached Locked or Closed status."4

That is a useful list, because it is exactly what a monthly check is for. If you enabled the feature in March, February's refunds are yours. If your 3PL cancels orders in its own system, those are yours. And nothing rescues a transaction that has already locked.

It also sees only CJ. An order claimed on CJ and on Awin is two invoices from two companies, and no single-network automation will ever notice.

Advertiser Pro, and what 50% costs

There is a third-party Shopify app, CJ Affiliate Advertiser Pro, that finds correctable commissions on CJ. Its App Store listing states the pricing: "Free to install. Additional charges: 50% of recovered affiliate commissions up to monthly cap."5

Performance pricing is a real option, and for a programme that corrects nothing today it can be better than nothing. Two things are worth knowing before you pick it. First, half of every recovery is the fee, for as long as you use it — on a programme recovering $800 a month that is $400 a month, for ever. Second, a tool paid on recoveries has an interest in finding them, which is an awkward incentive for a decision your publishers experience as a decline.

AffCheck is the other shape: a flat monthly price, every suggestion shown with its evidence, and you confirm each one. It also reads your other networks, which is where duplicate claims live.

Next: affiliate de-duplication across networks for the claims CJ cannot see, and importing your CJ commissions if you want this to run every week.

Network facts checked on 18 Sep 2026 against each network’s own documentation.

FAQ

Questions, answered

What is the deadline for CJ commission corrections?

For most programmes, corrections for transactions from the previous calendar month must be sent before the 10th of the current month. Programmes on a custom lifecycle lock a fixed number of days after the event instead — for example 60 days.

Can I correct a CJ transaction after it locks?

No. CJ says cancellations cannot be processed for orders already in a Locked or Closed status, so the correction has to reach CJ first.

Which reason code is a returned order?

RETRN, for returned merchandise. DUPO is a duplicate order. The codes are case-sensitive exact strings, and the documented set is CC, UQL, CSSO, DUPO, RETRN and OTHER.

What is the difference between a correction and an extension?

A correction removes or lowers the commission. An extension buys another cycle on a transaction you are not ready to judge, and only works on transactions in the NEW or ACCEPTED state.

Does CJ’s Shopify app handle returns for me?

Partly. With Automated Order Corrections enabled it sends cancellations and restatements made in Shopify after enablement. It does not cover changes made before you enabled it, changes made outside Shopify, or anything after a transaction has locked.

See what you paid for last month.

Two exports, five minutes, a dollar figure for your store. Files never leave your browser.

Run the free check