Se as colunas de ambas as tabelas forem iguais, você pode usar um UNION
SELECT X.*
FROM ( SELECT `id`,
`userID`,
'INVOICE' AS PTYPE
`amount`,
`date`
FROM `invoices`
WHERE {$userID} = userID
UNION
SELECT `id`,
`userID`,
'PAYMENT' AS PTYPE
`amount`,
`date`
FROM `payments`
WHERE {$userID} = userID
) X
ORDER BY X.`date`
EDITAR
Leia a seção relevante do manual MySQL em UNIÕES. Existem outras maneiras de expressar isso, mas este é o meu estilo preferido - deve ficar claro para qualquer um que esteja lendo que a cláusula ORDER BY se aplica ao resultado de ambos lados da UNIÃO. Uma UNION escrita descuidadamente - mesmo com ORDER BY - ainda pode deixar o resultado final em ordem indeterminada.
O objetivo do PTYPE é que esta consulta retorne uma coluna extra chamada PTYPE, que indica se cada linha individual é uma FATURA ou um PAGAMENTO... ou seja. de qual das duas tabelas ele vem. Não é obrigatório, mas muitas vezes pode ser útil dentro de um sindicato