XML 12 R39.htm IDEA: XBRL DOCUMENT
v2.4.1.9

Allowance for Losses on Loans - Impaired Loans Based on Loan Types (Details) (USD $) In Thousands, unless otherwise specified | 3 Months Ended | 12 Months Ended
--- | --- | ---
Dec. 31, 2014 | Sep. 30, 2014
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | $ 412,604 us-gaap_ImpairedFinancingReceivableRecordedInvestment | $ 435,185 us-gaap_ImpairedFinancingReceivableRecordedInvestment
Unpaid Principal Balance | 443,875 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance | 470,190 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
Related Allowance | 9,964 us-gaap_ImpairedFinancingReceivableRelatedAllowance | 10,587 us-gaap_ImpairedFinancingReceivableRelatedAllowance
Average Recorded Investment | 409,125 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment | 403,138 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment
Amount of related allowance included in specific reserves |  | 60 us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
Amount of related allowance included in general reserves |  | 10,527 us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
Financing Receivable, Impairment, No Related Allowance [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 62,657 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember | 46,680 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember
Unpaid Principal Balance | 85,523 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember | 73,123 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember
Average Recorded Investment | 57,876 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember | 37,474 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember
Financing Receivable, Impairment, Allowance Recorded [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 349,947 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember | 388,505 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember
Unpaid Principal Balance | 358,352 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember | 397,067 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember
Related Allowance | 9,964 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember | 10,587 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember
Average Recorded Investment | 351,249 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember | 365,664 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember
Single-Family Residential [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 328,470 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 346,364 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Unpaid Principal Balance | 335,868 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 354,497 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Related Allowance | 9,964 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 10,527 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Average Recorded Investment | 325,610 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 333,191 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Single-Family Residential [Member] | Financing Receivable, Impairment, No Related Allowance [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 24,441 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 24,044 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Unpaid Principal Balance | 26,661 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 26,628 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Average Recorded Investment | 21,251 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 16,843 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Single-Family Residential [Member] | Financing Receivable, Impairment, Allowance Recorded [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 304,029 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 322,320 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Unpaid Principal Balance | 309,207 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 327,869 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Related Allowance | 9,964 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 10,527 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Average Recorded Investment | 304,359 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember | 316,348 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialPortfolioSegmentMember
Construction - Speculative [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 7,323 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 9,159 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Unpaid Principal Balance | 8,383 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 10,159 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 60 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Average Recorded Investment | 7,546 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 9,336 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Construction - Speculative [Member] | Financing Receivable, Impairment, No Related Allowance [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 1,006 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 1,603 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Unpaid Principal Balance | 1,201 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 2,173 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Average Recorded Investment | 1,040 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 1,804 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Construction - Speculative [Member] | Financing Receivable, Impairment, Allowance Recorded [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 6,317 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 7,556 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Unpaid Principal Balance | 7,182 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 7,986 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 60 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Average Recorded Investment | 6,506 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember | 7,532 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_ConstructionSpeculativeMember
Land - Acquisition & Development [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 5,028 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 5,533 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Unpaid Principal Balance | 7,341 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 7,961 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Average Recorded Investment | 5,280 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 5,152 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Land - Acquisition & Development [Member] | Financing Receivable, Impairment, No Related Allowance [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 790 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 837 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Unpaid Principal Balance | 2,163 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 2,325 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Average Recorded Investment | 813 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 1,038 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Land - Acquisition & Development [Member] | Financing Receivable, Impairment, Allowance Recorded [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 4,238 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 4,696 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Unpaid Principal Balance | 5,178 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 5,636 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Average Recorded Investment | 4,467 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember | 4,114 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandAcquisitionAndDevelopmentMember
Land - Consumer Lot Loans [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 13,920 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 13,976 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Unpaid Principal Balance | 14,401 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 14,457 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Average Recorded Investment | 13,714 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 13,571 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Land - Consumer Lot Loans [Member] | Financing Receivable, Impairment, No Related Allowance [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 1,689 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 974 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Unpaid Principal Balance | 1,787 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 1,072 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Average Recorded Investment | 1,268 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 713 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Land - Consumer Lot Loans [Member] | Financing Receivable, Impairment, Allowance Recorded [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 12,231 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 13,002 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Unpaid Principal Balance | 12,614 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 13,385 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Average Recorded Investment | 12,446 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember | 12,858 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_LandConsumerLotLoansMember
Multi-Family [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 4,747 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 6,354 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Unpaid Principal Balance | 4,747 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 6,574 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Average Recorded Investment | 4,896 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 5,284 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Multi-Family [Member] | Financing Receivable, Impairment, No Related Allowance [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 1,255 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 1,111 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Unpaid Principal Balance | 1,255 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 1,111 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Average Recorded Investment | 1,068 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 327 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Multi-Family [Member] | Financing Receivable, Impairment, Allowance Recorded [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 3,492 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 5,243 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Unpaid Principal Balance | 3,492 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 5,463 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Average Recorded Investment | 3,828 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember | 4,957 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_MultiFamilyHousingPortfolioSegmentMember
Commercial Real Estate [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 45,261 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 47,393 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Unpaid Principal Balance | 52,248 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 55,113 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Average Recorded Investment | 44,974 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 30,292 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Commercial Real Estate [Member] | Financing Receivable, Impairment, No Related Allowance [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 27,233 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 13,234 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Unpaid Principal Balance | 33,352 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 20,085 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Average Recorded Investment | 26,902 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 11,720 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Commercial Real Estate [Member] | Financing Receivable, Impairment, Allowance Recorded [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 18,028 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 34,159 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Unpaid Principal Balance | 18,896 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 35,028 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Average Recorded Investment | 18,072 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember | 18,572 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CommercialRealEstatePortfolioSegmentMember
Commercial & Industrial [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 4,429 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember | 3,195 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember
Unpaid Principal Balance | 16,320 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember | 17,166 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember
Average Recorded Investment | 3,812 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember | 3,900 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember
Commercial & Industrial [Member] | Financing Receivable, Impairment, No Related Allowance [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 4,429 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember | 3,195 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember
Unpaid Principal Balance | 16,320 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember | 17,166 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember
Average Recorded Investment | 3,812 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember | 3,900 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_CommercialAndIndustrialLoansMember
HELOC [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 2,649 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 2,505 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
Unpaid Principal Balance | 3,434 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 3,216 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
Average Recorded Investment | 2,561 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 1,816 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
HELOC [Member] | Financing Receivable, Impairment, No Related Allowance [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 1,163 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 1,019 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
Unpaid Principal Balance | 1,948 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 1,730 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
Average Recorded Investment | 1,075 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 612 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
HELOC [Member] | Financing Receivable, Impairment, Allowance Recorded [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 1,486 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 1,486 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
Unpaid Principal Balance | 1,486 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 1,486 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
Average Recorded Investment | 1,486 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember | 1,204 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = wfsl_HomeEquityLineOfCreditMember
Consumer [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 777 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 706 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Unpaid Principal Balance | 1,133 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 1,047 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Average Recorded Investment | 732 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 596 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Consumer [Member] | Financing Receivable, Impairment, No Related Allowance [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 651 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 663 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Unpaid Principal Balance | 836 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 833 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Average Recorded Investment | 647 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 517 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Consumer [Member] | Financing Receivable, Impairment, Allowance Recorded [Member] |  |
Financing Receivable, Impaired [Line Items] |  |
Recorded Investment | 126 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 43 us-gaap_ImpairedFinancingReceivableRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Unpaid Principal Balance | 297 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 214 us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Related Allowance | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | 0 us-gaap_ImpairedFinancingReceivableRelatedAllowance / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember
Average Recorded Investment | $ 85 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember | $ 79 us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment / us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis = wfsl_FinancingReceivableImpairmentAllowanceRecordedMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ConsumerPortfolioSegmentMember

X
- Definition The valuation allowance for financing receivables that are expected to be uncollectible that were collectively evaluated for impairment. + References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher FASB -Name Accounting Standards Codification -Topic 310 -SubTopic 10 -Section 50 -Paragraph 11B -Subparagraph (g) -URI http://asc.fasb.org/extlink&oid=28368275&loc=SL6953423-111524 + Details
Name: | us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | instant

X
- Definition Amount of valuation allowance for financing receivables that are expected to be uncollectible that were individually evaluated for impairment. + References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher FASB -Name Accounting Standards Codification -Topic 310 -SubTopic 10 -Section 50 -Paragraph 11B -Subparagraph (g) -URI http://asc.fasb.org/extlink&oid=28368275&loc=SL6953423-111524 + Details
Name: | us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | instant

X
- Details
Name: | us-gaap_FinancingReceivableImpairedLineItems
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition Average amount of investment of impaired financing receivables with related allowance for credit losses and without a related allowance for credit losses. + References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher FASB -Name Accounting Standards Codification -Topic 310 -SubTopic 10 -Section 50 -Paragraph 15 -Subparagraph (c)(1) -URI http://asc.fasb.org/extlink&oid=28368275&loc=d3e5212-111524 Reference 2: http://www.xbrl.org/2003/role/presentationRef -Publisher FASB -Name Accounting Standards Codification -Topic 310 -SubTopic 10 -Section 50 -Paragraph 17 -URI http://asc.fasb.org/extlink&oid=28368275&loc=d3e5258-111524 + Details
Name: | us-gaap_ImpairedFinancingReceivableAverageRecordedInvestment
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | duration

X
- Definition Amount of investment of impaired financing receivables with related allowance for credit losses and without a related allowance for credit losses. + References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher FASB -Name Accounting Standards Codification -Topic 310 -SubTopic 10 -Section 50 -Paragraph 14A -Subparagraph (b) -URI http://asc.fasb.org/extlink&oid=28368275&loc=SL6953550-111524 + Details
Name: | us-gaap_ImpairedFinancingReceivableRecordedInvestment
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Amount of allowance for credit losses related to recorded investment. + References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher FASB -Name Accounting Standards Codification -Topic 310 -SubTopic 10 -Section 50 -Paragraph 15 -Subparagraph (a)(3) -URI http://asc.fasb.org/extlink&oid=28368275&loc=d3e5212-111524 + Details
Name: | us-gaap_ImpairedFinancingReceivableRelatedAllowance
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | instant

X
- Definition Amount of unpaid principal balance of impaired financing receivables with related allowance for credit losses and without related allowance for credit losses. + References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher FASB -Name Accounting Standards Codification -Topic 310 -SubTopic 10 -Section 50 -Paragraph 15 -Subparagraph (a)(4) -URI http://asc.fasb.org/extlink&oid=28368275&loc=d3e5212-111524 + Details
Name: | us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Details
Name: | us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis=wfsl_FinancingReceivableImpairmentAllowanceRecordedMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis=wfsl_FinancingReceivableImpairmentNoRelatedAllowanceMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis=us-gaap_CommercialRealEstatePortfolioSegmentMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis=us-gaap_ConsumerPortfolioSegmentMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis=us-gaap_ResidentialPortfolioSegmentMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis=wfsl_CommercialAndIndustrialLoansMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis=wfsl_ConstructionSpeculativeMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis=wfsl_HomeEquityLineOfCreditMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis=wfsl_LandAcquisitionAndDevelopmentMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis=wfsl_LandConsumerLotLoansMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis=wfsl_MultiFamilyHousingPortfolioSegmentMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |