Sample code for 30+ languages & platforms
Delphi ActiveX

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 Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
http: TChilkatHttp;
json: TChilkatJsonObject;
resp: TChilkatHttpResponse;
sbResponseBody: TChilkatStringBuilder;
jResp: TChilkatJsonObject;
respStatusCode: Integer;
strVal: WideString;
object_created: WideString;
object_updated: WideString;
object_id: WideString;
object_owner: WideString;
object_state: WideString;
address_importer: WideString;
certify_signer: WideString;
certify: Integer;
non_delivery_option: WideString;
contents_type: WideString;
contents_explanation: WideString;
exporter_reference: WideString;
importer_reference: WideString;
invoice: WideString;
commercial_invoice: Integer;
license: WideString;
certificate: WideString;
notes: WideString;
eel_pfc: WideString;
aes_itn: WideString;
disclaimer: WideString;
incoterm: WideString;
metadata: WideString;
test: Integer;
duties_payor: WideString;
i: Integer;
count_i: Integer;

begin
success := 0;

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

http := TChilkatHttp.Create(Self);

// 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 := TChilkatJsonObject.Create(Self);
json.UpdateString('contents_type','MERCHANDISE');
json.UpdateString('non_delivery_option','RETURN');
json.UpdateBool('certify',1);
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 := TChilkatHttpResponse.Create(Self);
success := http.HttpJson('POST','https://api.goshippo.com/customs/declarations/',json.ControlInterface,'application/json',resp.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(http.LastErrorText);
    Exit;
  end;

sbResponseBody := TChilkatStringBuilder.Create(Self);
resp.GetBodySb(sbResponseBody.ControlInterface);
jResp := TChilkatJsonObject.Create(Self);
jResp.LoadSb(sbResponseBody.ControlInterface);
jResp.EmitCompact := 0;

Memo1.Lines.Add('Response Body:');
Memo1.Lines.Add(jResp.Emit());

respStatusCode := resp.StatusCode;
Memo1.Lines.Add('Response Status Code = ' + IntToStr(respStatusCode));
if (respStatusCode >= 400) then
  begin
    Memo1.Lines.Add('Response Header:');
    Memo1.Lines.Add(resp.Header);
    Memo1.Lines.Add('Failed.');
    Exit;
  end;

// 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 do
  begin
    jResp.I := i;
    strVal := jResp.StringOf('items[i]');
    i := i + 1;
  end;
end;