All Workflows

FX Exposure Snapshot by Currency & Tenor

Open AR/AP bucketed by currency and tenor, matched to forwards, unhedged positions flagged — FX exposure snapshot automation in under 30 seconds per position date.

Live demo Upload your FX Exposure Ledger and Forwards Register — Cadel buckets, matches, and flags exceptions in seconds.

The Problem

Mid-market treasury teams managing 50–200 open foreign-currency exposures across USD, EUR, GBP, and JPY face a daily reconciliation burden that has no clean manual solution — and several predictable ways to go materially wrong.

2–4 hours of manual assembly every morning

Building a daily FX exposure snapshot manually means opening the AR ledger, AP ledger, and forward contracts register in separate spreadsheets, pivoting each by currency, bucketing rows into four tenor bands, netting receivables against payables, and cross-referencing against booked forwards — before the CFO asks for the position at 9 AM.

Stale rates and past-due rows distort the picture

Spot rates pulled the previous evening become stale by the time the snapshot reaches the CFO. Value dates that already passed remain in the ledger, overstating open exposure. Neither error surfaces automatically in a spreadsheet — both corrupt the INR-equivalent totals used for hedging decisions and hedge-documentation testing under Ind AS 109 Para 6.4.1.

Tenor mismatches go undetected until audit

Forward contract maturities are entered manually and frequently fall outside the ±5 calendar-day tolerance of the underlying exposure's value date. A forward that sits in the books as a hedge but does not actually cover the correct tenor bucket is invisible in a spreadsheet-based process — and disqualifies hedge accounting under RBI Master Direction on Risk Management and Inter-Bank Dealings (2023).

Over-hedging generates real cash leakage

When an AR exposure is reduced or settled but the corresponding forward contract is not cancelled, the company pays forward premium on notional it no longer needs to hedge — a direct and avoidable cost. An over-hedged USD bucket of USD 50,000 at typical INR/USD forward premium costs Rs 40,000–70,000 per month in premium with no economic benefit. Schedule III of the Companies Act 2013 requires disclosure of all derivative instruments; undetected over-hedges complicate that note.

Rs 1.5–3 L

The cost of a single undetected unhedged payable during a 100–200 paise USD/INR move. An unhedged EUR 15,000 AP invoice at spot 90.50 (INR 13,57,500) left uncovered for 48 hours during a volatile session carries full spot-move risk — with no contractual protection. At the audit level, ICAI SA 501 — Audit Evidence for Specific Items requires that auditors trace each forward contract to an underlying exposure with matching tenor; a gap here means the hedge accounting designation can be challenged.

Why It Matters: Regulatory Framework

FX exposure management for Indian entities sits at the intersection of four regulatory and accounting frameworks — each with specific documentation and matching requirements that a spreadsheet-driven daily snapshot cannot reliably satisfy.

Ind AS 109 · Paras 6.4.1 & 6.5.1

Hedge effectiveness documentation

A forward contract designated as a cash flow hedge must satisfy effectiveness requirements demonstrating an economic relationship between the hedging instrument and the hedged item, including aligned currency, notional, and maturity. Para 6.4.1 requires designation at inception; 6.5.1 requires prospective and retrospective effectiveness assessment. A tenor-mismatched forward cannot be held out as a qualifying hedge under this standard, collapsing any OCI reserve into P&L for the period.

RBI Master Direction · Risk Management 2023

Forward contracts traceable to underlying exposure

Under the Reserve Bank of India's Master Direction on Risk Management and Inter-Bank Dealings (updated 2023), each forward foreign exchange contract booked by a resident entity must be traceable to an underlying trade exposure — receivable, payable, or contracted obligation. Over-hedging (forward notional exceeding the underlying exposure) is explicitly prohibited and triggers regulatory scrutiny on inspection. The daily position pack this workflow produces is the primary evidence document for that traceability requirement.

FEMA Regs 2019 · Derivative Contracts

Mandatory cancellation of excess hedge cover

The Foreign Exchange Management (Foreign Exchange Derivative Contracts) Regulations, 2019, require that forward contracts whose underlying exposure is extinguished or reduced be cancelled or rolled back within the prescribed timeframe. Failure to cancel surplus forwards creates a regulatory breach independent of the accounting treatment. An automated over-hedge flag per currency-tenor bucket gives the treasury team the daily signal to initiate cancellation before the deadline.

ASC 815 · Subtopic 815-20

US GAAP hedge designation and de-designation

For US-reporting entities or Indian companies with US-listed debt, ASC 815-20 governs hedge accounting for foreign-currency cash flow hedges. Critical-terms match (currency, notional, maturity) must be demonstrated at designation and monitored throughout the hedge period. The FASB's quantitative effectiveness assessment requires that the cumulative gain or loss attributable to the hedged risk is measured at each reporting date — a calculation that depends on accurate daily position data of the kind this workflow produces.

What This Workflow Automates

Seven deterministic passes from uploaded spreadsheets to a validated currency-tenor heatmap and exception queue — in under 30 seconds on a ledger of up to 200 exposure rows and 50 forward contracts.

01

Document ingestion & classification

Accepts the FX Exposure Ledger (fx_exposure_ledger.xlsx) and the Forwards Register (forwards_register.xlsx) as uploads — either dropped together or delivered by email to the Inbox. Cadel classifies each automatically using column-header heuristics (Counterparty / Doc Ref / Value Date for the ledger; Bank / Contract No / Maturity for the register), routing each to its extraction schema without manual labelling.

02

Row-level extraction & currency validation

Every row in both sheets is parsed: counterparty, doc type (AR/AP), doc reference, ISO currency code, foreign amount, INR equivalent, value date, and spot rate from the ledger; bank, contract number, buy/sell direction, currency, notional, forward rate, maturity date, and deal date from the register. Each currency field is validated against the ISO 4217 list — a non-standard code (e.g., INR in the foreign-currency column, or a typo like EU) triggers a format-error exception and excludes the row from all tenor buckets.

03

Past-value-date rejection

Any exposure row whose value_date is earlier than today's date is rejected from all tenor buckets, a past-value-date exception is raised citing the doc reference and counterparty, and the row is excluded from the unhedged position calculation. This prevents settled-but-not-removed items from artificially inflating the open exposure total and corrupting hedging decisions for the active book.

04

Currency-tenor bucketing

Remaining valid exposure rows are assigned to one of four tenor bands based on calendar days from today to value date: 0–30 days, 31–60 days, 61–90 days, and 90+ days. Within each cell, AR amounts are recorded as positive (receivable) and AP amounts as negative (payable); the net exposure per currency × tenor cell is computed as the sum. The resulting grid becomes the skeleton of the daily FX position pack.

05

Forward matching & tenor-tolerance check

Each forward contract is matched to the exposure row sharing its Hedge Ref (which mirrors the ledger's Doc Ref), with currency agreement confirmed. The workflow then checks that the forward's maturity_date falls within ±5 calendar days of the exposure's value_date. A forward outside that window is excluded from hedge coverage for that bucket, and a tenor-mismatch exception is raised with both dates recorded for treasurer review — per Ind AS 109 Para 6.4.1 critical-terms matching.

06

Unhedged position calculation & threshold flag

For each currency × tenor cell, the unhedged net position = (net exposure) − (sum of matched forward notionals in the same direction). The unhedged foreign amount is converted to INR equivalent using the ledger spot rate. If the INR equivalent exceeds the Rs 10 lakh threshold in absolute value, a high-priority exception is raised and the heatmap cell renders red — signalling the treasurer to book a covering forward before settlement.

07

Over-hedge detection, stale-rate suppression & export

Cells where total matched forward notional exceeds the net exposure are flagged as over-hedged; the exception queue records the contract number, excess notional, and buy/sell direction. Spot rates not refreshed on the current business date trigger stale-rate exceptions, and the INR-equivalent total for the affected currency bucket is suppressed in the heatmap pending rate refresh. The final output is a colour-coded currency-tenor heatmap plus an Excel export structured as the treasurer's daily FX exposure snapshot position pack, audit-ready under Ind AS 109 and the RBI Master Direction.

Edge Cases We Simulate

Six synthetic test scenarios that exercise every failure mode seen in real-world treasury data. Each produces a deterministic outcome an auditor or controller can verify in seconds.

Clean USD Fully Hedged

ScenarioUSD AR invoice for USD 125,000 (INR 1,04,37,500 at spot 83.50) due in 45 days matched against forward FWD-Acme Bank-89231 with identical notional and maturity within ±5 days of the value date.
Expected outcomeThe 31–60 day USD bucket shows zero unhedged net position; no exception is raised and the heatmap cell renders green.

Over-Hedged USD Bucket

ScenarioUSD AR exposure drops to USD 75,000 while forward FWD-Acme Bank-89231 retains its original notional of USD 125,000, creating a surplus hedge of USD 50,000 (INR 41,75,000 at spot 83.50).
Expected outcomeWorkflow flags the 31–60 day USD cell as over-hedged; exception queue records contract FWD-Acme Bank-89231, excess notional USD 50,000, and direction (sell), prompting the treasurer to cancel or roll down the surplus.

Unhedged EUR Payable Above Threshold

ScenarioEUR 15,000 AP payable (INR 13,57,500 at spot 90.50) due in 22 days has no matching forward; the only forwards register entry carries currency USD with zero notional and contract number marked (NONE).
Expected outcomeThe 0–30 day EUR cell is flagged as unhedged; INR equivalent of Rs 13,57,500 exceeds the Rs 10 lakh threshold by Rs 3,57,500; high-priority exception recommends booking a EUR buy forward.

Stale Spot Rate

ScenarioOne or more rows in the FX Exposure Ledger carry a spot rate not refreshed on the current business date, making the computed INR equivalent unreliable for position sizing and hedging decisions.
Expected outcomeStale-rate exception raised on every affected row; INR-equivalent total for that currency bucket suppressed in the heatmap; export cell annotated with a warning pending rate refresh.

Tenor Mismatch Between Exposure and Forward

ScenarioInvoice INV-2026-00412 has a value date of 2026-05-30 (31–60 day bucket), but forward FWD-Acme Bank-89231 has a maturity date outside the ±5 calendar-day tolerance relative to that value date.
Expected outcomeTenor-mismatch exception raised; forward excluded from hedge coverage for that bucket; unhedged notional and both dates recorded in the exception queue for treasurer review.

Past Value Date on Open Exposure

ScenarioA row in the FX Exposure Ledger carries a value date earlier than today's date — indicating the item should have settled but remains open in the ledger, overstating the open FX exposure.
Expected outcomeRow rejected from all tenor buckets; past-value-date exception raised citing the doc reference and counterparty; excluded from unhedged position calculation to prevent double-counting.

Sample Documents

Two consolidated sample files for a single position date (22 June 2026) for Acme Corp Ltd. Both describe the same book of open FX transactions, keyed on a shared exposure reference, so most rows reconcile cleanly while a handful plant each exception class.

FX Exposure Ledger · 45 rows
Processed

fx_exposure_ledger.xlsx

Acme Corp Ltd · Position date 22-Jun-2026 USD, EUR, GBP, JPY exposures
Rows45open AR/AP
Clean40fully hedged
Exceptions5planted

40 rows are clean, fully-hedged positions across four currencies. Five rows plant the workflow's exception classes: one unhedged EUR payable above Rs 10 lakh, one over-hedged USD bucket, one tenor mismatch, one past value date, and one transposed (non-ISO-4217) currency code. Columns: Counterparty, AR/AP, Doc Ref, CCY, Foreign Amt, INR Equivalent, Value Date, Spot Rate.

Forwards Register · 45 contracts
Processed

forwards_register.xlsx

Acme Bank and other counterparty banks 45 live contracts matched by Hedge Ref
Contracts45live forwards
Matched44by Hedge Ref
Unmatched1target-only

Each forward's Hedge Ref points back to the ledger's Doc Ref so the pair reconciles row-for-row. One forward carries a Hedge Ref absent from the ledger, demonstrating the unmatched-forward (target-only) exception. Columns: Bank, Contract No, Hedge Ref, Buy/Sell, CCY, Notional, Fwd Rate, Maturity, Deal Date.

Sample Results

Running the workflow across the five exception-seeded file pairs produced the following concrete outputs — each traceable to specific source rows in the uploaded spreadsheets.

The clean scenario — USD AR INV-2026-00412 for USD 125,000 (INR 1,04,37,500 at spot 83.50) matched against forward FWD-Acme Bank-89231 notional USD 125,000 with maturity within 2 days of the value date — returned zero unhedged position, zero exceptions, and a green heatmap cell for the 31–60 day USD bucket. The full book of 40 clean rows produced an identical result: every currency-tenor cell green, zero exceptions, and an Excel export showing 40 matched rows each with unhedged position of 0.00.

The over-hedged scenario, where the same USD 125,000 forward was held against a reduced exposure of USD 75,000, raised one over-hedged flag on the 31–60 day USD bucket with an excess notional of USD 50,000 (INR 41,75,000 at spot 83.50). The exception queue recorded contract FWD-Acme Bank-89231 as the source instrument, with direction sell and excess notional USD 50,000 — giving the treasurer an exact actionable: cancel USD 50,000 of the outstanding forward.

The unhedged EUR scenario is the most operationally significant exception class the workflow catches. The EUR 15,000 AP payable (document reference BILL-EUR-7714, INR 13,57,500 at spot 90.50, value date today+22 days) had no matching forward contract — the forwards register carried only a USD entry with zero notional and contract number marked (NONE). The workflow correctly placed this payable in the 0–30 day EUR bucket, computed the full EUR 15,000 as unhedged, converted it to INR 13,57,500, confirmed that this exceeds the Rs 10 lakh threshold by Rs 3,57,500, and raised a high-priority unhedged exception. The stale-rate scenario suppressed the INR-equivalent total for the affected currency bucket and annotated the heatmap cell with a warning. The tenor-mismatch scenario raised a mismatch exception with both the exposure value date (2026-05-30) and forward maturity date recorded, correctly declining to count the forward as a valid hedge for that bucket. Across all five seeded scenarios, the reconciliation engine raised a total of five distinct exception records — all traceable to specific row identifiers in the source files.

Why Automation Wins Here

A treasury team previously spending 2–4 hours assembling the daily FX position pack from separate ERP exports and an Excel forward register can complete the same exercise in under 30 seconds — deterministically, with a full audit trail.

2–4 hrs → 30 s
Daily FX position pack assembly time per position date
6
Exception classes caught deterministically every run
Rs 10 L
Unhedged INR-equivalent threshold enforced per currency-tenor bucket
200 rows
Maximum ledger size processed in a single run, sub-30-second runtime

Hedge documentation trail, every day

Each run creates an immutable log recording the upload timestamp, user identity, every extracted field value, each validation rule applied, and the exception disposition. This trail is retrievable as a PDF or JSON export and satisfies the evidence requirements of ICAI SA 230 Audit Documentation for substantive procedures on treasury positions, as well as the Ind AS 109 hedge designation records required by Para 6.4.1. The output drops into the controller's month-end audit workpaper file without reformatting.

Over-hedge cost elimination

A mid-market company running 40–80 live forward contracts at any time may carry Rs 20–50 lakh of over-hedged notional at any point if the snapshot is assembled manually and infrequently. At typical INR/USD forward premiums of 70–120 paise per dollar per month, a USD 50,000 over-hedge costs Rs 35,000–60,000 per month in avoidable premium. Daily detection of over-hedged buckets gives the treasurer the signal to cancel surplus forwards before the next premium debit.

Regulatory inspection readiness

RBI inspections of hedging books require that each forward contract be traceable to an underlying exposure with matching tenor — per the Foreign Exchange Management (Foreign Exchange Derivative Contracts) Regulations, 2019. A spreadsheet-based process that runs ad hoc cannot produce the daily timestamp trail that demonstrates continuous monitoring. This workflow's immutable run log, per-run exception queue, and structured position pack provide exactly the evidence a treasury inspector or internal auditor expects to see.

Frequently Asked Questions

The questions treasury managers, controllers, and finance teams ask most often before deploying FX exposure snapshot automation.

Which documents do I upload?

Two files for the same position date — the FX Exposure Ledger (your open AR/AP foreign-currency items exported from the ERP) and the Forwards Register (your live forward contracts). Drop both into the Inbox together; Cadel classifies each automatically by reading the column headers — no labelling required.

How does the workflow match a forward to an exposure?

Every exposure row carries a Doc Ref; every forward carries the same value as its Hedge Ref. The workflow matches on that shared reference, then confirms the currency agrees and the forward maturity falls within ±5 calendar days of the exposure value date. A forward outside that tolerance is not counted as a valid hedge for the bucket and a tenor-mismatch exception is raised.

What exceptions does the workflow catch?

Six classes — an unhedged position above the Rs 10 lakh INR-equivalent threshold, an over-hedged bucket (forward notional larger than the exposure), a tenor mismatch (forward maturity outside the ±5-day window), a past value date on an open exposure, a non-ISO-4217 currency code, and a forward contract with no underlying exposure in the ledger (unmatched target-only row).

How is the Rs 10 lakh unhedged threshold applied, and does it account for partial hedges?

After netting receivables against payables within each currency-tenor bucket and deducting the notional of all valid (tenor-matched, non-expired) forward contracts, the workflow computes the net unhedged INR equivalent at the ledger spot rate. If that figure exceeds Rs 10,00,000 in absolute value, a high-priority exception is raised. Partial hedges are handled correctly — a USD 1,25,000 exposure offset by a USD 75,000 forward leaves USD 50,000 unhedged, which at spot 83.50 is INR 41,75,000, well above the threshold and therefore flagged. The threshold is a configurable workflow setting.

What is the tolerance for matching a forward maturity to an exposure value date, and can it be changed?

The default is ±5 calendar days between the forward maturity date and the exposure value date. A forward outside that window for a given exposure is not counted as a valid hedge and a tenor-mismatch exception is raised. The tolerance is a configurable parameter — controllers can tighten it to ±2 days or widen it to ±7 days per treasury policy without code changes.

How does the workflow handle multi-currency portfolios beyond USD?

It accepts any ISO 4217 currency present in the ledger and builds independent currency-tenor buckets for each. The Rs 10 lakh threshold, stale-rate checks, and over-hedge detection are applied per currency independently, with no cross-currency netting — so a mixed USD / EUR / GBP / JPY book produces a separate exception queue for each currency. The heatmap displays one row per currency and four tenor columns.

Which regulatory or accounting standards does this support?

For Indian entities, forward contracts hedging trade exposures fall under the RBI Foreign Exchange Management (Foreign Exchange Derivative Contracts) Regulations, 2019, and hedge designation disclosures follow Ind AS 109 (paras 6.4.1 and 6.5.1 on designation and effectiveness). For US-reporting entities the equivalent is ASC 815 (Subtopic 815-20 on cash flow hedge documentation). This workflow produces the daily position pack that supports those requirements; it does not itself constitute formal hedge-designation documentation.

Does it integrate with Tally, SAP, or bank treasury systems?

Today the workflow accepts the ledger and register as Excel (.xlsx) uploads — the standard export format from Tally Prime, the SAP FI-TR module, Oracle NetSuite Treasury, Kyriba, and most bank treasury portals (Acme Bank Treasury Online, and similar bank trade-finance portals). A scheduled export dropped into the Cadel inbox triggers automatic processing. Direct API connectors for SAP S/4HANA and NetSuite Treasury are on the Cadel integration roadmap.