Возможно вы некорректно формируете массив байтов, либо не задаёте необходимый Content-Type в шапке запроса.
Вот пример корректного запроса:
$xmlContent = '<?xml version="1.0" encoding="UTF-8"?><message>Пример сообщения</message>';
$xmlBytes = unpack('C*', $xmlContent);
$byteString = implode(array_map("chr", $xmlBytes));
$url = 'https://edi.kontur.ru/V1/Messages/SendMessage';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/octet-stream',
...
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $byteString);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Ошибка cURL: ' . curl_error($ch);
} else {
echo 'Ответ сервера: ' . $response;
}
curl_close($ch);