XML 265 R221.htm IDEA: XBRL DOCUMENT
v3.22.0.1

DERIVATIVES - Foreign Currency Derivatives (Details) € in Millions, $ in Millions | 12 Months Ended |  |
--- | --- | --- | ---
Dec. 31, 2021 USD ($) | Dec. 31, 2021 EUR (€) | Dec. 31, 2020 USD ($)
Foreign currency derivatives | Cash Flow Hedges of Existing Debt |  |  |
Derivative [Line Items] |  |  |
Pay Notional | $ 2,717 |  |
Receive Notional | € |  | € 2,350 |
Fair Value Gain (Loss) December 31, 2021 | (78) |  |
Southern Company | Foreign currency derivatives | Cash Flow Hedges of Existing Debt |  |  |
Derivative [Line Items] |  |  |
Pay Notional | $ 1,476 |  |
Pay Rate | 3.39% |  |
Receive Notional | € |  | 1,250 |
Receive Rate | 1.88% |  |
Fair Value Gain (Loss) December 31, 2021 | $ (63) |  |
Southern Power |  |  |
Derivative [Line Items] |  |  |
Receive Notional | 1,100 |  |
Fair Value Gain (Loss) December 31, 2021 | 5 |  | $ 109
Southern Power | Foreign currency derivatives | Cash Flow Hedges of Existing Debt |  |  |
Derivative [Line Items] |  |  |
Pay Notional | 1,241 |  |
Receive Notional | € |  | 1,100 |
Fair Value Gain (Loss) December 31, 2021 | (15) |  |
Southern Power | Foreign currency derivatives | June 2022 | Cash Flow Hedges of Existing Debt |  |  |
Derivative [Line Items] |  |  |
Pay Notional | $ 677 |  |
Pay Rate | 2.95% |  |
Receive Notional | € |  | 600 |
Receive Rate | 1.00% |  |
Fair Value Gain (Loss) December 31, 2021 | $ (5) |  |
Southern Power | Foreign currency derivatives | June 2026 | Cash Flow Hedges of Existing Debt |  |  |
Derivative [Line Items] |  |  |
Pay Notional | $ 564 |  |
Pay Rate | 3.78% |  |
Receive Notional | € |  | € 500 |
Receive Rate | 1.85% |  |
Fair Value Gain (Loss) December 31, 2021 | $ (10) |  |

X
- Definition Derivative Notional Amount, Pay + References No definition available. + Details
Name: | so_DerivativeNotionalAmountPay
Namespace Prefix: | so_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Derivative Notional Amount, Receive + References No definition available. + Details
Name: | so_DerivativeNotionalAmountReceive
Namespace Prefix: | so_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Fair value gain (Loss). + References No definition available. + Details
Name: | so_FairValueGainLoss
Namespace Prefix: | so_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | instant

X
- Definition Notional Amount Of Foreign Currency Derivatives, Pay Rate + References No definition available. + Details
Name: | so_NotionalAmountOfForeignCurrencyDerivativesPayRate
Namespace Prefix: | so_
Data Type: | dtr-types:percentItemType
Balance Type: | na
Period Type: | duration

X
- Definition Notional Amount Of Foreign Currency Derivatives, Receive Rate + References No definition available. + Details
Name: | so_NotionalAmountOfForeignCurrencyDerivativesReceiveRate
Namespace Prefix: | so_
Data Type: | dtr-types:percentItemType
Balance Type: | na
Period Type: | duration

X
- Definition Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table. + References No definition available. + Details
Name: | us-gaap_DerivativeLineItems
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Details
Name: | us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeContractMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis=so_CashFlowHedgesOfExistingDebtMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | dei_LegalEntityAxis=so_SouthernCompanyMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | dei_LegalEntityAxis=so_SouthernPowerMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | so_HedgingMaturityDateAxis=so_HedgingMaturityDateOneMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | so_HedgingMaturityDateAxis=so_HedgingMaturityDateTwoMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |