Foreign Tax Credit Carryforward Calculator 2026 — FTC by Basket
Track FTC carryforward by basket (passive, general, GILTI). Calculate the §904 limitation per basket, usable FTC, expiring credits, and 10-year carryforward schedule.
Current Year — By Basket
| Basket | Foreign Taxes Paid | US Tax on Foreign Income (§904 Limit) | Prior Carryforward |
|---|---|---|---|
| Passive | $ | $ | $ |
| General | $ | $ | $ |
| GILTI | $ | $ | $ |
FTC Usage by Basket
| Basket | Foreign Taxes Paid | Prior Carryforward | §904 Limit | FTC Used | Excess to Carry |
|---|
How the FTC Limitation Works by Basket
Each basket is calculated independently. You cannot mix credits between baskets.
§904 Limitation (per basket) = US Tax × (Foreign Income in Basket / Total Worldwide Income)
FTC Available = Foreign Taxes Paid + Prior Carryforward
FTC Used = min(FTC Available, §904 Limitation)
Carryforward = FTC Available − FTC Used (expires after 10 years)
FTC Available = Foreign Taxes Paid + Prior Carryforward
FTC Used = min(FTC Available, §904 Limitation)
Carryforward = FTC Available − FTC Used (expires after 10 years)
Example — Passive Basket: $8,000 foreign taxes paid, $6,000 US §904 limitation, $3,000 prior carryforward
Available: $8K + $3K = $11K | Limit: $6K
FTC used: $6,000 | Carryforward: $5,000
Available: $8K + $3K = $11K | Limit: $6K
FTC used: $6,000 | Carryforward: $5,000
Extended
Multi-Basket Multi-Year FTC Ledger
10-year input per basket, FIFO ordering, stacked bar chart, expiring credit alerts
Enter 10 years of FTC and limitation per basket. Credits ordered FIFO — oldest applied first. Credits expiring at year 11 are highlighted.
Annual Inputs (Years 1-10, Year 10 = Current)
Passive basket — foreign taxes paid per year
<div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y1</label>
<input type="number" id="ext_pas_0" value="1000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y2</label>
<input type="number" id="ext_pas_1" value="1500" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y3</label>
<input type="number" id="ext_pas_2" value="2000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y4</label>
<input type="number" id="ext_pas_3" value="2500" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y5</label>
<input type="number" id="ext_pas_4" value="3000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y6</label>
<input type="number" id="ext_pas_5" value="3500" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y7</label>
<input type="number" id="ext_pas_6" value="4000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y8</label>
<input type="number" id="ext_pas_7" value="12000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y9</label>
<input type="number" id="ext_pas_8" value="13000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y10</label>
<input type="number" id="ext_pas_9" value="14000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div>
Passive basket — §904 limitation per year
<div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y1</label>
<input type="number" id="ext_paslim_0" value="800" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y2</label>
<input type="number" id="ext_paslim_1" value="800" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y3</label>
<input type="number" id="ext_paslim_2" value="800" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y4</label>
<input type="number" id="ext_paslim_3" value="800" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y5</label>
<input type="number" id="ext_paslim_4" value="5800" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y6</label>
<input type="number" id="ext_paslim_5" value="6000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y7</label>
<input type="number" id="ext_paslim_6" value="6200" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y8</label>
<input type="number" id="ext_paslim_7" value="6400" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y9</label>
<input type="number" id="ext_paslim_8" value="6600" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y10</label>
<input type="number" id="ext_paslim_9" value="6800" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div>
General basket — foreign taxes paid per year
<div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y1</label>
<input type="number" id="ext_gen_0" value="5000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y2</label>
<input type="number" id="ext_gen_1" value="7000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y3</label>
<input type="number" id="ext_gen_2" value="9000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y4</label>
<input type="number" id="ext_gen_3" value="11000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y5</label>
<input type="number" id="ext_gen_4" value="13000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y6</label>
<input type="number" id="ext_gen_5" value="15000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y7</label>
<input type="number" id="ext_gen_6" value="17000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y8</label>
<input type="number" id="ext_gen_7" value="19000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y9</label>
<input type="number" id="ext_gen_8" value="21000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y10</label>
<input type="number" id="ext_gen_9" value="23000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div>
General basket — §904 limitation per year
<div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y1</label>
<input type="number" id="ext_genlim_0" value="6000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y2</label>
<input type="number" id="ext_genlim_1" value="8000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y3</label>
<input type="number" id="ext_genlim_2" value="10000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y4</label>
<input type="number" id="ext_genlim_3" value="12000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y5</label>
<input type="number" id="ext_genlim_4" value="14000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y6</label>
<input type="number" id="ext_genlim_5" value="16000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y7</label>
<input type="number" id="ext_genlim_6" value="18000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y8</label>
<input type="number" id="ext_genlim_7" value="20000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y9</label>
<input type="number" id="ext_genlim_8" value="22000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div><div style="display:flex;flex-direction:column;align-items:center;gap:2px;">
<label style="font-size:0.7rem;color:var(--gray-500)">Y10</label>
<input type="number" id="ext_genlim_9" value="24000" min="0" step="500" style="width:70px;padding:4px 6px;border:1px solid var(--gray-200);border-radius:4px;font-size:0.8rem;"/>
</div>
FTC Usage by Basket Over 10 Years
Passive FTC Used General FTC Used Wasted/Expiring
Year-by-Year FTC Ledger — Passive Basket
| Year | Foreign Taxes | §904 Limit | FTC Used | Carryforward | Expiring (Yr 11) |
|---|
Frequently Asked Questions
What is the Foreign Tax Credit (FTC) and how does the limitation work?
The FTC allows US taxpayers to offset US tax on foreign income by taxes paid to foreign governments, preventing double taxation. However, the credit is limited to the amount of US tax attributable to foreign source income. The limitation is computed separately for each income "basket" — passive, general, and GILTI (global intangible low-taxed income). You cannot use excess from one basket to offset another.
What are the FTC income baskets?
The three main baskets are: (1) Passive basket — dividends, interest, royalties, rents, and other passive income; (2) General basket — all other foreign income not fitting elsewhere (active business income, wages from foreign employers); (3) GILTI basket — Global Intangible Low-Taxed Income under §951A (applies mainly to US shareholders of CFCs). Each basket computes its FTC limitation independently.
How long can foreign tax credits carry forward?
You can carry FTC back 1 year and forward 10 years. Within each basket, credits from the oldest year are applied first. Credits that have not been used after 10 years expire permanently — unlike the General Business Credit which carries 20 years. This makes FTC monitoring critical, especially if you are in an AMT year or have low US income from foreign sources.
What is the high-tax kickout rule for the passive basket?
Under the high-tax kickout rule, passive income subject to a foreign effective tax rate exceeding 90% of the highest US rate (generally above about 18.9% for 2026) is reclassified from the passive basket to the general basket. This prevents highly-taxed passive income from creating excess passive FTC that can't be used, by allowing it to blend with general basket income.
Do I need Form 1116 to claim the FTC?
Yes, most individuals must file Form 1116 to calculate the FTC limitation and apply carryforwards. An exception exists: if your foreign taxes are $300 or less ($600 married filing jointly) and come entirely from dividends/interest reported on a 1099, you may claim the FTC directly on Schedule 3 without Form 1116. For amounts above the de minimis threshold, Form 1116 is required — one for each basket.