Так как на оф.сайте пример только для python`на, решил поделиться. Для тех кто не хочет потрать кучу времени на непонятную ошибку типа :
[timestamp] => 2018-01-31T08:31:48+0300
[status] => 400
[error] => Bad Request
[exception] => org.springframework.http.converter.HttpMessageNotReadableException
[message] => Bad Request
[path] => /1.0/user/backlog
$data = array("address-type-to" => "DEFAULT",
"given-name" => "Иван",
"house-to" => "37",
"index-to" => 117105,
"mail-category" => "ORDINARY",
"mail-direct" => 643,
"mail-type" => "POSTAL_PARCEL",
"mass" => 1000,
"middle-name" => "Иванович",
"order-num" => "001",
"place-to" => "г Москва",
"region-to" => "г Москва",
"street-to" => "ш Варшавское",
"surname" => "Иванов",
"tel-address" => 79459562067,
"transport-type" => "SURFACE"
);
$json = '['.json_encode($data).']';
$request = curl_init('https://otpravka-api.pochta.ru/1.0/user/backlog');
$headers[] = 'Authorization: AccessToken hsdgfbnytvstdblsudtybsuftlsuf';
$headers[] = 'X-User-Authorization: Basic jhn;dfghligulGLGb68wur423vcterterrtyrGFgfGFD';
$headers[] = 'Content-Type: application/json';
$headers[] = 'Accept: application/json;charset=UTF-8';
$headers[] = 'Content-Length: ' . strlen($json);
curl_setopt($request, CURLOPT_POSTFIELDS, $json);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_CUSTOMREQUEST, 'PUT');
$return = curl_exec($request);
$result = json_decode($return);