Sample code for 30+ languages & platforms
PHP Extension

Shippo Create Customs Declaration

See more Shippo Examples

Demonstrates how to create a customs declaration and send a POST request with the necessary information to the Customs Declarations endpoint.

Chilkat PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$success = false;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

$http = new CkHttp();

// Implements the following CURL command:

// curl https://api.goshippo.com/customs/declarations/ \
//     -H "Authorization: ShippoToken <API_TOKEN>" \
//     -H "Content-Type: application/json"  \
//     -d '{          
//           "contents_type": "MERCHANDISE",
//           "non_delivery_option": "RETURN",
//           "certify": true,
//           "certify_signer": "Simon Kreuz",
//           "incoterm": "DDU",
//           "items": [{
//                     "description": "T-shirt",
//                     "quantity": 20,
//                     "net_weight": "5",
//                     "mass_unit": "lb",
//                     "value_amount": "200",
//                     "value_currency": "USD",
//                     "tariff_number": "",
//                     "origin_country": "US"
//             }]
//     }'

// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON

// The following JSON is sent in the request body.

// {
//   "contents_type": "MERCHANDISE",
//   "non_delivery_option": "RETURN",
//   "certify": true,
//   "certify_signer": "Simon Kreuz",
//   "incoterm": "DDU",
//   "items": [
//     {
//       "description": "T-shirt",
//       "quantity": 20,
//       "net_weight": "5",
//       "mass_unit": "lb",
//       "value_amount": "200",
//       "value_currency": "USD",
//       "tariff_number": "",
//       "origin_country": "US"
//     }
//   ]
// }

$json = new CkJsonObject();
$json->UpdateString('contents_type','MERCHANDISE');
$json->UpdateString('non_delivery_option','RETURN');
$json->UpdateBool('certify',true);
$json->UpdateString('certify_signer','Simon Kreuz');
$json->UpdateString('incoterm','DDU');
$json->UpdateString('items[0].description','T-shirt');
$json->UpdateInt('items[0].quantity',20);
$json->UpdateString('items[0].net_weight','5');
$json->UpdateString('items[0].mass_unit','lb');
$json->UpdateString('items[0].value_amount','200');
$json->UpdateString('items[0].value_currency','USD');
$json->UpdateString('items[0].tariff_number','');
$json->UpdateString('items[0].origin_country','US');

$http->SetRequestHeader('Authorization','ShippoToken <API_TOKEN>');
$http->SetRequestHeader('Content-Type','application/json');

$resp = new CkHttpResponse();
$success = $http->HttpJson('POST','https://api.goshippo.com/customs/declarations/',$json,'application/json',$resp);
if ($success == false) {
    print $http->lastErrorText() . "\n";
    exit;
}

$sbResponseBody = new CkStringBuilder();
$resp->GetBodySb($sbResponseBody);
$jResp = new CkJsonObject();
$jResp->LoadSb($sbResponseBody);
$jResp->put_EmitCompact(false);

print 'Response Body:' . "\n";
print $jResp->emit() . "\n";

$respStatusCode = $resp->get_StatusCode();
print 'Response Status Code = ' . $respStatusCode . "\n";
if ($respStatusCode >= 400) {
    print 'Response Header:' . "\n";
    print $resp->header() . "\n";
    print 'Failed.' . "\n";
    exit;
}

// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)

// {
//   "object_created": "2019-07-04T16:00:29.043Z",
//   "object_updated": "2019-07-04T16:00:29.043Z",
//   "object_id": "4a1e6ab7b1ba49ed9bc6cb1a8798e0fd",
//   "object_owner": "admin@chilkatsoft.com",
//   "object_state": "VALID",
//   "address_importer": null,
//   "certify_signer": "Simon Kreuz",
//   "certify": true,
//   "items": [
//     "4096c68693364b7ea0af72fb869ee861"
//   ],
//   "non_delivery_option": "RETURN",
//   "contents_type": "MERCHANDISE",
//   "contents_explanation": "",
//   "exporter_reference": "",
//   "importer_reference": "",
//   "invoice": "",
//   "commercial_invoice": false,
//   "license": "",
//   "certificate": "",
//   "notes": "",
//   "eel_pfc": "",
//   "aes_itn": "",
//   "disclaimer": "",
//   "incoterm": "DDU",
//   "metadata": "",
//   "test": true,
//   "duties_payor": null
// }

// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON

$object_created = $jResp->stringOf('object_created');
$object_updated = $jResp->stringOf('object_updated');
$object_id = $jResp->stringOf('object_id');
$object_owner = $jResp->stringOf('object_owner');
$object_state = $jResp->stringOf('object_state');
$address_importer = $jResp->stringOf('address_importer');
$certify_signer = $jResp->stringOf('certify_signer');
$certify = $jResp->BoolOf('certify');
$non_delivery_option = $jResp->stringOf('non_delivery_option');
$contents_type = $jResp->stringOf('contents_type');
$contents_explanation = $jResp->stringOf('contents_explanation');
$exporter_reference = $jResp->stringOf('exporter_reference');
$importer_reference = $jResp->stringOf('importer_reference');
$invoice = $jResp->stringOf('invoice');
$commercial_invoice = $jResp->BoolOf('commercial_invoice');
$license = $jResp->stringOf('license');
$certificate = $jResp->stringOf('certificate');
$notes = $jResp->stringOf('notes');
$eel_pfc = $jResp->stringOf('eel_pfc');
$aes_itn = $jResp->stringOf('aes_itn');
$disclaimer = $jResp->stringOf('disclaimer');
$incoterm = $jResp->stringOf('incoterm');
$metadata = $jResp->stringOf('metadata');
$test = $jResp->BoolOf('test');
$duties_payor = $jResp->stringOf('duties_payor');
$i = 0;
$count_i = $jResp->SizeOfArray('items');
while ($i < $count_i) {
    $jResp->put_I($i);
    $strVal = $jResp->stringOf('items[i]');
    $i = $i + 1;
}


?>