Comparison
CargoSharks and CargoWise
The two are not the same size of thing, and pretending otherwise would waste your afternoon. Here is what each one is for, where CargoWise is the better answer, and the questions worth putting to both of us.
01 — The question underneath
This is a question about size, not about features
Almost every honest sentence on this page follows from one fact: the two are not the same size of thing. A platform that quotes 193 countries and a system built for a Kuwaiti forwarder are not competing to be more capable — they are aimed at different operations, and the overlap between them is where you have to decide.
02 — In their words
What they say about themselves
WiseTech Global’s CargoWise calls itself “the platform that powers global logistics” — “a single intelligent system” on “a single global database” that “unifies your end-to-end supply chain”, quoting 193 countries, 30 languages and 162 currencies. It addresses forwarders, customs brokers, warehouse operators, carriers and drayage operators from the same platform.
Read from www.cargowise.com on 2026-08-25. If this has gone out of date, tell us and we will correct it.
02 — The case against us
Pick CargoWise if
This section comes before the next one on purpose. A comparison page that cannot name a reader who should buy the other product is not a comparison.
- You clear customs in a dozen countries and need the coverage that comes with a platform quoting 193 of them. This is the strongest single reason to pick CargoWise and we are not going to argue with it.
- Your customers, agents or parent company already run it and the integration is the point.
- You have the implementation budget and an internal owner for it. A platform of that scope repays configuration, and configuration takes somebody’s year.
03 — The case for us
Pick us if
Every point below is a mechanism you can check in the demo or in the source, rather than a promise.
- Arabic and English are the same build, checked for parity on every commit — 2,727 interface strings in both, and every document the system issues exists in each.
- The dinar keeps three decimal places from the database to the printed invoice. Money is decimal end to end and never a floating-point number.
- Separation between branches and entities is a row-level policy in the database, not a filter in the application — 197 of them. A query written wrong returns nothing rather than somebody else’s shipments.
- Nothing is deleted. Every change is stamped with who made it and when, by 80 audit triggers, and a superseded row is marked superseded and stays.
- You can open the whole thing right now, on seeded data, with a sign-in for you, your customer and your agent, without talking to anybody.
| The claim | Figure | How you check it |
|---|---|---|
| Transport modes | 5 | Sea FCL, sea LCL, air, road, rail and courier appear in the mode selector on any enquiry in the demo. |
| Row-level security policies | 197 | select count(*) from pg_policies where schemaname = 'public' — against any deployment, ours or yours. The policies are written by loops over the table registry, so a grep of the migration text counts the loops rather than the policies; pnpm test:db fails the build if any table lacks one. |
| Audit triggers | 80 | select count(*) from pg_trigger where tgname like '%\_audit' and not tgisinternal — attached by a loop rather than by a list, so a table added in a later migration is covered without anybody remembering to add it. |
| Interface strings, English and Arabic | 2,727 | pnpm lint runs check-messages.mjs, which fails the build if a key exists in one catalogue and not the other. |
| Decimal places on every dinar | 3 | Open any invoice in the demo. A system built for dollars and adapted shows two. |
| Minutes to check all of the above | ~10 | No sign-up and no call. That is the claim this whole page rests on. |
3 of 11 seeded currencies carry three decimals
- KWD3 dp
- BHD3 dp
- OMR3 dp
- USD2 dp
- EUR2 dp
- GBP2 dp
- AED2 dp
- QAR2 dp
- SAR2 dp
- INR2 dp
- CNY2 dp
What this system stores
KWD 12.345
All three decimals kept, from the database through to the invoice
What a system built for dollars stores
KWD 12.35—
The fils is not a rounding error, it is money in circulation: five of them on every line
On the screen
The screen the argument above is made on

04 — The questions
Ask both of us these, and compare the answers
Our answers are already written, and beside each one is what a good answer sounds like from any vendor — including us. Somebody who takes this list to another vendor’s call and gets a better answer than ours should buy from them, which is what makes it worth publishing.
| The question | Our answer | What a good answer sounds like |
|---|---|---|
| Is the Arabic a translation layer, or is it the same build? | The same build. Right-to-left is in the layout rather than added on top of it, and `pnpm lint` fails if a string exists in one language and not the other. Open the demo, press the language switch, and look at a delivery order. | A good answer names a mechanism — a parity check that fails a build, one catalogue rather than two, right-to-left in the layout. A weak one is “yes, we support Arabic” plus a screenshot. Ask to see a printed delivery order rather than a screen: that is where an added-on language shows first. |
| How many decimal places does an invoice in Kuwaiti dinars carry? | Three, everywhere, because the dinar has three. This is the single fastest way to find out whether a system was built for dollars and adapted. | “Three” should come back instantly and without conditions. Hesitation, or “it is configurable”, usually means money is a floating-point number somewhere and the decimals are a display setting — which is fine until a rounding difference lands on a reconciliation. |
| Whose database is it, and can I have a copy of my data on a Tuesday afternoon without asking? | PostgreSQL, and yes. The separation between customers is enforced by the database itself rather than by our application, which is also what makes the answer to the first half of that question boring. | Listen for a named engine and an export you can trigger yourself. “We can arrange an extract” is a different answer from “here is the button”, and the difference is what leaving costs you in three years. |
| What does it cost when volume doubles? | Ask every vendor this and ask for the answer in writing. Per-shipment and per-transaction pricing is normal in this category and is not a trick — but it is a different shape of bill from a flat one, and the difference shows up in year two rather than at signature. | Any pricing shape is defensible; a refusal to put the shape in writing is not. Ask for the figure at twice and five times today’s volume, in the contract rather than on a call — and ask us the same way. |
| Can I see it working, today, without a call? | Yes — demo.cargosharks.com, no sign-up. We think this question separates vendors more reliably than any feature question, which is why it is last. | The answer is yes or no, and both are legitimate. A demo that needs a discovery call first is a sales process rather than a fault — but it is also a reliable measure of how long a pilot will take to start. |
What you will not find on this page
A tick-and-cross grid. We know our product properly and theirs from the outside, and a grid written by one side is not a comparison — it is an argument with a table around it. Worse, it goes stale silently: every entry starts decaying the day it is published, and the person it misleads is your prospect while the person who looks foolish is you.
Ask us directly at [email protected]. You will get a written answer that cites what each vendor publishes itself, and where we do not know, you will get “we do not know”.