Sample code for 30+ languages & platforms
React Native

Shippo Create the Shipment, Get Rates, and Purchase Label

See more Shippo Examples

Demonstrates how retrieve rates and create labels for international shipments.

Chilkat React Native Downloads

React Native
import { Http, HttpResponse, JsonObject, StringBuilder } from '@chilkat/react-native'

async function chilkatExample() {
  // This example assumes the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  const http = new Http();

  // 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"
  //     }
  //   ]
  // }

  const json = new JsonObject();
  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');

  const resp = new HttpResponse();
  try {
    await http.httpJsonAsync('POST', 'https://api.goshippo.com/customs/declarations/', json, 'application/json', resp);
  } catch {
    console.log(http.lastErrorText);
    return;
  }

  const sbResponseBody = new StringBuilder();
  resp.getBodySb(sbResponseBody);
  const jResp = new JsonObject();
  jResp.loadSb(sbResponseBody);
  jResp.emitCompact = false;

  console.log('Response Body:');
  console.log(jResp.emit());

  const respStatusCode = resp.statusCode;
  console.log(`Response Status Code = ${respStatusCode}`);
  if (respStatusCode >= 400) {
    console.log('Response Header:');
    console.log(resp.header);
    console.log('Failed.');
    return;
  }

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

  // {
  //   "object_created": "2014-07-17T00:04:06.163Z",
  //   "object_updated": "2014-07-17T00:04:06.163Z",
  //   "object_id": "89436997a794439ab47999701e60392e",
  //   "object_owner": "shippotle@goshippo.com",
  //   "status": "SUCCESS",
  //   "address_from": {
  //     "object_id": "0943ae4e373e4120a99c337e496dcce8",
  //     "validation_results": {},
  //     "is_complete": true,
  //     "company": "",
  //     "street_no": "",
  //     "name": "Mr. Hippo",
  //     "street1": "215 Clayton St.",
  //     "street2": "",
  //     "city": "San Francisco",
  //     "state": "CA",
  //     "zip": "94117",
  //     "country": "US",
  //     "phone": "+15553419393",
  //     "email": "support@goshippo.com",
  //     "is_residential": null
  //   },
  //   "address_to": {
  //     "object_id": "4c7185d353764d0985a6a7825aed8ffb",
  //     "validation_results": {},
  //     "is_complete": true,
  //     "name": "Mrs. Hippo",
  //     "street1": "200 University Ave W",
  //     "city": "Waterloo",
  //     "state": "ON",
  //     "zip": "N2L 3G1",
  //     "country": "CA",
  //     "phone": "+1 555 341 9393",
  //     "email": "support@goshippo.com",
  //     "is_residential": false
  //   },
  //   "address_return": null,
  //   "parcels": [
  //     {
  //       "object_id": "ec952343dd4843c39b42aca620471fd5",
  //       "object_created": "2013-12-01T06:24:21.121Z",
  //       "object_updated": "2013-12-01T06:24:21.121Z",
  //       "object_owner": "shippotle@goshippo.com",
  //       "template": null,
  //       "length": "5",
  //       "width": "5",
  //       "height": "5",
  //       "distance_unit": "in",
  //       "weight": "2",
  //       "mass_unit": "lb",
  //       "value_amount": null,
  //       "value_currency": null,
  //       "metadata": "",
  //       "line_items": [
  //       ],
  //       "test": true
  //     }
  //   ],
  //   "shipment_date": "2013-12-03T12:00:00Z",
  //   "extra": {
  //     "insurance": {
  //       "currency": "",
  //       "amount": ""
  //     },
  //     "reference_1": "",
  //     "reference_2": ""
  //   },
  //   "customs_declaration": "b741b99f95e841639b54272834bc478c",
  //   "rates": [
  //     {
  //       "object_created": "2014-07-17T00:04:06.263Z",
  //       "object_id": "545ab0a1a6ea4c9f9adb2512a57d6d8b",
  //       "object_owner": "shippotle@goshippo.com",
  //       "shipment": "89436997a794439ab47999701e60392e",
  //       "attributes": [
  //       ],
  //       "amount": "5.50",
  //       "currency": "USD",
  //       "amount_local": "5.50",
  //       "currency_local": "USD",
  //       "provider": "USPS",
  //       "provider_image_75": "https://cdn2.goshippo.com/providers/75/USPS.png",
  //       "provider_image_200": "https://cdn2.goshippo.com/providers/200/USPS.png",
  //       "servicelevel": {
  //         "name": "Priority Mail",
  //         "token": "usps_priority",
  //         "terms": ""
  //       },
  //       "days": 2,
  //       "arrives_by": null,
  //       "duration_terms": "Delivery in 1 to 3 business days.",
  //       "messages": [
  //       ],
  //       "carrier_account": "078870331023437cb917f5187429b093",
  //       "test": false,
  //       "zone": 1
  //     },
  //     ...
  //   ],
  //   "carrier_accounts": [
  //   ],
  //   "messages": [
  //   ],
  //   "metadata": "Customer ID 123456"
  // }

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

  let templateArg = '';
  let length = '';
  let width = '';
  let height = '';
  let distanceUnit = '';
  let weight = '';
  let massUnit = '';
  let valueAmount = '';
  let valueCurrency = '';
  let j = 0;
  let countJ = 0;
  let intVal = 0;

  let objectCreated = jResp.stringOf('object_created');
  let objectUpdated = jResp.stringOf('object_updated');
  let objectId = jResp.stringOf('object_id');
  let objectOwner = jResp.stringOf('object_owner');
  const status = jResp.stringOf('status');
  const addressFromObjectId = jResp.stringOf('address_from.object_id');
  const addressFromCompany = jResp.stringOf('address_from.company');
  const addressFromStreetNo = jResp.stringOf('address_from.street_no');
  const addressFromName = jResp.stringOf('address_from.name');
  const addressFromStreet1 = jResp.stringOf('address_from.street1');
  const addressFromStreet2 = jResp.stringOf('address_from.street2');
  const addressFromCity = jResp.stringOf('address_from.city');
  const addressFromState = jResp.stringOf('address_from.state');
  const addressFromZip = jResp.stringOf('address_from.zip');
  const addressFromCountry = jResp.stringOf('address_from.country');
  const addressFromPhone = jResp.stringOf('address_from.phone');
  const addressFromEmail = jResp.stringOf('address_from.email');
  const addressFromIsResidential = jResp.stringOf('address_from.is_residential');
  const addressToObjectId = jResp.stringOf('address_to.object_id');
  const addressToName = jResp.stringOf('address_to.name');
  const addressToStreet1 = jResp.stringOf('address_to.street1');
  const addressToCity = jResp.stringOf('address_to.city');
  const addressToState = jResp.stringOf('address_to.state');
  const addressToZip = jResp.stringOf('address_to.zip');
  const addressToCountry = jResp.stringOf('address_to.country');
  const addressToPhone = jResp.stringOf('address_to.phone');
  const addressToEmail = jResp.stringOf('address_to.email');
  const addressReturn = jResp.stringOf('address_return');
  const shipmentDate = jResp.stringOf('shipment_date');
  const extraInsuranceCurrency = jResp.stringOf('extra.insurance.currency');
  const extraInsuranceAmount = jResp.stringOf('extra.insurance.amount');
  const extraReference_1 = jResp.stringOf('extra.reference_1');
  const extraReference_2 = jResp.stringOf('extra.reference_2');
  const customsDeclaration = jResp.stringOf('customs_declaration');
  let metadata = jResp.stringOf('metadata');
  let i = 0;
  let countI = jResp.sizeOfArray('parcels');
  while (i < countI) {
    jResp.i = i;
    objectId = jResp.stringOf('parcels[i].object_id');
    objectCreated = jResp.stringOf('parcels[i].object_created');
    objectUpdated = jResp.stringOf('parcels[i].object_updated');
    objectOwner = jResp.stringOf('parcels[i].object_owner');
    templateArg = jResp.stringOf('parcels[i].template');
    length = jResp.stringOf('parcels[i].length');
    width = jResp.stringOf('parcels[i].width');
    height = jResp.stringOf('parcels[i].height');
    distanceUnit = jResp.stringOf('parcels[i].distance_unit');
    weight = jResp.stringOf('parcels[i].weight');
    massUnit = jResp.stringOf('parcels[i].mass_unit');
    valueAmount = jResp.stringOf('parcels[i].value_amount');
    valueCurrency = jResp.stringOf('parcels[i].value_currency');
    metadata = jResp.stringOf('parcels[i].metadata');
    jResp.boolOf('parcels[i].test');
    j = 0;
    countJ = jResp.sizeOfArray('parcels[i].line_items');
    while (j < countJ) {
      jResp.j = j;
      j++;
    }

    i++;
  }

  i = 0;
  countI = jResp.sizeOfArray('rates');
  while (i < countI) {
    jResp.i = i;
    intVal = jResp.intOf('rates[i]');
    j = 0;
    countJ = jResp.sizeOfArray('rates[i].attributes');
    while (j < countJ) {
      jResp.j = j;
      j++;
    }

    j = 0;
    countJ = jResp.sizeOfArray('rates[i].messages');
    while (j < countJ) {
      jResp.j = j;
      j++;
    }

    i++;
  }

  i = 0;
  countI = jResp.sizeOfArray('carrier_accounts');
  while (i < countI) {
    jResp.i = i;
    i++;
  }

  i = 0;
  countI = jResp.sizeOfArray('messages');
  while (i < countI) {
    jResp.i = i;
    i++;
  }
}