Есть модель Partner. Это что-то вроде физ.лица. У него может быть компания, соответственно связь с моделью Company, которой может и не быть.
Во время создания заказа в админке менеджер выбирает, формировать инвойс на физ.лицо или же на юр.лицо. Кроме того он выбирает, на какой счёт компании, или же на какой счёт владельца компании как частного лица нужно будет переводить деньги.
Я думаю, что самое адекватное в таком случае это ссылка через одно только поле recipient_of_money = ForeignKey(PaymentInfo) с конкретной информацией о плательщике.
Как у физ.лица так и у юр.лица может быть разная платёжная информация PaymentInfo
Получателем может быть не сама компания, которая выдаёт инвойс, а та, перед которой у неё долг (в т.ч. это может быть обычный Partner, т.е. физ.лицо).
Исходя из всех вышесказанных условий я сделал вывод, что самым оптимальным вариантом, это сделать в PaymentInfo одновременно ссылки на Company и на Partner через ForeignKey(blank=True). А в recipient_of_money выбирать кошелёк, на который отправлять в ручную с помощью django-autocomplete