Ekom.Shipping.IcelandicPost 0.1.2

dotnet add package Ekom.Shipping.IcelandicPost --version 0.1.2
                    
NuGet\Install-Package Ekom.Shipping.IcelandicPost -Version 0.1.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Ekom.Shipping.IcelandicPost" Version="0.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Ekom.Shipping.IcelandicPost" Version="0.1.2" />
                    
Directory.Packages.props
<PackageReference Include="Ekom.Shipping.IcelandicPost" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Ekom.Shipping.IcelandicPost --version 0.1.2
                    
#r "nuget: Ekom.Shipping.IcelandicPost, 0.1.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Ekom.Shipping.IcelandicPost@0.1.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Ekom.Shipping.IcelandicPost&version=0.1.2
                    
Install as a Cake Addin
#tool nuget:?package=Ekom.Shipping.IcelandicPost&version=0.1.2
                    
Install as a Cake Tool

Ekom.Shipping.IcelandicPost

Pósturinn checkout and fulfillment integration for Ekom. The package supports delivery-service pricing, pickup locations, shipment creation and management, labels, tracking, proof of delivery, and PrintNode printing.

Official API documentation

The test environment is documented as available on weekdays from 07:00–19:00. Keys are environment-specific. Authentication uses the x-api-key header; keep the key in application configuration.

Configuration

{
  "Ekom": {
    "Shipping": {
      "IcelandicPost": {
        "Accounts": {
          "post-main": {
            "ApiUrl": "https://api.mobiz.posturinn.is/api/wscm/",
            "ApiKey": "use-a-secret-provider",
            "FulfillmentMode": "Manual",
            "LabelFormat": "Unknown",
            "CacheDuration": "03:00:00"
          }
        }
      }
    }
  }
}

Umbraco provider node

Set these properties on the Ekom shipping provider node:

Property Value
shippingCarrierAlias icelandic-post
shippingCarrierAccount The configured account name, for example post-main
shippingCarrierService A delivery-service ID returned by Pósturinn

Common service IDs are:

Service ID Delivery type
DPH Normal address delivery used by the current integration examples
DPO Póstbox selection
DNO Alternative Póstbox service when returned by Pósturinn
DPT Parcel point selection
DPP Post office selection

Most sites only need normal address delivery and Póstbox delivery. Configure separate Ekom shipping provider nodes for them.

Normal address delivery:

shippingCarrierAlias: icelandic-post
shippingCarrierAccount: post-main
shippingCarrierService: DPH

Póstbox selection:

shippingCarrierAlias: icelandic-post
shippingCarrierAccount: post-main
shippingCarrierService: DPO

Confirm that Pósturinn returns the configured service for the destination and account. DPO enables Póstbox selection at checkout, but built-in fulfillment cannot book a generic pickup ID. Booking requires the carrier-qualified service ID returned for the selected Póstbox, and that mapping is not automatic.

Register with services.AddIcelandicPostShipping(configuration).

FulfillmentMode defaults to Manual. Set it to Automatic to create a shipment from CheckoutEvents.CompleteCheckoutAsync. CacheDuration applies to postboxes, parcel points, and post offices and defaults to three hours.

Public pickup locations

With an Ekom.Shipping.U* adapter installed, checkout UIs can load the configured provider's cached locations without a custom controller:

GET /ekom/shipping/providers/{providerKey}/pickup-locations?storeAlias=main&countryCode=IS&postalCode=101

providerKey is the Ekom shipping provider node key. The configured service ID determines whether the response contains postboxes, parcel points, or post offices.

Supported API operations

Inject IIcelandicPostShippingService for direct API access:

Operation Method
Rich delivery services and prices GetDeliveryServicesAsync
Provider-neutral delivery services GetServicesAsync
Postboxes GetPostboxesAsync
Parcel points GetParcelPointsAsync
Post offices GetPostOfficesAsync
Create a shipment CreateShipmentAsync
Get a shipment and tracking history GetShipmentAsync
Get current status GetShipmentStatusAsync
Delete a shipment DeleteShipmentAsync
Find shipments by reference GetShipmentsByReferenceAsync
List shipments by date range GetShipmentsAsync
Get one PDF label GetLabelAsync
Get a combined labels PDF GetCombinedLabelsAsync
Get proof-of-delivery JPEG GetProofOfDeliveryAsync
Print through PrintNode PrintAsync
Provider-neutral tracking JSON GetTrackingAsync
var shipment = await post.GetShipmentAsync(
    "post-main",
    "CF083141763IS",
    "IS",
    cancellationToken);

var labels = await post.GetCombinedLabelsAsync(
    "post-main",
    ["CF083141763IS", "CF083141764IS"],
    IcelandicPostLabelFormat.A4Size,
    cancellationToken);

await post.DeleteShipmentAsync(
    "post-main",
    shipment.ShipmentId,
    cancellationToken: cancellationToken);

IcelandicPostShipmentRequest exposes parcels, customs contents, recipient details, return permissions, dimensions, insurance, and other commonly used shipment options. Verify that optional services are supported by the selected delivery service before setting them.

Pickup services

  • Qualified IDs such as DPO1013 and DPP200 identify a carrier-selected destination and are preserved as returned.

The API does not document a reliable conversion from location IDs such as IS101A to qualified delivery-service IDs. The built-in fulfillment mapper therefore rejects generic pickup service IDs instead of inventing a mapping.

Ekom fulfillment

The built-in Ekom mapper intentionally supports domestic, single-parcel shipments only. It does not map purchased order lines to parcels. International automatic fulfillment is rejected because it requires explicit customs content, tariff codes, origin countries, and customs values.

Created shipments use the shared order-manager actions:

  • Print shipping label
  • View shipment JSON
  • Delete shipment

These actions go through IShippingFulfillmentService, keeping state in the order's ShippingProvider.CustomData. Confirmed deletion is retained and is not automatically recreated.

Mutation safety

Pósturinn does not document creation, deletion, or PrintNode calls as idempotent. Ambiguous transport and server outcomes throw ShipmentOutcomeUnknownException. Do not blindly retry them. A merchant reference can return multiple parcel and return IDs, so it is useful for reconciliation but is not treated as an idempotency key.

The built-in per-order lock is process-local. Multi-node sites must provide a distributed order lock before enabling automatic fulfillment.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.2 47 9/14/2026
0.1.1 48 9/12/2026