Specifying Payors

Bill multiple payor accounts for the cost of different components of shipping a package.

About specifying payors

The Shipium system supports billing multiple payor accounts separately for costs associated with a shipment for carriers including DHL, FedEx, Midland, Purolator E-Ship, UPS, and USPS. Different carriers support different payor types and require varying data for each payor type. This document provides guidance for the most common carriers used by Shipium customers. Details on payor account credential information are included in the request fields table below, and carrier-specific information follows.

Specify payor details in calls to Shipium's APIs

If your organization needs to specify multiple payors using different billing account information in calls to Shipium's APIs, you can include the payorAccounts object in the shipmentParameters or multiParcelShipmentParameters of your call. Requirements differ by carrier and are included in the carrier sections that follow: DHL, FedEx, Midland, OnTrac, Purolator E-Ship, UPS, and USPS.

👉

Account information included via API call in payorAccounts will override account credentials configured in the Shipium Console.

You should include one payorAccounts entry for each unique payor account and carrier across which you want to split shipping costs and/or duties and taxes.

Payor request details

The following tables list all required, conditional, and optional fields for payor accounts. Conditional fields dependent upon carrier requirements are explained further in the carrier-specific guidance that follows. The request fields listed here relate to payor accounts only; other request fields are described in API-specific documentation.

Required fields

Request field

Details

payorAccounts

Type: Array
Description: An array of payor account information, representing the list of payor accounts associated with the shipment. Each account corresponds to a specific carrier and is used to determine the entity responsible for shipping charges when billing terms require a designated payor. If a selected carrier does not have a corresponding payor account in this list, standard billing configurations will apply.

payorAccounts.accountType

Type: String (enumeration)
Values: collect, consignee, recipient, sender, third_party
Description: The type of account to use for billing

payorAccounts.billForShippingCost

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for the cost of shipping the package; the value should be false when designating tax ID (EIN) for a payor type (typeCode).

payorAccounts.billDutiesAndTaxes

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for duties and taxes; the value should be false when designating tax ID (EIN) for a payor type (typeCode).

Conditional fields

Request field

Details

payorAccounts.carrierId

Type: String (enumeration)
Example: ups Condition: Required for third_party and collect account types; optional for sender, recipient, and consignee account types
Description: The carrier ID as represented in the Shipium platform; you can find carrier ID values in Supported Carriers.

payorAccounts.payorAccountCredentials .accountNumber

Type: String
Condition: Dependent upon carrier
Description: Your organization's carrier account number used to authenticate and connect to the carrier's APIs

payorAccounts.payorAccountCredentials .accountCountryCode

Type: String
Condition: Dependent upon carrier
Description: The ISO 3166-1 country code associated with your organization's carrier account

payorAccounts.payorAccountCredentials .accountPostalCode

Type: String
Condition: Dependent upon carrier
Description: A country-code-appropriate postal code associated with your organization's carrier account

payorAccounts.payorAccountAddress

Type: Structure
Condition: Required for some carriers like Midland for third_party account type
Description: The payor account address information

payorAccounts.payorAccountAddress .countryCode

Type: String
Condition: Dependent upon carrier
Description: The ISO 3166-1 country code for the shipment payor's address

payorAccounts.payorAccountAddress .postalCode

Type: String
Condition: Dependent upon carrier
Description: A country-code-appropriate postal code for the shipment payor's address

payorAccounts.registrationInformation .registrationNumber

Type: String
Example: 12344509
Condition: Required for the consignee account type; optional for other account types
Description: The registration number for the payor account

Optional fields

Request field

Details

payorAccounts.payorAccountAddress.name

Type: String
Description: The name of the shipment payor

payorAccounts.payorAccountAddress.phoneNumber

Type: String
Description: The phone number of the shipment payor

payorAccounts.payorAccountAddress .phoneNumberCountryCode

Type: String
Description: The phone number country code of the shipment payor

payorAccounts.payorAccountAddress.emailAddress

Type: String
Description: The email address of the shipment payor

payorAccounts.payorAccountAddress.company

Type: String
Description: The company associated with the shipment payor

payorAccounts.payorAccountAddress.street1

Type: String
Description: The first address line for the shipment payor

payorAccounts.payorAccountAddress.street2

Type: String
Description: The second address line for the shipment payor

payorAccounts.payorAccountAddress.city

Type: String
Description: The city of the address for the shipment payor

payorAccounts.payorAccountAddress.state

Type: String
Description: The 2-letter postal abbreviation of the state for the shipment payor's address

payorAccounts.payorAccountAddress.addressType

Type: String (enumeration)
Values: commercial, residential
Description: The type of location for the shipment payor's address

payorAccounts.payorAccountAddress .addressLineComponents

Type: Array
Description: The address line components for the payor account address, used for some international shipments; this optional address object is not included in the example JSON request. Preferred for Mexican addresses. You can find out more about Mexican addresses in Non-U.S. Address Formats.

payorAccounts.registrationInformation.typeCode

Type: String (enumeration)
Values: EIN (Employee Identification Number), EOR (Economic Operators Registration and Identification), GST (Goods and Services Tax), VAT (Value Added Tax)
Description: The registration number type code for the payor account

payorAccounts.registrationInformation .issuerCountryCode

Type: String
Description: The ISO 3166-1 country code for the payor account

Carrier-specific information for payors

DHL payor information

Payor typeDHL supports payor typeDHL requires payor account credentials
senderYesYes
third_partyYesYes
consigneeYesYes
recipientYesYes

DHL required fields

The following fields must be included for DHL for any of the supported payor types: sender, third party, consignee, or recipient.

Request field

Details

payorAccounts.accountType

Type: String (enumeration)
Values: consignee, recipient, sender, third_party
Description: The type of account to use for billing

payorAccounts.carrierId

Type: String (enumeration)
Example: dhl
Condition: Required for third_party account type
Description: The carrier ID as represented in the Shipium platform; you can find carrier ID values in Supported Carriers.

payorAccounts.payorAccountCredentials .accountNumber

Type: String
Description: Your organization's carrier account number used to authenticate and connect to the carrier's APIs

payorAccounts.payorAccountAddress.name

Type: String
Description: The name of the shipment payor

payorAccounts.payorAccountAddress.company

Type: String
Description: The company associated with the shipment payor

payorAccounts.payorAccountAddress.phoneNumber

Type: String
Description: The phone number of the shipment payor

payorAccounts.payorAccountAddress.street1

Type: String
Description: The first address line for the shipment payor

payorAccounts.payorAccountAddress.street2

Type: String
Description: The second address line for the shipment payor

payorAccounts.payorAccountAddress.city

Type: String
Description: The city of the address for the shipment payor

payorAccounts.payorAccountAddress.postalCode

Type: String
Description: A country-code-appropriate postal code for the shipment payor's address

payorAccounts.payorAccountAddress.countryCode

Type: String
Description: The ISO 3166-1 country code for the shipment payor's address

payorAccounts.registrationInformation .registrationNumber

Type: String
Example: 12344509
Condition: Required for the consignee account type but optional for other account types Description: The registration number for the payor account

payorAccounts.billForShippingCost

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for the cost of shipping the package; the value should be false when designating tax ID (EIN) for a payor type (typeCode).

payorAccounts.billDutiesAndTaxes

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for duties and taxes; the value should be false when designating tax ID (EIN) for a payor type (typeCode).

Sample request for consignee billing for DHL

This example shows the required payorAccounts information in JSON to be included via API call for consignee billing for DHL.

{
  ....
  "shipmentParameters": {
    "payorAccounts": [
      {
        "accountType": "consignee",
        "payorAccountCredentials": {
          "accountNumber": "123456789"
        },
  "payorAccountAddress": {
          "name": "Wile E. Coyote",
          "company": "ACME",
          "phoneNumber": "888-555-1234",
          "street1": "123 Main St.",
          "street2": "Suite 42",
          "city": "Albuquerque",
          "postalCode": "87121",
          "countryCode": "US"
  },
"registrationInformation": {
  "registrationNumber": "12344509"
},
        "billForShippingCost": false,
        "billDutiesAndTaxes": false
      }
    ]
  },
  ....
}

FedEx payor information

Payor typeFedEx supports payor typeFedEx requires payor account credentials
senderYesYes
third_partyYesYes
consigneeNoNot Applicable
collectYes ✳️Yes
recipientYesYes

✳️ FedEx supports collect on delivery billing to a consignee for intra-Canada shipments via its FedEx Ground service method.

FedEx required fields

The following fields must be included for FedEx for any of the supported payor types: sender, third party, or recipient.

Request field

Details

payorAccounts.accountType

Type: String (enumeration)
Values: recipient, sender, third_party, collect
Description: The type of account to use for billing

payorAccounts.carrierId

Type: String (enumeration)
Example: fedex
Condition: Required for third_party and collect account types
Description: The carrier ID as represented in the Shipium platform; you can find carrier ID values in Supported Carriers.

payorAccounts.payorAccountCredentials .accountNumber

Type: String
Description: Your organization's carrier account number used to authenticate and connect to the carrier's APIs

payorAccounts.payorAccountCredentials .accountCountryCode

Type: String
Description: The ISO 3166-1 country code associated with your organization's carrier account

payorAccounts.payorAccountAddress.phoneNumber

Type: String
Description: The phone number of the shipment payor

payorAccounts.payorAccountAddress.street1

Type: String
Description: The first address line for the shipment payor

payorAccounts.payorAccountAddress.street2

Type: String
Description: The second address line for the shipment payor

payorAccounts.payorAccountAddress.city

Type: String
Description: The city of the address for the shipment payor

payorAccounts.payorAccountAddress.countryCode

Type: String
Description: The ISO 3166-1 country code for the shipment payor's address

payorAccounts.billForShippingCost

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for the cost of shipping the package.

payorAccounts.billDutiesAndTaxes

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for duties and taxes.

Sample request for recipient billing for FedEx

This example shows the required payorAccounts information in JSON to be included via API call for recipient billing for FedEx.

{
  ....
  "shipmentParameters": {
    "payorAccounts": [
      {
        "accountType": "recipient",
        "carrierId": "fedex",
        "payorAccountCredentials": {
          "accountNumber": "123456789",
          "accountCountryCode": "US"
        },
        "payorAccountAddress": {
          "phoneNumber": "8312776565",
          "street1": "123 Main St.",
          "street2": "Suite 42",
          "city": "Albuquerque",
          "countryCode": "US"
        },
        "billForShippingCost": true,
        "billDutiesAndTaxes": true
      }
    ]
  },
  ....
}

Midland payor information

Payor typeMidland supports payor typeMidland requires payor account credentials
senderYesNo
third_partyYesYes ✳️
consigneeNoNot Applicable
recipientNoNot Applicable
collectYesYes

✳️ Midland does not require an account number for third party billing but does require third party address and contact information.

Midland required fields

The following required fields must be included for Midland for any of the supported payor types: sender, third party, or collect. The conditional fields are payor type dependent.

Required fields

Request field

Details

payorAccounts.accountType

Type: String (enumeration)
Values: sender, third_party, collect
Description: The type of account to use for billing

payorAccounts.billForShippingCost

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for the cost of shipping the package.

payorAccounts.billDutiesAndTaxes

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for duties and taxes.

Conditional fields

Field

Details

payorAccounts.carrierId

Type: String (enumeration)
Example: fedex
Condition: Required for third_party and collect payor types
Description: The carrier ID as represented in the Shipium platform; you can find carrier ID values in Supported Carriers.

payorAccounts.payorAccountCredentials .accountCountryCode

Type: String
Condition: Required for third_party payor type
Description: The ISO 3166-1 country code associated with your organization's carrier account

payorAccounts.payorAccountCredentials .accountPostalCode

Type: String
Condition: Required for third_party payor type Description: A country-code-appropriate postal code associated with your organization's carrier account

payorAccounts.payorAccountAddress.name

Type: String
Condition: Required for third_party payor type Description: The name of the shipment payor

payorAccounts.payorAccountAddress.phoneNumber

Type: String
Condition: Required for third_party payor type Description: The phone number of the shipment payor

payorAccounts.payorAccountAddress .phoneNumberCountryCode

Type: String
Condition: Required for third_party payor type Description: The phone number country code of the shipment payor

payorAccounts.payorAccountAddress.emailAddress

Type: String
Condition: Required for third_party payor type Description: The email address of the shipment payor

payorAccounts.payorAccountAddress.company

Type: String
Condition: Required for third_party payor type Description: The company associated with the shipment payor

payorAccounts.payorAccountAddress.street1

Type: String
Condition: Required for third_party payor type Description: The first address line for the shipment payor

payorAccounts.payorAccountAddress.street2

Type: String
Condition: Required for third_party payor type Description: The second address line for the shipment payor

payorAccounts.payorAccountAddress.city

Type: String
Condition: Required for third_party payor type
Description: The city of the address for the shipment payor

payorAccounts.payorAccountAddress.state

Type: String
Condition: Required for third_party payor type Description: The 2-letter postal abbreviation of the state for the shipment payor's address

payorAccounts.payorAccountAddress.countryCode

Type: String
Condition: Required for third_party payor type
Description: The ISO 3166-1 country code for the shipment payor's address

payorAccounts.payorAccountAddress.postalCode

Type: String
Condition: Required for third_party payor type
Description: A country-code-appropriate postal code for the shipment payor's address

Sample request for sender billing for Midland

This example shows the required payorAccounts information in JSON to be included via API call for sender billing for Midland.

{
    "shipmentParameters": {
        "payorAccounts": [
            {
                "accountType": "sender",
                "billForShippingCost": true,
                "billDutiesAndTaxes": true
            }
        ]
    }
}

OnTrac payor information

Payor typeOnTrac supports payor typeOnTrac requires payor account credentials
senderYesYes
third_partyYesYes
consigneeYesYes
recipientYesYes

OnTrac required fields

The following required fields must be included for OnTrac for any of the supported payor types: sender, third party, consignee, or recipient. The conditional fields are payor type dependent.

Required fields

Request field

Details

payorAccounts.accountType

Type: String (enumeration)
Values: consignee, recipient, sender, third_party
Description: The type of account to use for billing

payorAccounts.payorAccountCredentials .accountNumber

Type: String
Description: Your organization's carrier account number used to authenticate and connect to the carrier's APIs

payorAccounts.billForShippingCost

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for the cost of shipping the package.

payorAccounts.billDutiesAndTaxes

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for duties and taxes.

Conditional fields

payorAccounts.carrierId

Type: String (enumeration)
Example: ontrac
Condition: Required for third_party account type
Description: The carrier ID as represented in the Shipium platform; you can find carrier ID values in Supported Carriers.

Sample request for third party billing for OnTrac

This example shows the required payorAccounts information in JSON to be included via API call for third party billing for OnTrac.

{
  ....
  "shipmentParameters": {
    "payorAccounts": [
     {
         "accountType": "third_party",
         "carrierId": "ontrac",
         "payorAccountCredentials": {
             "accountNumber": "123456789"
         },
         "billForShippingCost": true,
         "billDutiesAndTaxes": true
     }
    ]
  },
  ....
}

Purolator E-Ship payor information

Payor typePurolator E-Ship supports payor typePurolator E-Ship requires payor account credentials
senderYesYes
third_partyYesYes
consigneeNoNot Applicable
recipientYesYes

Purolator E-Ship required fields

The following required fields must be included for Purolator E-Ship for any of the supported payor types: sender, third party, consignee, or recipient. The conditional fields are payor type dependent.

Required fields

Request field

Details

payorAccounts.accountType

Type: String (enumeration)
Values: recipient, sender, third_party
Description: The type of account to use for billing

payorAccounts.payorAccountCredentials .accountNumber

Type: String
Description: Your organization's carrier account number used to authenticate and connect to the carrier's APIs

payorAccounts.billForShippingCost

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for the cost of shipping the package.

payorAccounts.billDutiesAndTaxes

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for duties and taxes.

Conditional fields

Request field

Details

payorAccounts.carrierId

Type: String (enumeration)
Example: purolator
Condition: Required for third_party account type
Description: The carrier ID as represented in the Shipium platform; you can find carrier ID values in Supported Carriers.

Sample request for third party billing for Purolator E-Ship

This example shows the payorAccounts information in JSON to be included via API call for third party billing for Purolator E-Ship.

{
  ....
  "shipmentParameters": {
    "payorAccounts": [
      {
        "accountType": "third_party",
        "carrierId": "purolator",
        "payorAccountCredentials": {
          "accountNumber": "123456789"
        },
        "billForShippingCost": true,
        "billDutiesAndTaxes": true
      }
    ]
  },
  ....
}

UPS payor information

Payor typeUPS supports payor typeUPS requires payor account credentials
senderYesYes
third_partyYesYes
consigneeYesYes
recipientYesYes

UPS required fields

The following required fields must be included for UPS for any of the supported payor types: sender, third party, consignee, or recipient. The conditional fields are payor type dependent.

Required fields

Request field

Details

payorAccounts.accountType

Type: String (enumeration)
Values: consignee, recipient, sender, third_party
Description: The type of account to use for billing

payorAccounts.billForShippingCost

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for the cost of shipping the package; the value should be false when designating tax ID (EIN) for a payor type (typeCode).

payorAccounts.billDutiesAndTaxes

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for duties and taxes; the value should be false when designating tax ID (EIN) for a payor type (typeCode).

Conditional fields

Request field

Details

payorAccounts.carrierId

Type: String (enumeration)
Example: ups
Condition: Required for third_party account type
Description: The carrier ID as represented in the Shipium platform; you can find carrier ID values in Supported Carriers.

payorAccounts.payorAccountCredentials .accountNumber

Type: String
Condition: Required for sender, recipient, and third_party payor types; not required for consignee
Description: Your organization's carrier account number used to authenticate and connect to the carrier's APIs

payorAccounts.payorAccountCredentials .accountCountryCode

Type: String
Condition: Required for third_party payor type; not required for consignee, sender, or recipient
Description: The ISO 3166-1 country code associated with your organization's carrier account

payorAccounts.payorAccountCredentials .accountPostalCode

Type: String
Condition: Required for recipient and third_party payor types; not required for consignee or sender
Description: A country-code-appropriate postal code associated with your organization's carrier account

payorAccounts.payorAccountAddress.countryCode

Type: String
Condition: Required for third_party payor type; not required for consignee, sender, or recipient
Description: The ISO 3166-1 country code for the shipment payor's address

payorAccounts.payorAccountAddress.postalCode

Type: String
Condition: Required for recipient and third_party payor types; not required for consignee or sender
Description: A country-code-appropriate postal code for the shipment payor's address

payorAccounts.registrationInformation .registrationNumber

Type: String
Example: 12344509
Condition: Required for consignee payor type; not required for recipient, sender, or third_party
Description: The registration number for the payor account

Sample request for recipient billing for UPS

This example shows the payorAccounts information in JSON to be included via API call for billing for a recipient for UPS.

{
  ....
  "shipmentParameters": {
    "payorAccounts": [
      {
        "accountType": "recipient",
        "payorAccountCredentials": {
          "accountNumber": "123456789",
          "accountPostalCode": "98101"
        },
        "payorAccountAddress": {
          "postalCode": "87121"
        },
        "billForShippingCost": true,
        "billDutiesAndTaxes": true
      }
    ]
  },
  ....
}

Sample request for consignee billing for UPS

This example shows the required payorAccounts information as well as optional fields in JSON to be included via API call for billing for a consignee for UPS.

{
    "currencyCode": "usd",
    "generateLabel": false,
    "shipmentParameters": {
        "includePackagesArray": true,
        "shippedDateTime": "2023-09-06T18:30:55.558Z",
        "orderedDateTime": "2022-04-07T18:30:55.558Z",
        "testMode": true,
        "destinationAddress": {
            "countryCode": "US",
            "postalCode": "87121",
            "addressType": "commercial",
            "city": "Albuquerque",
            "name": "Wile E. Coyote",
            "phoneNumber": "888-555-1234",
            "state": "NM",
            "street1": "123 Main St.",
            "street2": "Suite 42"
        },
        "shipFromAddress": {
            "countryCode": "US",
            "postalCode": "17901",
            "city": "Pottsville",
            "state": "PA",
            "street1": "401 N. Centre St."
        },
        "returnToAddress": {
            "name": "Rod Runner",
            "phoneNumber": "865-433-9999",
            "phoneNumberCountryCode": "+2",
            "emailAddress": "[email protected]",
            "company": "ACME",
            "street1": "456 Main St.",
            "street2": "Suite 8",
            "city": "Albuquerque",
            "state": "NM",
            "countryCode": "US",
            "postalCode": "87121",
            "addressType": "commercial"
        },
        "payorAccounts": [
            {
                "accountType": "consignee",
                "payorAccountCredentials": {
                  "accountNumber": "123456789",
                  "accountPostalCode": "98101"
                },
              "registrationInformation": {
                "registrationNumber": "12344509"
              },
                "billForShippingCost": false,
                "billDutiesAndTaxes": false
            }
        ],
        "orderItemQuantities": [
            {
                "productId": "ET-14-4000",
                "quantity": 2
            }
        ],
        "packagingType": {
            "packagingMaterial": "box",
            "packagingWeight": {
                "weight": 13,
                "weightUnit": "oz"
            },
            "linearDimensions": {
                "length": 15,
                "width": 10,
                "height": 5,
                "linearUnit": "in"
            }
        },
        "totalWeight": {
            "weight": 13,
            "weightUnit": "oz"
        }
    }
}

Sample response for consignee billing for UPS

"shipiumShipmentId": "3185ae04-d465-408a-9ae2-a98c7499e6bc",
    "orderedDateTime": "2022-04-07T18:30:55.558Z",
    "shippedDateTime": "2023-09-06T18:30:55.558Z",
    "ignoreUpgradeSpendLimits": false,
    "fulfillmentType": "customer",
    "packages": [
        {
            "orderItemQuantities": [
                {
                    "productId": "ET-14-4000",
                    "quantity": 2,
                    "productDetails": [],
                    "hazmat": false
                }
            ],
            "packagingType": {
                "packagingMaterial": "box",
                "linearDimensions": {
                    "linearUnit": "in",
                    "length": 15.0,
                    "width": 10.0,
                    "height": 5.0
                },
                "packagingWeight": {
                    "weightUnit": "oz",
                    "weight": 13.0
                }
            },
            "totalWeight": {
                "weightUnit": "oz",
                "weight": 13.0
            }
        }
    ],
    "orderItemQuantities": [
        {
            "productId": "ET-14-4000",
            "quantity": 2,
            "productDetails": [],
            "hazmat": false
        }
    ],
    "destinationAddress": {
        "name": "Wile E. Coyote",
        "phoneNumber": "888-555-1234",
        "street1": "123 Main St.",
        "street2": "Suite 42",
        "city": "Albuquerque",
        "state": "NM",
        "countryCode": "US",
        "postalCode": "87121",
        "addressType": "commercial"
    },
    "shipFromAddress": {
        "name": "Ro Drunner",
        "phoneNumber": "5555555555",
        "emailAddress": "[email protected]",
        "company": "Sell It",
        "street1": "401 N. Centre St.",
        "city": "Pottsville",
        "state": "PA",
        "countryCode": "US",
        "postalCode": "17901"
    },
    "returnToAddress": {
        "name": "Rod Runner",
        "phoneNumber": "865-433-9999",
        "phoneNumberCountryCode": "+2",
        "emailAddress": "[email protected]",
        "company": "ACME",
        "street1": "456 Main St.",
        "street2": "Suite 8",
        "city": "Albuquerque",
        "state": "NM",
        "countryCode": "US",
        "postalCode": "87121",
        "addressType": "commercial"
    },
    "fulfillmentContextId": "1f19ca28-9798-42b2-9e8c-f9c3a72c9bab",
    "requestFulfillmentContextIds": [],
    "originId": "5a1ea728-4ba2-4cc6-892c-1f122f350775",
    "packagingType": {
        "packagingMaterial": "box",
        "linearDimensions": {
            "linearUnit": "in",
            "length": 15.0,
            "width": 10.0,
            "height": 5.0
        },
        "packagingWeight": {
            "weightUnit": "oz",
            "weight": 13.0
        }
    },
    "totalWeight": {
        "weightUnit": "oz",
        "weight": 13.0
    },
    "payorAccounts": [
        {
            "accountType": "consignee",
            "payorAccountCredentials": {
                  "accountNumber": "123456789",
                  "accountPostalCode": "98101"
                },
            "payorAccountAddress": {
                "name": "Rod Runner",
                "phoneNumber": "8654339999",
                "phoneNumberCountryCode": "+2",
                "emailAddress": "[email protected]",
                "company": "ACME",
                "street1": "456 Main St.",
                "street2": "Suite 8",
                "city": "Albuquerque",
                "state": "NM",
                "countryCode": "US",
                "postalCode": "87121",
                "addressType": "commercial"
            },
                "registrationInformation": {
                  "registrationNumber": "12344509"
              },
            "billForShippingCost": false,
            "billDutiesAndTaxes": false
        }
    ],
    "shipmentTags": [],
    "carrierSelection": {
        "status": "success",
        "statusDetails": "success",
        "carrierSelectionId": "911b488c-c620-4663-a554-bf9628e7ff43",
        "shipiumShipmentId": "3185ae04-d465-408a-9ae2-a98c7499e6bc",
        "partnerId": "76abb3d4-8990-4f80-aa13-4c2007cb852a",
        "carrierAccountId": "7b811704-9a16-4d3b-b849-43c7279415ac",
        "serviceMethodIdentifier": "1f19ca28-9798-42b2-9e8c-f9c3a72c9bab:dXBzbWktcGFyY2VsLXNlbGVjdC1zZXJ2aWNlLW1ldGhvZDo6NDNjYTI3ZDctZmUzNi00YjI1LTk4MDAtYTdmMTE2ZDIyMTQxOjdiODExNzA0LTlhMTYtNGQzYi1iODQ5LTQzYzcyNzk0MTVhYzpmZTFlMjg1Mi1kNTBiLTQ5OGQtOGIxMC05MGJiMWM5ODFjZTA6dXBzbWk6NWExZWE3MjgtNGJhMi00Y2M2LTg5MmMtMWYxMjJmMzUwNzc1Ojo",
        "carrier": "upsmi",
        "carrierServiceMethodId": "upsmi-parcel-select-service-method",
        "serviceMethodName": "UPS Mail Innovations Parcel Select",
        "totalCost": 1.0,
        "carrierCompareCost": 1.0,
        "carrierInvoiceCost": 1.0,
        "operationalCost": 1.0,
        "thirdPartyBilling": false,
        "carrierSelectionDateTime": "2024-03-25T19:44:22.232Z"
    },
    "saturdayDelivery": false,
    "deliverySignatureOption": "None",
    "forceThirdPartyBilling": false,
    "createdWithVersion": "v2",
    "multiParcel": false,
    "testMode": true
}

USPS payor information

Payor typeUSPS supports payor typeUSPS requires payor account credentials
senderYesYes
third_partyYesYes
consigneeYesYes
recipientYesYes

USPS required fields

USPS provides two different mechanisms to identify account information for payors. The USPS Direct CRID, USPS Direct MID, and USPS Direct Manifest MID are always required for either mechanism. After providing these three required values, you also will provide either the USPS Direct Account Number or the USPS Direct Permit Number and USPS Direct Permit ZIP.

The following required fields must be included for USPS for any of the supported payor types: sender, third party, consignee, or recipient. The conditional fields are primarily payor type dependent.

Required fields

Request field

Details

payorAccounts.accountType

Type: String (enumeration)
Values: consignee, recipient, sender, third_party
Description: The type of account to use for billing

payorAccounts.additionalCarrierSpecificInformation .usps.customerRegistrationId

Type: String
Description: USPS account Customer Reference/Registration ID

payorAccounts.additionalCarrierSpecificInformation .usps.mailerId

Type: String
Description: USPS account Mailer ID

payorAccounts.additionalCarrierSpecificInformation .usps.manifest

Type: String
Description: USPS account Mailer ID for manifesting

payorAccounts.billForShippingCost

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for the cost of shipping the package; the value should be false when designating tax ID (EIN) for a payor type (typeCode).

payorAccounts.billDutiesAndTaxes

Type: Boolean
Values: true or false
Description: If true, this indicates whether the payor should be billed for duties and taxes; the value should be false when designating tax ID (EIN) for a payor type (typeCode).

Conditional fields

Field

Details

payorAccounts.carrierId

Type: String (enumeration)
Example: usps
Condition: Required for third_party account type
Description: The carrier ID as represented in the Shipium platform; you can find carrier ID values in Supported Carriers.

payorAccounts.payorAccountCredentials .accountNumber

Type: String
Condition: You must provide either an accountNumber OR a permitNumber and permitPostalCode.
Description: Your organization's carrier account number used to authenticate and connect to the carrier's APIs

payorAccounts.registrationInformation .registrationNumber

Type: String
Example: 12344509
Condition: Required for consignee payor type; not required for recipient, sender, or third_party
Description: The registration number for the payor account

payorAccounts .additionalCarrierSpecificInformation .usps.permitNumber

Type: String
Condition: You must provide either an accountNumber OR a permitNumber and permitPostalCode.
Description: USPS permit number

payorAccounts .additionalCarrierSpecificInformation .usps.permitPostalCode

Type: String
Condition: You must provide either an accountNumber OR a permitNumber and permitPostalCode.
Description: The ZIP code associated with your permit number

Sample request for consignee billing for USPS

This example shows the required payorAccounts information in JSON to be included via API call for billing for a consignee for USPS using the permit number and permit ZIP code.

{
  "accountType": "consignee",
  "additionalCarrierSpecificInformation": {
    "usps": {
      "customerRegistrationId": "123456789012345",
      "mailerId": "123456789",
      "manifest": "987654321",
      "permitNumber": "1111",
      "permitPostalCode": "43035"
    }
  },
  "registrationInformation": {
    "registrationNumber": "12344509"
  },
  "billForShippingCost": false,
  "billDutiesAndTaxes": false
}

Providing tax and registration numbers for payors

When specifying payor accounts for international shipments, you can provide tax identification and registration information for any party involved in the shipment using the registrationInformation object within payorAccounts. This is the primary method for providing tax identifiers such as EORI (Economic Operators Registration and Identification) numbers for consignees, importers of record (IORs), and other entities involved in international customs clearance.

What is registration information?

The registrationInformation object allows you to specify tax identification and registration numbers for entities other than the shipper. This capability is particularly important for international customs clearance, especially when shipping to or from the European Union, United Kingdom, and other countries that require EORI numbers or similar tax identifiers.

Unlike your organization's tax identification number (which is specified in customsInfo.taxIdentificationNumber), the registrationInformation object is used to provide tax identification for other parties in the shipment - such as the consignee, importer of record, or third-party payor.

When to use registration information

Use the registrationInformation object within payorAccounts when:

  • International shipments require EORI numbers. Many countries, particularly in the EU and UK, require EORI numbers for customs clearance. The consignee or importer of record must provide their EORI number for the shipment to clear customs.
  • The consignee or importer of record has a separate tax ID. When the entity receiving the shipment or acting as the importer of record is different from the shipper and needs to provide their own tax identification for customs purposes.
  • Customs clearance requires registration information for non-shipper entities. Various countries have specific tax identification or registration requirements for parties other than the shipper involved in international trade.
  • Multiple parties are involved in customs clearance. Complex international shipping arrangements where brokers, importers of record, or other third parties need to provide their tax identification information

Understanding tax ID methods in Shipium

Shipium's API provides multiple methods for tax identification information, each serving a distinct purpose.

MethodLocationEntityUse case
Primary (Recommended)payorAccounts.registrationInformationAny payor (consignee, IOR, third party)Providing EORI, VAT, or other tax identifiers for entities other than the shipper
Sender's Tax IDcustomsInfo.taxIdentificationNumberShipper/Exporter onlyYour organization's tax ID for export compliance
AlternativecustomsInfo.importerOfRecord or customsInfo.brokersIOR or BrokerAlternative method for specifying IOR/broker tax IDs

The payorAccounts.registrationInformation method is recommended for most use cases, particularly for EORI numbers, as it provides the clearest association between the party and their tax identification.

registrationInformation object structure

The registrationInformation object is included within the payorAccounts array and contains the following fields:

  • typeCode. String. Required. The type of registration number being provided; use "EOR" for EORI numbers. Use "EIN" for Employer Identification Numbers. Additional type codes may be supported for other tax identifier types.
  • registrationNumber. String. Required. The actual tax identification or registration number; format depends on the issuing country's requirements. For example, UK EORI numbers follow the format "GB123456789000" while other countries have different formats.
  • issuerCountryCode. String. Conditional. The ISO 3166-1 alpha-2 country code of the country that issued the registration number. This field is required for DHL Express and optional for other carriers such as UPS and FedEx. This must be a valid 2-character ISO country code (e.g., "GB" for United Kingdom, "DE" for Germany, "US" for United States).

API examples

Example 1: International shipment with EORI for UPS

This example shows an international shipment where the consignee has an EORI number that must be provided for customs clearance. The issuerCountryCode is optional for UPS.

{
  "shipmentParameters": {
    "partnerShipmentId": "INTL_SHIPMENT_001",
    "shippedDateTime": "2025-11-04T09:12:33.123456Z",
    "destinationAddress": {
      "name": "Jane Smith",
      "company": "UK Retail Ltd",
      "street1": "45 Commerce Street",
      "city": "London",
      "postalCode": "SW1A 1AA",
      "countryCode": "GB",
      "addressType": "commercial"
    },
    "customsInfo": {
      "taxIdentificationNumber": "12-3456789",
      "totalCustomsValue": 250.00,
      "totalCustomsValueCurrency": "usd",
      "customsDescription": "Electronics components",
      "reasonForExport": "sale",
      "incoterm": "ddp"
    },
    "payorAccounts": [
      {
        "accountType": "consignee",
        "payorAccountAddress": {
          "name": "Jane Smith",
          "company": "UK Retail Ltd",
          "street1": "45 Commerce Street",
          "city": "London",
          "postalCode": "SW1A 1AA",
          "countryCode": "GB"
        },
        "registrationInformation": {
          "typeCode": "EOR",
          "registrationNumber": "GB123456789000"
        }
      }
    ]
  }
}

Example 2: International shipment with EORI for DHL Express

When shipping with DHL Express, the issuerCountryCode field is required and must specify the ISO country code that issued the EORI number. In this example, the payorAccountCredentials and payorAccountAddress fields are not included. When these fields are omitted, Shipium will use the carrier account configured in your fulfillment context in the Shipium Console.

{
  "shipmentParameters": {
    "partnerShipmentId": "INTL_SHIPMENT_002",
    "shippedDateTime": "2025-11-04T09:12:33.123456Z",
    "destinationAddress": {
      "name": "Hans Mueller",
      "company": "German Imports GmbH",
      "street1": "Hauptstrasse 123",
      "city": "Berlin",
      "postalCode": "10115",
      "countryCode": "DE",
      "addressType": "commercial"
    },
    "customsInfo": {
      "taxIdentificationNumber": "12-3456789",
      "totalCustomsValue": 500.00,
      "totalCustomsValueCurrency": "usd",
      "customsDescription": "Industrial equipment",
      "reasonForExport": "sale",
      "incoterm": "ddp"
    },
    "payorAccounts": [
      {
        "accountType": "consignee",
        "registrationInformation": {
          "typeCode": "EOR",
          "issuerCountryCode": "DE",
          "registrationNumber": "DE987654321000"
        }
      }
    ]
  }
}

Example 3: Multi-parcel international shipment with EORI

For multi-parcel shipments, the registrationInformation object is included in the multiParcelShipmentParameters.

{
  "multiParcelShipmentParameters": {
    "partnerShipmentId": "MULTIPARCEL_INTL_001",
    "shippedDateTime": "2025-11-04T09:12:33.123456Z",
    "destinationAddress": {
      "name": "Marie Dubois",
      "company": "French Distribution SA",
      "street1": "12 Rue du Commerce",
      "city": "Paris",
      "postalCode": "75001",
      "countryCode": "FR",
      "addressType": "commercial"
    },
    "customsInfo": {
      "taxIdentificationNumber": "12-3456789",
      "totalCustomsValue": 1200.00,
      "totalCustomsValueCurrency": "usd"
    },
    "payorAccounts": [
      {
        "accountType": "consignee",
        "registrationInformation": {
          "typeCode": "EOR",
          "issuerCountryCode": "FR",
          "registrationNumber": "FR12345678900"
        }
      }
    ],
    "packages": [
      {
        "weight": 15,
        "weightUnit": "lb",
        "dimensions": {
          "length": 12,
          "width": 10,
          "height": 8,
          "dimensionUnit": "in"
        }
      },
      {
        "weight": 20,
        "weightUnit": "lb",
        "dimensions": {
          "length": 14,
          "width": 12,
          "height": 10,
          "dimensionUnit": "in"
        }
      }
    ]
  }
}

Carrier-specific requirements for international shipments

Different carriers have varying requirements for tax identification and registration information in international customs clearance:

  • UPS International
    • Supports EORI numbers via registrationInformation object
    • The issuerCountryCode field is optional.
    • EORI information will appear on UPS commercial invoices for customs clearance.
    • Compatible with UPS Worldwide Express, UPS Worldwide Expedited, and other UPS international service methods
  • DHL Express
    • Supports EORI numbers via registrationInformation object
    • The issuerCountryCode field is required for DHL Express shipments.
    • DHL Express uses this information for customs clearance in destination countries.
    • Particularly important for shipments to and from European Union countries
  • FedEx International
    • Supports EORI numbers via registrationInformation object
    • The issuerCountryCode field is optional.
    • EORI information appears on FedEx international shipping documents.

Contact your Implementation or Customer Success team member to confirm carrier-specific formatting requirements for your destination countries.

Common international shipping scenarios

  • Shipping to EU Countries with EORI Requirements
    When shipping to European Union member countries, the consignee typically needs an EORI number for customs clearance. Include the EORI number in registrationInformation with the appropriate issuerCountryCode for the destination country.
  • Shipping to UK Post-Brexit
    United Kingdom EORI numbers are now distinct from EU EORI numbers. Use country code "GB" for UK EORI numbers, and ensure you have the correct EORI format for post-Brexit shipments.
  • Delivered Duty Paid (DDP) Shipments
    For DDP incoterm shipments where your organization pays duties and taxes, you may still need to provide the consignee's EORI number for customs clearance purposes, even though you're responsible for payment.
  • Using Customs Brokers
    When using a customs broker, you may need to provide the broker's tax identification information in addition to the consignee's information. The Broker & Importer of Record documentation provides details on designating brokers.

Account number requirements

When using the payorAccounts object with registrationInformation, you have flexibility in providing account credentials:

  • With explicit account number. Include payorAccountCredentials.accountNumber to specify a particular carrier account for billing. This is useful when billing a specific third-party account for the international shipment.
  • Without explicit account number. Omit the payorAccountCredentials object entirely, and Shipium will use the carrier account configured in your fulfillment context in the Shipium Console. This simplifies API calls when you're not using third-party billing but still need to provide registration information for customs.

Example with account number

"payorAccounts": [
  {
    "accountType": "consignee",
    "payorAccountCredentials": {
      "accountNumber": "987654321"
    },
    "registrationInformation": {
      "typeCode": "EOR",
      "registrationNumber": "GB123456789000"
    }
  }
]

Example without account number (uses Console configuration)

"payorAccounts": [
  {
    "accountType": "consignee",
    "registrationInformation": {
      "typeCode": "EOR",
      "issuerCountryCode": "GB",
      "registrationNumber": "GB123456789000"
    }
  }
]

Related documentation

For additional information about international shipping and customs requirements, see:

Resources

Your Shipium team member is available to help along the way. However, you might find these resources helpful: