Денис Янчевский, про юрлица вы правы. А на счёт карт нет, Сбер уже бодро арестовывает переводы и требует документального подтверждения источника средств. Скоро и остальные банки подтянутся. Так что мимо кассы получится только получать налом, что сокращает рынок до радиуса километров в 100.
Vic Shóstak, добавьте отладочный вывод в fetch_pdf_resources, убедитесь, что path принимает правильное значение. Попробуйте использовать какие-нибудь другие шрифты.
PiggyPig, localStorage работает только на фронте и для идентификации никак не подойдёт. А куки передаются в заголовках запроса, устанавливаются сервером, считываться сервером и как раз для идентификации и придуманы. И никакой ajax не нужен, достаточно добавить один middleware на 5 строчек кода.
Никакого идентификатора устройства в http-запросах не передаётся, это было бы нарушение безопасности протокола. Версии браузеров очень сильно не уникальны. IP-адреса меняются или могут быть скрыты за NAT'ом.