1. Home
  2. Docs
  3. Guides
  4. Additional Documents
Log a Case

International Documents and Customized Documents

Generate documents, such as commercial invoices, proforma invoices, packing slips, or other documents with your shipments.

Commercial Invoice Templates

Many carriers require a Commercial Invoice template to be set up for international shipments.

To set up a CI template go to the Multi-Carrier App and click on Shipping Forms.

In Shipping Forms click on New Commercial Invoice.

In the pop-up window start filling in the fields. We generally recommend filling in the Description, Reason for Export Once ready click Save.

Once the template is set up you can either add it manually within the wizard:

Or map in from th Custom Address Source using either a static value or a field storing the ID:

Commercial Invoice Dynamic Fields

There are many fields which can be set on a Commercial Invoice dynamically from the Custom Address Source.

Open the Custom Address Source used for international shipments and scroll down to Carrier Specific Fields.

Under Carrier Specific Fields you can find pre-set templates for FedEx and UPS Sold To related fields.

There are other Commercial Invoice related fields for UPS and FedEx which can be added separately.

UPS Sold To Fields

Once the UPS: Commercial Invoice SoldTo Fields template is selected a list of fields will appear where you can map the relevant information.

DHL Express

Some of the more commonly used CI related fields are:

  • DHL Express: Terms Of Payment
  • DHL Express: Terms of Trade
  • DHL Express: Duties & Taxes Paid
  • DHL Express: Paperless Trade
  • DHL Express: Remarks
  • DHL Express: Sender/Tax ID
  • DHL Express: Recipient/Tax ID

Carrier Specific Information

Some carriers require additional information to be added or set up on the Commercial Invoice.

FedEx Signature and Letterhead

Electronic Signature and Letterhead are required by FedEx. You need the set this up on the Preference. Go to Shipping Preferences and select your FedEx preference.

Click on the arrow and select FedEx Setup Signature and Letter Head.

Upload a new image by clicking on the + sign.

Once the images are uploaded match the right image to the right function.

Bill of Lading

Bill of Lading can be generated using our BillOfLadingController.

The following template is already included and can be found under Setup > Visualforce Pages: BillOfLadingPDFTemplatePage

Once you have the template ready, go to edit the Custom Address Source, and scroll down to Enhanced Functionality Settings. Click Add, then select All Carriers: Bill of Lading Template.

NOTE: If you are using the existing template make sure to add the "zkmulti__" prefix, or if you are using a custom template the "c__" prefix.

Generate Packing Slips

Packing slips usually provide an itemized list of all package contents, including product details, quantity, used both by the sender to facilitate packing and the recipient to confirm they received everything.

Packing slips (and other documents) can be generated in two different ways: either using the Custom Address Source or by an invocable method.

Select and/or modify the template

Zenkraft has three out of the box packing slip templates which can also be customized to fit your needs, including reusing the templates for generating other custom documents. These can be found under Setup > Visualforce Pages.

  • PackingSlipPDFTemplatePage: to generate a simple list of items in PDF format
  • PackingSlipZPLTemplatePage: to generate a simple list of items in ZPL format
  • PackingSlipWithLabelTemplate: to generate a list of items including a label in PDF format

If you want to customize these templates then you need to create a new Visualforce page, copy the template text and paste it to the new page. Now you can add your customizations, however make sure to update all Multi-Carrier related fields to include the "zkmulti__" prefix.

From this:

To this:

Enable show products setting

v1.114 and above: Go to Zenkraft Settings / Bringg Settings > Other settings and enable Show Products section for domestic shipments.

v1.113 and below: Enable Boxing Algorithm - Show Products under Setup > Custom Settings > Zenkraft General Settings. From v1.108 this setting is called Show Products in Wizard.

Packing slip examples

Example of a standard (non-modified) packing slip:

Example of potential customization:

Generate Packing Slips using the Custom Address Source

Once you have the template ready go to edit the Custom Address Source and scroll down to Enhanced Functionality Settings. Click Add, then select the following items:

  • All Carriers: Packing Slips Template - add the template API name as a static value
  • All Carriers: Packing Slips Extension name - add the extension type as a static value

NOTE: If you are using the existing template make sure to add the "zkmulti__" prefix, or if you are using a custom template the "c__" prefix.

There is also an option to use conditional packing slips. For example, if you need different templates for different countries, warehouses, or carriers, you can create them one by one and then set up a formula field to decide which template to use.

In this example we are deciding the template based on the carrier:

And then mapping this field in the Custom Address Source:

With these all set, packing slips are now generated automatically when the shipment is created.

Generate Packing Slips using automation

When shipments are created using the Bulk Ship method, Shipping Console, or any other automated process the packing slips have to be generated using the invocable method.

NOTE: if you are planning to use a customized template make sure you create your version first

Setting up the flow

Create a new record triggered flow and select the Zenkraft Shipment object. The process should start when a record is created or edited. The criteria should be when the Shipment Processing Completed checkbox is set to true.
NOTE: this is the minimum requirement, you can add further criteria based on your process needs

Next add an immediate action with Apex action "Generate Custom Document (Multi Carrier)". This is an expanded version of the "Generate Document (Multi Carrier)" action.

Fill in the following values:

  • Document Type - packing_slips
  • Record ID - the record ID of the triggering Shipment
  • Template name - name of the visualforce page with the appropriate prefix
  • Template Extension - PFD or ZPL
  • Print Documents - true or false (optional)

NOTE: If you are using the existing template make sure to add the "zkmulti__" prefix, or if you are using a custom template the "c__" prefix to the name of the template.

In this example we are using a standard PDF template and setting the auto printing to true. This means that once the packing slip is generated it will be printed automatically.

Save and activate your flow.

IMPORTANT NOTE: In case you are doing both bulk shipping and regular shipping, please only use the invocable method and remove any packing slip related configuration from the custom address source.

Certificate of Origin

It is possible to generate your own certificate of origin using our PackingSlipController. However, you should to keep the following in mind:

  • You are not going to be able to generate a packing slip too
  • This document will not be automatically electronically transmitted to the carrier
  • We currently do not supply a template for this within the application so you might need to contact our support team to provide you our template or create your own

For setting up the Visualforce page and mapping the template in the Custom Address Source please refer to this guide.

Proforma Invoice

If the carrier does not already provide this option, then it is possible to generate your own certificate of origin using our PackingSlipController.
However, you should to keep the following in mind:

  • This document will not be automatically electronically transmitted to the carrier
  • We currently do not supply a template for this within the application so you might need to contact our support team to provide you our template or create your own

For setting up the Visualforce page and the generation process follow this guide.

Uploading documents during shipment creation

NOTE: this only applies if the carrier supports it. For specific details please check the carrier specific guide.

It is possible to upload your own documents during the shipment creation process. There are two ways to do this:

  • Using the Shipment Wizard
  • Using the Custom Address Source

Using the Shipment Wizard

When creating international shipments under the International Details you can find the sub-section to upload documents.

Click on the plus (+) icon to open the upload screen. In the dropdown you can find the carrier specific document options. In this example you can see the options for FedEx.

Once uploaded it should look like this:

Using the Custom Address Source

It is possible to upload a file already existing on the original record. This setup can be used by both manual shipment creation in the Shipment Wizard and automated shipment creation using our invocable method. To do this the following settings need to be configured in the Custom Address Source:

If using automated shipment creation it is also possible to set up error and success handlers using a custom checkbox field for success and a custom text field for errors.

You also need to follow the carrier specific naming convention for these files. Below you can see an example for FedEx:

When using the Shipment Wizard it will look something like this. Note that the pretag in the brackets [] has set the file type.

Uploading documents post shipment creation

NOTE: this only applies if the carrier supports it. For specific details please check the carrier specific guide.

It is possible to upload a file already existing on the original record or a file that is generated after the shipment is created using an invocable action. This configuration can be useful for customers generating their own commercial or proforma invoices.

If you are uploading an invoice that is generated after the shipment is booked it is recommended to use a scheduled path for the invocable action and delay it by a couple of minutes.

The documents need to be stored on your original object, so for example if you are shipping from an Order object, you need to store the files that you would like to upload on the Order object under the Notes and Attachments or the Files related list.

Below is an example of a flow that you can set up. In this example the process runs after the shipment is created and we are getting the necessary IDs via field reference.

  • Salesforce Object Id - specify the salesforce ID of the object that holds the files to be uploaded
  • Attachment Or File - specify File or Attachment, depending on how you store your documents
  • SoQL Condition - specify the criteria to choose the files to upload. You might have a situation where you store other files but only want to upload the PDF documents. An example value you could use is : FileType= 'PDF'
  • Tracking Number - please specify the tracking number of the shipment the document is connected to
  • Custom Address Source Id - please specify the custom address source Salesforce id that was used to create this shipment
  • Preference ID - please specify the shipping preference Salesforce ID that was used for this shipment
  • Save documents to shipment record (optional) - you can copy or move the uploaded documents to be stored on the shipment
  • Save success or error status to the original object (optional) - you can save any potential error message or a message of successful upload

Windsor Framework

The Windsor framework will come into effect from 1 May 2025. If you are shipping from Great Britain to Northern Ireland, it is essential to ensure compliance with these regulations.

For official guidance please visit this government website.

What does this mean if I book shipments via Zenkraft?

Our development team has made the necessary changes to our APIs. Some carriers may ask for a test shipment from you to ensure compliance - please always check with your carrier account manager if this is needed.
To be compliant make sure to include the following details in your /ship call or shipment creation process:

  • Product details - description, value, weight, quantity, country code, harmonized code
  • EORI Number
  • UK IMS

Steps for API users

Make sure to include the details listed above in your /ship call. For more information please visit the relevant carrier's API docs page or speak to your carrier account manager.

Product details should be included in the "customs_items" array. EORI and IMS numbers should be included under and sender and/or recipient address fields.

Steps for Multi-Carrier users

Make sure to include the following details listed above. For more information please visit the relevant carrier's docs page or speak to your carrier account manager.

1. Map the product details in the Custom Address Source under the Products section. Here is an example of filling in this section:

2. Include the EORI and IMS details under the Specific Carrier Fields section. Here is an example of the EORI and IMS mapped for DPD UK:

Troubleshooting

It is possible to generate your own certificate of origin using our PackingSlipController. However, you should to keep the following in mind:

Do I need print the commercial invoice?

If you are electronically transmitting your commercial invoice to the carrier you don not necessarily have to print it as well. If you want to save some time and paper you can turn the CI printing off under Printers Manager > Advanced Settings > Number of Copies by setting the number of CIs to 0.

Save your changes.

NOTE: Similarly, if you need to increase the number of copies you can do it here.