Я бы использовал очереди (
RabbitMQ,
Gearman,
beanstalkd)
При сабмите формы выполняем первый процесс (который "создает новую запись в таблице Заказы, меняет статус бокса в таблице Боксы и тд"). После него добавляем в очередь задачу по проверке API.
Консьюмер получает задачу, проверяет API и, если все ок, то выполняет нужные действия, в противном случае копирует задачу (увеличивая счетчик попыток на один) и через минуту посылает ее в очередь опять. В случае если счетчик уже перевалил за 5, то игнорирует.
Вместо очередей можно создать консольную команду и запускать ее в фоне.
$process = new Process("bin/console app:check-api $orderId > /dev/null 2>&1 &");
В команде уже использовать вариант, предложенный
nozzy