Multiple m:m relationships LEFT JOIN giving duplicate records
If you want only one row of output for each Invoice, you need to figure out what to do with multiple customers tied to that one invoice.  (Etc.)  Here's one approach:

SELECT i.*,
       GROUP_CONCAT( 
           ( SELECT c.name FROM invoice_customers AS ic
                           JOIN customers AS c  USING(customer_id)
                           WHERE ic.invoice_id = i.invoice_id
           ) SEPARATOR ", "
                   ) AS customers
    FROM invoices AS i
    ...