J.P. Morgan & Chase

Import trade reconciliation

Building trust and reliability so that global finance teams could act without calling the bank.

A slow and page-heavy import reconciliation tool became one clients could trust and self-serve. I led the redesign across all three reconciliation states, partnering with Product & Engineering to reshape how dense regulatory data meets the client. The tool served importers across several markets; the highest-value book anchored the bet.

On a global bank’s treasury platform, corporate importers track and clear unfinished cross-border purchases against a country’s import regulations.

Building for corporate importers

The clients are corporate importers: companies buying goods from overseas, each on the hook to prove to the regulator that every purchase cleared the country’s import rules. They come to the tool with three jobs:

  1. See which imports are still open.
  2. Clear each record before it ages into a penalty.
  3. Pull the certificate that lets them claim their tax credits.

Above all, they need to trust the tool enough to act on it without calling the bank.

Regulator

Defines the reconciliation rules every open record is measured against.

Bank

Monitors and reports records upstream, and surfaces what is open to the client.

Importer

Resolves open records and carries the regulatory liability back upstream.

Clients care about three states across open imports

What they’re really after: proof the import is settled, and a certificate they can claim for tax credits.

01

Outward Remittance

The client has paid the supplier abroad and is waiting on proof the goods arrived.

02

Bill of Entry

The client's imported goods have cleared customs, but the payment that closes them out is still pending.

03

Acknowledgement

The client downloads a certificate confirming the record is settled, and uses it to claim tax credits.

Navigating complex, messy systems

The existing tool was built on a legacy tech stack, reflecting the business logic of the time – not the client’s jobs to be done. I held numerous whiteboarding sessions with the executive product director of global trade to identify key issues and ideate how we can transform the platform.

Current Client Journey

Outstanding Bill of Entry (BOE) Statistics - By Ageing Status

BOE Date – Invoice Value (USD)
More Than 3 Years (USD 121,241,441.06)
100% More Than 3 Years
BOE Date – Invoice Count
More Than 3 Years (275)
100% More Than 3 Years

Outstanding Outward Remittance Messages (ORM) Statistics - By Ageing Status

Payment Date – ORM Value (USD)
2 Year to 3 Years (USD 30,499.00)More Than 3 Years (USD 560,463,383.00)
100% More Than 3 Years
Payment Date – ORM Count
2 Year to 3 Years (5)More Than 3 Years (275)
100% More Than 3 Years
01

Review outstanding aging across the donut charts.

Outstanding BOE
IE 0388038047 | Nordwind GmbH
Sr.InvoiceAmountStatus
1217041USD 3,874Unpaid
298014467CHF 30,741Unpaid
398014778CHF 14,241Unpaid
4217188USD 9,610Unpaid
1–15 of 41,625123
IE 0388084146 | Brava Textiles SA
Sr.InvoiceAmountStatus
1304882EUR 12,400Unpaid
2304901EUR 8,220Unpaid
3305014EUR 6,180Unpaid
1–15 of 41,625123
02

Locate invoices in a paginated grid per entity.

Review — Outstanding BOE
IE Code0388038047
IE NameNordwind GmbH
Invoice Number98014467
Invoice AmountCHF 30,741.88
Invoice StatusUnpaid
SupplierHelvetia Components
03

Open each record on a dedicated detail page.

Legacy Outstanding BOE journey: dashboard, per-entity grid, and full-page record detail.

PROBLEM #1

Aging hidden in a donut

The only aging view sorted everything into a single bucket, “more than 3 years,” so the ring always read 100%. It couldn’t answer the one question that mattered: of everything outstanding, which records are closest to a penalty?

100%2 to 3 Years
100%More Than 3 Years
PROBLEM #2

Paginated, unsearchable data-grids

Records were split into a separate paginated grid for every importer entity (IE), each showing only a few fields and a handful of rows at a time. With no global search or filter across them, finding one record meant paging through grid after grid.

IE 0388038047| Nordwind Handels GmbH
Invoice no.BOE dateBOE status
Unpaid
Unpaid
Unpaid
Unpaid
Unpaid
1–15 of 41,625123
IE 0388084146| Brava Textiles SA
Invoice no.BOE dateBOE status
Unpaid
Unpaid
Unpaid
Unpaid
Unpaid
1–15 of 41,625123
IE 0388102293| Helvetia Metallwerk AG
Invoice no.BOE dateBOE status
Unpaid
Unpaid
Unpaid
Unpaid
Unpaid
1–15 of 41,625123
IE 0388119640| Rhône Logistique SARL
Invoice no.BOE dateBOE status
Unpaid
Unpaid
Unpaid
Unpaid
Unpaid
1–15 of 41,625123
PROBLEM #3

A full-page detour per record

Acting on a record meant leaving the list for a separate full-page screen. Hitting Back dropped you at the top; you lost your place every time.

Outstanding BOE
IE 0388038047 | Nordwind GmbH
Sr.InvoiceAmountStatus
1217041USD 3,874Unpaid
298014467CHF 30,741Unpaid
IE 0388084146 | Brava Textiles SA
Sr.InvoiceAmountStatus
1304882EUR 12,400Unpaid
2304901EUR 8,220Unpaid
3305014EUR 6,180Unpaid
4305127EUR 9,540Unpaid
5305233EUR 4,890Unpaid
Review - Outstanding BOE
IE Details
IE Code0388038047
IE NameNordwind GmbH
IE AddressBerlin, DE
Invoice Details
Invoice Number217040
Invoice StatusUnpaid
Invoice AmountUSD 3,874.58
Supplier NameNordwind Logistics

The challenge was to turn that flow into an experience clients could read, trust, and act on in one place.

Building an extensible overview page

Before designing a single screen, I mapped all three reconciliation states against one page skeleton: summary metrics and two decision-focused charts up top, a configurable data grid below, and record detail in a side drawer.

Open Import Overview
Metrics
Chart 1Aging by bucket
Chart 2Value at risk
Data grid
InvoiceAmountDateStatus
Details drawer

Applying our design system

After creating the blueprint for the UI, I collaborated with our design systems team to utilize our latest approved & tested patterns. At the same time, we were able to successfully push our design system forward and be the first team to introduce expandable record drawers – an incredibly useful pattern for complex payments workflows.

HomePaymentsReportsSettingsSearch by account, amount and more
Product navigation & global search
BACK10/12/2022, 12:23 PM ESTExportPrint
Utility bar
Page Title
Page title
Total Records156Total Count117
Metric stack
USDAllSelects & dropdowns
PendingIn ProgressCompleteIn Review
Status indicators
View Details
Action link
Filters (3)ColumnsReset AllExport
Filter toolbar
Displaying first 500 of 35,000 records
Records banner
ReferenceAmountStatus
104289074,572Pending
104289112,534In Progress
1042892231,480In Progress
10428931,937,472Pending
Data grid
58117117560
Q1Q2Q3Q4
Bar chart
Acme Industries - USD 231,480
In ProgressRecord Details
Reference1042892Date10/12/2022AmountUSD 231,480.15StatusIn ProgressTypeStandardOwnerOperationsAccount****4821CurrencyUSDCategoryPayablesChannelOnline
Party Details
Party NameACME INDUSTRIES INCParty Address100 MAIN STREET, NEW YORK
Activity
Created ByJ. SmithLast Updated10/12/2022, 11:04 AM
Download
Expandable record drawer

The design-system pieces behind the screen — approved patterns from the library, plus the expandable record drawer we contributed back.

Drawers replace pages

Record detail opens in a drawer, so the list never leaves the screen (two steps instead of five). The toolbar puts Filters, Columns, and Export within reach.

SELECTSearch by account, amount and moreFeedbackHelpUserNotificationsLog Off
HomePaymentsAdministrationReports & StatmentsLiquidityLoansFXChecksVirtual BranchMore Services
BACK10/12/2022, 12:23 PM ESTExportPrint

Outstanding Bill Of Entry

Alpina Chemie AG
AddressBahnhofstrasse 45, 8001 Zurich
IE Code0388038047
Total Outstanding BOE156
Total BOE Invoice Count117
Aging Details - Invoice ValueCHF
Value
200M
150M
100M
50M
0
58
117
117
560
0 -6 Months6-12 Months1-3 yearsOlder than 3 years
Aging Details - Invoice CountCHF
Value
200M
150M
100M
50M
0
58
117
117
560
0 -6 Months6-12 Months1-3 yearsOlder than 3 years
Displaying first 500 of 35,000 records matching your search criteria
Filters (3)ColumnsReset AllExport
Invoice NumberInvoice AmountInvoice CCYBOE DateBOE NumberBOE StatusAD CodeSupplier NameActions
447125074,572.42EUR10/04/2019617204Unpaid0510021Bergmann Logistik GmbH
447119812,533.90EUR10/03/2019617168Partially Paid0510021Van Doren Freight B.V.
447091250,000.00NOK09/28/2019617092Partially Paid0417765Nordvik Shipping AS
4470877231,480.15SEK09/28/2019617085Partially Paid0510021Lindqvist Marine AB
44706101,937,472.48EUR09/27/2019617038Unpaid0389914Delacroix Industries SA
44705548,846.07EUR09/26/2019616990Partially Paid0510021Montefiore Meccanica S.p.A.
447039166,118.25PLN09/25/2019616942Partially Paid0417765Kowalski Steelworks Sp. z o.o.
4470240145,902.60GBP09/24/2019616871Unpaid0510021Aldershot Trading Ltd
447018627,394.33EUR09/23/2019616820Partially Paid0389914Ibarra Quimica S.L.
447003193,215.77EUR09/21/2019616784Partially Paid0510021Hoffmann Prazision GmbH
446997818,660.00EUR09/20/2019616729Partially Paid0417765Mertens Chemie N.V.
4469902407,850.00DKK09/19/2019616701Unpaid0510021Sorensen Maritime ApS
44698455,120.44EUR09/18/2019616655Unpaid0389914Novak Engineering s.r.o.
446979088,036.19EUR09/17/2019616618Partially Paid0510021Laurent Freres SARL
4469713156,700.50EUR09/16/2019616572Partially Paid0417765Steinbach Polymers GmbH
446964834,266.80EUR09/14/2019616521Partially Paid0510021O'Connell Exports Ltd
446959062,481.09EUR09/13/2019616487Unpaid0389914Almeida Texteis S.A.

The redesigned Outstanding BOE overview — click View Details to open the record drawer.

Before
Go to dashboardOpen outstanding BOEReview full-page recordReturn to listrepeat per record
After
Browse open recordsOpen drawer in place

Crafting the grid

Working alongside Product, we mapped relevant fields to the grid, drawer, or export. The grid defaults to nine columns—invoice number, amount, currency, BOE date, BOE number, status, AD code, supplier, and actions. Invoice amount and BOE status stay in every row so treasury can prioritize payment without opening each record. IE code, unrealized amount, port codes, invoice charge lines, and supplier address sit in the drawer. Export carries the full field set for audit and internal reporting. Columns remain configurable.

Outstanding BOE

Displaying first 500 of 35,000 records matching your search criteria
Filters (3)ColumnsReset AllExport
Invoice NumberInvoice AmountInvoice CCYBOE DateBOE NumberBOE StatusAD CodeSupplier NameActions
447125074,572.42EUR10/04/2019617204Unpaid0510021Bergmann Logistik GmbH
447119812,533.90EUR10/03/2019617168Partially Paid0510021Van Doren Freight B.V.
447091250,000.00NOK09/28/2019617092Partially Paid0417765Nordvik Shipping AS
4470877231,480.15SEK09/28/2019617085Partially Paid0510021Lindqvist Marine AB
44706101,937,472.48EUR09/27/2019617038Unpaid0389914Delacroix Industries SA
44705548,846.07EUR09/26/2019616990Partially Paid0510021Montefiore Meccanica S.p.A.
447039166,118.25PLN09/25/2019616942Partially Paid0417765Kowalski Steelworks Sp. z o.o.
4470240145,902.60GBP09/24/2019616871Unpaid0510021Aldershot Trading Ltd
447018627,394.33EUR09/23/2019616820Partially Paid0389914Ibarra Quimica S.L.
447003193,215.77EUR09/21/2019616784Partially Paid0510021Hoffmann Prazision GmbH
446997818,660.00EUR09/20/2019616729Partially Paid0417765Mertens Chemie N.V.
4469902407,850.00DKK09/19/2019616701Unpaid0510021Sorensen Maritime ApS
44698455,120.44EUR09/18/2019616655Unpaid0389914Novak Engineering s.r.o.
446979088,036.19EUR09/17/2019616618Partially Paid0510021Laurent Freres SARL
4469713156,700.50EUR09/16/2019616572Partially Paid0417765Steinbach Polymers GmbH
446964834,266.80EUR09/14/2019616521Partially Paid0510021O'Connell Exports Ltd
446959062,481.09EUR09/13/2019616487Unpaid0389914Almeida Texteis S.A.

Default grid columns: invoice, amount, currency, dates, status, AD code, and supplier—settlement state visible in every row.

Status markers sit in every row so importers can scan the grid without opening a record. Unpaid shows as an open circle; Partially Paid as a half-filled circle.

Invoice No.AmountBOE Status
447125074,572.42Unpaid
447119812,533.90Partially Paid
447091250,000.00Partially Paid
4470877231,480.15Partially Paid
44706101,937,472.48Unpaid

Two settlement states, readable at row level—enough to spot what still needs action in a long list.

Determining the best chart

Clients needed to read penalty risk at a glance, not decode a chart. Labeled aging buckets surface the oldest, most exposed records first: a decision tool instead of decoration.

Before
100%Outstanding

One bucket, one ring at 100%: no way to see which records are closest to a penalty.

After
0–6m6–12m1–2y3y+

Finer buckets reveal the spread the donut hid, ranking the 3-year+ band (the real penalty risk) to the front.

Donut

Collapses to a single slice. No sense of spread.

Line

Implies a trend over time that isn’t there.

Stacked bar

One bar blurs which age band is worst.

Bars by age bucket

Ranks every band. The oldest, riskiest first.

Only a bar per aging bucket made the oldest, most exposed band impossible to miss.

Reflection

The redesigned experience piloted with seven enterprise importers: a global automotive manufacturer, a multinational tire maker, a major home-appliances brand, and a global networking firm among them. Feedback was positive across all three flows:

  • Less manual ops. “It’s very useful, we can pull out the details anytime we need. This will reduce dependency on emails.”
  • Presentation-ready data. The tabular graphs helped clients present internally to management.
  • The details drew praise. Clients singled out the aging visuals and the paid/unpaid status visible directly on the portal.
SELECTSearch by account, amount and moreFeedbackHelpUserNotificationsLog Off
HomePaymentsAdministrationReports & StatmentsLiquidityLoansFXChecksVirtual BranchMore Services
BACK10/12/2022, 12:23 PM ESTExportPrint

Outstanding Bill Of Entry

Alpina Chemie AG
AddressBahnhofstrasse 45, 8001 Zurich
IE Code0388038047
Total Outstanding BOE156
Total BOE Invoice Count117
Aging Details - Invoice ValueCHF
Value
200M
150M
100M
50M
0
58
117
117
560
0 -6 Months6-12 Months1-3 yearsOlder than 3 years
Aging Details - Invoice CountCHF
Value
200M
150M
100M
50M
0
58
117
117
560
0 -6 Months6-12 Months1-3 yearsOlder than 3 years
Displaying first 500 of 35,000 records matching your search criteria
Filters (3)ColumnsReset AllExport
Invoice NumberInvoice AmountInvoice CCYBOE DateBOE NumberBOE StatusAD CodeSupplier NameActions
447125074,572.42EUR10/04/2019617204Unpaid0510021Bergmann Logistik GmbHView Details
447119812,533.90EUR10/03/2019617168Partially Paid0510021Van Doren Freight B.V.View Details
447091250,000.00NOK09/28/2019617092Partially Paid0417765Nordvik Shipping ASView Details
4470877231,480.15SEK09/28/2019617085Partially Paid0510021Lindqvist Marine ABView Details
44706101,937,472.48EUR09/27/2019617038Unpaid0389914Delacroix Industries SAView Details
44705548,846.07EUR09/26/2019616990Partially Paid0510021Montefiore Meccanica S.p.A.View Details
447039166,118.25PLN09/25/2019616942Partially Paid0417765Kowalski Steelworks Sp. z o.o.View Details
4470240145,902.60GBP09/24/2019616871Unpaid0510021Aldershot Trading LtdView Details
447018627,394.33EUR09/23/2019616820Partially Paid0389914Ibarra Quimica S.L.View Details
447003193,215.77EUR09/21/2019616784Partially Paid0510021Hoffmann Prazision GmbHView Details
446997818,660.00EUR09/20/2019616729Partially Paid0417765Mertens Chemie N.V.View Details
4469902407,850.00DKK09/19/2019616701Unpaid0510021Sorensen Maritime ApSView Details
44698455,120.44EUR09/18/2019616655Unpaid0389914Novak Engineering s.r.o.View Details
446979088,036.19EUR09/17/2019616618Partially Paid0510021Laurent Freres SARLView Details
4469713156,700.50EUR09/16/2019616572Partially Paid0417765Steinbach Polymers GmbHView Details
446964834,266.80EUR09/14/2019616521Partially Paid0510021O'Connell Exports LtdView Details
446959062,481.09EUR09/13/2019616487Unpaid0389914Almeida Texteis S.A.View Details
  • Designing in ambiguity. I designed while still building my model of the domain. The work is deliberately closing that gap as you go.
  • Collaboration is essential. Working shoulder-to-shoulder with Product and the client side is how the design got the regulatory nuance right.
  • The details matter in data-intensive products. A single status icon can carry the entire experience.