Code Samples for Non-Contract Shipping:  REST  |  SOAP

Non-Contract Shipping

For Canada Post general business or VentureOne™ customers

i Use Non-Contract Shipping if you are a Solutions for Small Business™ customer. If you are a commercial customer with a parcel agreement, to ensure you receive your discounted rates, use our Contract Shipping Services.

NEW: EU Customs Declaration changes in effect Sunday, October 1, 2023

There will be changes to the information required on Customs Declaration forms for all parcels being shipped to EU countries beginning October 1, 2023.

The EU Transportation and Customs authorities will now be leveraging Electronic Advanced Data (EAD), to make pre-departure decisions to determine if an item can be loaded on the aircraft for transport to the European Union.

When filling out the Customs Declaration form electronically (also known as the CN22, CN23 or CP72), the Customers must provide accurate and detailed data and ensure all mandatory fields are completed. Providing false or incomplete information, in any completed fields, including listing “N/A” or “0000000000,” may result in the parcel being rejected by foreign customs authorities.

For more information, please refer to the Frequently Asked Questions at: FAQ about new customs rules for EU shipping | Canada Post (


Read Getting Started to find out how to sign up, get your API keys and more.


For essential information common to all our web services, read the Fundamentals of Canada Post Web Services:  REST  |  SOAP

Service Summary

For Solutions for Small Business customers, use non-contract shipping services to create, manage and process shipments—including labeling and inducting parcels for delivery. No manifests are required.

Non-Contract Shipping workflow and key services are shown below.

Non-Contract Shipping Workflow

i Conduct your testing in the development environment. You will be billed for any shipments you submit through a
Create Non-Contract Shipment call in the production environment.

Non-Contract Shipping is provided through the following calls.

  1. Create Non-Contract Shipment
    REST   |    SOAP
    Used to generate and pay for a shipping label, including validation and payment authorization.
  2. Get Artifact
    REST   |    SOAP
    Used to retrieve a pdf of the shipping label created by a prior Create Non-Contract Shipment call.
  3. Get Non-Contract Shipment Receipt
    REST   |    SOAP
    Used to retrieve XML details regarding the shipment paid for in the Create Non-Contract Shipment call.
  4. Get Non-Contract Shipment Details
    REST   |    SOAP
    Used to retrieve XML details about the shipping label, including system-generated values such as the tracking number and final shipping point.
  5. Get Non-Contract Shipment Public Key Info
    REST   |    SOAP
    Used to retrieve the details on the public key including expiry date, QR code, public URL (un-authenticated URL)
  6. Get Non-Contract Shipments
    REST   |    SOAP
    This call invokes a search for previously created shipments. It is used to recover from communication failures or hardcopy print failures.
  7. Get Non-Contract Shipment
    REST   |    SOAP
    Used to retrieve the label and receipt information for a previously created shipment. Typically used after a
    Get Non-Contract Shipments call.
  8. Request Non-Contract Shipment Refund
    REST   |    SOAP
    Used to request a refund for a shipment /label that you created in error. You can only request a refund for a shipment that has not been sent and has no scan events associated with the label.