SELECT
StandingOrderLine.OrderNumber,
StandingOrderLine.LineNumber,
StandingOrderHeader.OrderTotal,
StandingOrderPayment.PaymentAmount
FROM dbo.StandingOrderLine INNER JOIN dbo.StandingOrderHeader
ON StandingOrderLine.CompanyID = StandingOrderHeader.CompanyID
AND StandingOrderLine.StandingOrderID = StandingOrderHeader.StandingOrderID
INNER JOIN StandingOrderPayment
ON StandingOrderHeader.CompanyID = StandingOrderPayment.CompanyID
AND StandingOrderHeader.StandingOrderID = StandingOrderPayment.StandingOrderID
WHERE StandingOrderLine.LineStatus = 'Shipped'
There, fixed that for you. Perfectly readable. The owner or schema names don't need to be repeated in the On clause or the Select column list since they are specified in the Join clause, and some line breaks help.
As for the Where clause, just like you did here, I always repeat the table name on purpose in the Where clause, even if it's a unique column name across the tables in the query, to help future programmers who might be looking at my code and not be completely familar with the tables. You could say "Where LineStatus = 'Shipped'" but I don't do that.