That's my "wild-guessing-code" that might help you:
SELECT
c.value('TRANS_CODE[1]', 'VARCHAR(30)') AS Batches_col1
FROM @xml.nodes('//HEADER') t(c)
SELECT
c.value('CLIENT_SSN[1]', 'VARCHAR(30)') AS Clients_col1
FROM @xml.nodes('//RECORD') t(c)
SELECT
v.value ('@id[1]','VARCHAR(50)') AS Charges_col1,
y.value('local-name(.)', 'VARCHAR(50)') AS Charges_col2,
y.value('(.)', 'VARCHAR(50)') AS Charges_col3
FROM @xml.nodes('//RECORDS') t(c)
CROSS APPLY
t.c.nodes('RECORD') u(v)
CROSS APPLY
u.v.nodes('*') x(y)
WHERE y.value('local-name(.)', 'VARCHAR(50)') LIKE '%CHARGES'