Your banks' PDF confirmations, turned into valuation-ready deal terms
Confirmation Mapper collects confirmations from an inbox or a folder you choose, reads the terms from each bank's PDF, and writes them in one standard format: one row per trade, with the bank's reference. Ready for valuation, and for checking against your own bookings.
We know of no other confirmation tool that extracts the terms so trades can be valued, not just matched: amortization schedules, legs and derived terms included.
Your confirmations stay under NDA. We return them as structured trade data, for you to compare with your bookings.
Two ways OTC trades are handled today
Captured from the confirmation. The bank's confirmation arrives as a PDF. Operations reads the trade details off it, enters them into your own systems, and checks them against instructions, chats and broker messages.
Booked first, compared later. The trade is booked by hand. The bank's confirmation arrives later as a PDF, and operations compares the two line by line, then investigates any difference.
Either way, the terms sit inside a PDF until someone types them out. Each bank uses its own layout. Some terms are captured only in part, or not at all, and the gaps show up only downstream. As volume grows, so does the work.
Confirmation Mapper was first built for a hedge fund with an active OTC book that needed every trade's full terms to value it.
From PDF to valuation-ready data
Collected on your terms
From a dedicated inbox or a folder you choose, filtered by sender, subject and date. Exception lists keep out documents that aren't trades, and every ignored file is logged with the rule that excluded it.
Read, not recognised
Terms are read from the PDF's text layer, the bank's own characters, not from an image of the page. The same file gives the same output, every time.
Standardized and checked
Terms resolve into set values. FX swaps are split into two legs. Irregular amortization is kept exact. A swaption's type is derived, not read. A code it can't map is logged, never guessed.
Output you can use
Deals go to sheets by product, each row with the bank's reference, as Excel, CSV or JSON in a folder you choose. Ready for GIAnalyzer or the Gamma Impact API.
Extraction is easy. The rules are not.
An amortizing swap, as the confirmation states it and as the mapper stores it:
| Period start | Period end | Outstanding notional |
|---|---|---|
| 11/03/2026 | 30/09/2026 | 22,500,000 |
| 30/09/2026 | 29/09/2027 | 20,000,000 |
| 29/09/2027 | 28/09/2028 | 12,500,000 |
| 28/09/2028 | 28/09/2029 | 5,000,000 |
| Date | Percent of original notional repaid |
|---|---|
| 30/09/2026 | 11.11% |
| 29/09/2027 | 33.33% |
| 28/09/2028 | 33.33% |
| 28/09/2029 | 22.22% |
- Computed, not copied. The confirmation gives only the balance outstanding in each period, so what falls due on each date is the difference between one balance and the next. Where a bank does print a reduction column, it is sometimes blank or zero while the balance still falls.
- Each leg has its own schedule. They need not match: on one swap the paying leg amortizes in seven steps, the last of them 25%, while the receiving leg takes eight equal steps of 12.5%.
- A plain table of dates and percentages. GIAnalyzer's custom-amortization functions take it as it stands, across swaps, cross-currency swaps, inflation swaps and bonds; other valuation systems need little or no adjustment to accept it.
The custom-amortization functions, in the function reference →
You decide what gets read
Senders, subject lines and a date range decide what is collected. Exception lists keep out everything that isn't a trade: settlement advices, fixing notices and the like.
What comes out
FX, interest rate and inflation derivatives each get their own sheet, in Excel, CSV or JSON. Every swap appears as two legs, tied to one confirmation. Amortization schedules get a sheet of their own.
Checking against your own bookings
The hard part of matching a confirmation to your booking is getting the terms out of the PDF. Once they're in standard fields, one row per trade with the bank's reference, comparing them with your bookings is a field-by-field check, in Excel or in your own system.
Nothing happens silently
[20:52:21] Starting processing folder: ...\confirmations\all
[20:52:21] Identified bank: Bank A
[20:52:21] Parsing 4429980.pdf with Bank A FX PDF Parser
[20:52:21] Identified bank: Bank B
[20:52:21] Parsing 8117402.pdf with Bank B Swaption PDF Parser
[20:52:21] Found unexpected instrument 'FX CASH', replaced it with 'FX SPOT'
[20:52:21] WRN No parser found for bank: 2417910.pdf
[20:52:25] Finished writing sheet 'FXD1_C'. Total entries: 66
[20:52:26] Processing completed, ignored 3 files.
[20:52:26] Reason: 'Settlement Advice' in attachment content exceptions, count: 2
[20:52:26] Reason: 'Notice of Fixing of Floating Rate' in exceptions, count: 1
Excerpt from a mapping log.
- Every file, every parser. Which confirmation was read, which bank it was matched to, which product parser ran.
- Substitutions recorded. When the mapper interprets rather than reads, it says so on the line.
- Ignored files explained. Each excluded file is listed under the rule that excluded it, with a count.
- Unknown banks flagged. A confirmation it can't attribute raises a warning instead of being skipped.
Your data stays in your environment
Runs on your own machine
Locally, from Excel, on the GIAnalyzer ribbon: Map and Load Confirmations, with the results loaded into your workbook. No cloud service touches your data. Output stays in a folder you choose. No administrator rights needed.
Your mail server, your rules
Microsoft 365 through Graph, or any IMAP server. On Graph, the app registration is created in your own tenant, with your own IDs. We hold no credentials.
Credentials stay with you
On Graph: read-only mail access, granted in your own registration, with a token that exists only while Excel is open. On IMAP: the password is held in Windows Credentials. Nothing is written to a settings file.
What leaves the machine
Mail traffic to your own mail server, nothing else. No connection to Gamma Impact. Licensing works offline. You choose when to update.
What it covers
Instruments: FX spots, forwards, swaps and options; interest rate swaps, OIS, cross-currency swaps and swaptions; inflation swaps.
Confirmations: PDFs with a text layer, as banks send them by email. Scanned confirmations aren't read: there is no OCR.
New banks: added at our cost, in one to two months, depending on the confirmations and documentation the bank provides.
The terms position files leave out. Some terms never appear in a bank's position file: an amortization schedule, for one. The confirmations carry them. Position Mapper →
Licensing and trial
Licensed on its own, or with any other Gamma Impact product, by confirmation volume and the banks covered. New banks are added at our cost. No prices on the site: we quote for your volume and your banks.
Trial on request: once we've checked that your banks are supported, we send you the installation file and activation keys, and you run it on your own confirmations. It installs and activates like GIAnalyzer.
Start with your own confirmations
- Book a live demonstration, in person or on Zoom: a full run on real bank confirmations across several OTC products, with sensitive fields replaced, or on your own confirmations under NDA.
- We return them as structured trade data.
- You compare it with your own bookings.
- Any bank of yours we don't support yet is added at our cost, in one to two months.
Also: the Gamma Impact API and GIAnalyzer, to value what it maps.
