refundline

Answer the bank before the print ships

A customer disputes a charge on one of your shops. The bank sets a date to answer by. The print lab may still be making the order. refundline reads the lab first, stops what has not shipped, and drafts your evidence with a source beside every line.

Three Cases, 13 October

One dispute on a parcel already delivered, one on a print still at the lab, one partial refund. These three are recorded fixtures built from the objects Stripe, Printful and Prodigi publish, run through the same code that takes a live event; no live dispute has passed through refundline yet.

Case 1 of 3

Dispute, paintedhulls

Due Oct 22

Amount
$145.00
stripe: dispute.amount
Reason
product not received
stripe: dispute.reason
Lab
printful fulfilled, shipped
printful: GET /orders/118204455
Lab action
no cancel: printful shipped 118204455 on 2026-10-01; the parcel is the evidence now
refundline

Evidence, drafted

  1. Order cs_live_shipped0001, paintedhulls_shop, paid 145.00 USD on 2026-09-28 stripe: checkout.session cs_live_shipped0001
  2. Customer R. Okafor, r.okafor@example.com stripe: session.customer_details
  3. Product 1 x Painted Hulls portrait, 16x20 canvas stripe: checkout.session cs_live_shipped0001 line_items
  4. Customer approved the design 2026-09-28T18:01:12Z shop: session.metadata.approved_at
  5. Lab order printful 118204455, fulfilled printful: GET /orders/118204455
  6. Shipped 2026-10-01 by USPS printful: GET /orders/118204455
  7. Tracking 9400111899223197415820 printful: GET /orders/118204455 tracking

Case 2 of 3

Dispute, thelinks

Due Oct 23

Amount
$210.00
stripe: dispute.amount
Reason
fraudulent
stripe: dispute.reason
Lab
prodigi InProgress, then cancelled by refundline
prodigi: GET /v4.0/orders/ord_1288410
Lab action
cancelled at prodigi: ord_1288410 was InProgress, not shipped
refundline

Evidence, drafted

  1. Order cs_live_unshipped01, thelinks_shop, paid 210.00 USD on 2026-10-09 stripe: checkout.session cs_live_unshipped01
  2. Customer J. Marsh, j.marsh@example.com stripe: session.customer_details
  3. Product 1 x Pebble Beach, hole 7, giclee 24x36 stripe: checkout.session cs_live_unshipped01 line_items
  4. Customer approved the design [[NO APPROVAL RECORD]] shop: session.metadata.approved_at
  5. Lab order prodigi ord_1288410, InProgress, then cancelled by refundline prodigi: GET /v4.0/orders/ord_1288410
  6. Shipped not shipped prodigi: GET /v4.0/orders/ord_1288410
  7. Tracking [[NO TRACKING]] prodigi: GET /v4.0/orders/ord_1288410 tracking

Case 3 of 3

Refund, paintedmotors

No deadline

Amount
$20.00
stripe: charge.amount_refunded
Reason
partial refund
stripe: charge
Lab
printful pending
printful: GET /orders/118377120
Lab action
no cancel: partial refund of 20.00 USD of 89.00 USD; the customer keeps the order
refundline

The record

  1. Order cs_live_partial0001, paintedmotors_shop, paid 89.00 USD on 2026-10-06 stripe: checkout.session cs_live_partial0001
  2. Customer D. Ferreira, d.ferreira@example.com stripe: session.customer_details
  3. Product 1 x Painted Motors poster, 18x24 stripe: checkout.session cs_live_partial0001 line_items
  4. Customer approved the design 2026-10-06T21:37:40Z shop: session.metadata.approved_at
  5. Refunded 20.00 USD of 89.00 USD stripe: charge ch_partial0001.amount_refunded
  6. Lab order printful 118377120, pending printful: GET /orders/118377120
  7. Shipped not shipped printful: GET /orders/118377120
  8. Tracking [[NO TRACKING]] printful: GET /orders/118377120 tracking

The red bracket is a blank. The desk will not send evidence to the bank while one remains: fill it from your own records or delete the line. A print that ships after the money went back is the expensive half of a dispute, so the lab is read before anything else.