Systems Analysis

Prepared for

PAHI

Shopify, Celigo and NetSuite

Review of the current architecture, the refund failure outstanding since June, and the options available before the NetSuite contract reaches term on 30 August 2027. Every finding below is checkable against the ticket, the handover pack, the DTC1078 recording or the signed order form.

Item receipt created from return authorization RMA0000098, sandbox, 1 September 2026.
01

Summary

$3,248

NetSuite per month, per the signed order form

Estimate 1460606

17

Errors on the refund flow, every one on the NetSuite side

0 on the Shopify side

$13,500

Licensed Shopify connector, never switched on

Line item 3

30 Aug 2027

Contract end. Non cancelable, fees non refundable

02

Findings

Finding 01

The recommended fix was not applied as instructed

Celigo support identified the cause on 27 August and gave a procedure. They repeated it on 28 August, more explicitly, after the first attempt went to the wrong object:

Clear the eTail Order ID on the Return Authorization record itself, not hide or remove the field on the Cash Refund form.
  • Asked for: a data change on saved records, through Lists, Mass Update, General Updates, Transactions, Return Authorization, filtering where eTail Order ID is not empty.
  • Carried out: the field cleared, then hidden, then disabled on the custom form, which is the screen layout.

Changing a form does not change records already saved through it. The 31 August update reporting the fix as tested and unsuccessful describes form level changes again. This reflects how the work was divided rather than how it was done: a NetSuite procedure was executed by the team whose scope was Celigo.

Celigo support, ticket 286960, 28 August 2026. The instruction names the Return Authorization record and the Mass Update path.

Finding 02

The error condition has changed

Through 31 August, in the ticket and on every call:

Failed to create, update/transform record because you cannot initialise cashrefund: invalid reference 35275.

In the recording made on 1 September, against a new Return Authorization:

Failed to save record because Please configure the inventory detail for this line.

Celigo reviewed the same recording and confirmed the change on 2 September. NetSuite expects an inventory assignment on the line, which occurs with bin managed, lot numbered, serialized or kit items during refund creation. They offered two routes.

  • Route A, refund without restocking: set the substitute item for bin, lot numbered and serialized items to a non inventory item. The flow clears immediately.
  • Route B, refund with restocking: process the return through the Returns flow first so the Item Receipt captures the inventory detail, then run the refund.

Route B fits PAHI. Route A would cost money quietly. Returned footwear goes back to Barrett, is received, and is sold again. Substituting a non inventory item posts the refund cleanly while the stock never returns to inventory and the cost of goods never reverses. The flow turns green. Inventory and margin drift.

The correct sequence is return, then receipt, then refund. That also settles the recurring question of whether the RMA should hang off the sales order or the cash sale. The parent record was never the issue. Order of operations was.

Run of 1 September, 15:00. Return DTC1078, refund of $190.00. Source NetSuite, code user_error, trace key 943711748161.

Finding 03

The failure occurs at the NetSuite write

  • Step 1, read refunds from Shopify: succeeds on every run.
  • Step 2, write order refunds to NetSuite: fourteen errors.
  • Step 3, write customer refunds to NetSuite: three errors.

All seventeen carry the same two labels: source NetSuite, code user_error. Shopify is behaving. Celigo is delivering. Records are refused at the point they enter NetSuite, on NetSuite's own rules.

Ownership explains the two months. Mobikasa's scope was Celigo. Dimension's scope was NetSuite. Celigo support covers the connector. The failure sits on the boundary between the three. Two months measures the handoffs between the error and someone able to act on it.

One supporting detail. The handover pack contains nine flow guides. Returns and refunds have no guide. The only flow that does not work is the only flow nobody documented.

Shopify refund to NetSuite refund (add). Seventeen errors, every one on the NetSuite side.

03

Contract

Source: NetSuite (1).pdf

Oracle NetSuite estimate 1460606
Contracting entityPico LLC, Tampa FL
Signed30 August 2024
Term36 months from signature
Ends30 August 2027
BillingNet 30, quarterly in advance
List price$236,188.80
Discount, 50.5%($119,275.34)
Contract total$116,913.46
NetSuite alone, monthly$3,248

Around $50,000 a year leaves the business until 30 August 2027 under every option in this document. That figure is fixed and no recommendation can change it.

The connector already licensed

The paid Shopify connector you mentioned appears on the order form as line item three: NetSuite Premium Plus eCommerce Connector, $13,500 over 36 months. Its description names Shopify and includes real time order sync, full product, price and quantity sync, coupon and discount sync, settlement sync, and refund sync.

Celigo was purchased separately, at roughly $7,800 a year, for the same work. The Celigo refund flow is the one that has not run since June.

Order form line item three. The connector list names Shopify. Term 36 months, $13,500.00.

There may be a sound technical reason the bundled connector was rejected. If there is, we want it, because a constraint strong enough to rule it out will probably affect any replacement too. What is not in doubt: one connector is paid for and idle, a second is paid for and failing at the job the first one advertises.

04

Options

The spend to August 2027 is committed. The open question is what PAHI holds on 30 August 2027, when the renewal lands. Four options, all viable.

OptionActionNew spendPosition at renewal
A. Repair and run to term Fix the refund flow. Move the Shopify integration onto the connector already licensed and drop Celigo. Build B2B inside NetSuite. none, saves $7,800 a year Working NetSuite, no alternative built, repricing with nothing to compare against.
B. Repair and build in parallel All of A, plus Shopify B2B, QuickBooks and the operations layer stood up alongside and proven through peak. $2,000 to $5,300 total Two working systems. Renew on merit, or leave without hurrying.
C. Repair and exit early Migrate hard, run NetSuite down to read only by spring, continue paying as the contract requires. $2,000 to $5,300, compressed Off NetSuite several months early, paid in full regardless.
D. Remediate only Clear the refund flow. Change nothing else. Return to the question in 2027. none Today's position with eleven fewer months in hand.

Assessment

Recommendation

Option B, for three reasons.

Option A is a defensible decision. If appetite for change is low this year, Option A done well beats Option B done badly. The first six weeks are identical either way, so the choice does not have to be made this week.

05

Plan

Eleven months, working back from the contract boundary. Two fixed points shape it: nothing cuts over during peak season, and the ledger moves at a fiscal year boundary.

PhaseWhenWork
Build Sep to Oct 2026 Shopify B2B built and piloted on three to five wholesale accounts. QuickBooks and A2X stood up alongside NetSuite, chart of accounts mapped. Prediko tested against a real inbound container. Barrett integration path settled. Refund flow cleared. Requirements and the missing returns documentation written as the work happens. Nothing live is touched.
Prove Nov to Dec 2026 No cutovers during peak. Both ledgers run in parallel and reconcile weekly, turning the busiest quarter into a free load test. Wholesale continues migrating, having no Black Friday.
Ledger cutover January 2027 FY26 closes in NetSuite. FY27 opens in QuickBooks. One clean boundary, no split year, no dual reporting.
Commerce cutover Feb to Apr 2027 Product master, inventory and the 3PL move across. NetSuite goes read only. Celigo switches off here, since until the ledger has moved Kristin still needs data flowing into it.
Buffer and exit May to Jul 2027 A full quarter of the new stack running alone. Historical data archived and accessible. Notice served inside the renewal window.
Contract ends 30 August 2027 Nothing renews.

The refund flow is fixed in the first fortnight under every option. It is NetSuite configuration, it costs nothing, and it ends the manual exchange work now. Nothing about it waits on the larger decision.

06

Replacement systems

NetSuite currently performs eleven distinct jobs. All eleven are accounted for.

FunctionReplacementMonthly
Direct to consumer storefrontShopify, already in placeincluded
Wholesale orders, catalogues, net terms, PO numbersShopify B2B, native on every paid plan since April$0
Product master and matrix itemsShopifyincluded
Multi location inventoryShopifyincluded
Returns and exchangesLoop, already in placeunchanged
Factory purchase orders, lead times, reorder planningPrediko$49 to $199
General ledger, statements, closeQuickBooks Online$100 to $235
Shopify settlements into the ledgerA2X$29 to $49
Accounts payable, including overseas factoriesMelio, no platform fee$0
Wholesale receivables and collectionsShopify B2B terms into QuickBooksincluded
Sales tax calculationAvalara, already connected to Shopifyunchanged
Running cost$178 to $483
TodayMonthlyReplacementMonthly
NetSuite, per the order form$3,248Shopify B2B$0
Celigo connector$650Prediko$49 to $199
Avalara$335+QuickBooks Online$100 to $235
NetSuite consultingnot estimatedA2X$29 to $49
Annual$50,800+Annual$2,100 to $5,800

The same work, for roughly one tenth of the cost. The saving begins at contract end on 30 August 2027, and the work to be ready for it begins now.

Requirements not met by standard applications

Three ways to close the landed cost gap, in the order we would try them:

  1. Prediko, if its purchase order costing is sufficient. Tested against a real inbound container before it is recommended, not against a demo.
  2. An operations layer, if Prediko falls short. Cin7 Core at $349 a month adds full purchasing, landed cost, warehouse and 3PL handling. Roughly a sixth of NetSuite, and another system to run.
  3. A purpose built application, if neither fits. A small Shopify app covering landed cost and factory purchase orders, and nothing else. Source control, tests, reviewed changes, documentation alongside. Owned by PAHI and exportable.

The third option is earned rather than assumed. Building software you did not need costs more than buying software you did not need.

07

Outstanding information