Shipping Methods

The plugin provides two WooCommerce shipping methods:

Method ID Description
Balík na Poštu wcsp_bnp Delivery to any Slovenská Pošta post office branch
BalikoBOX wcsp_bbox Delivery to BalikoBOX self-service parcel lockers

Both methods integrate a pickup point picker into the checkout, allowing customers to select their preferred location from an interactive map.


Adding Methods to Shipping Zones

Shipping methods must be assigned to WooCommerce shipping zones before they appear at checkout.

Shipping Methods Configuration

  1. Navigate to WP-Admin > WooCommerce > Settings > Shipping.
  2. Create a new shipping zone or click Edit on an existing one.
  3. Under Shipping Methods, click Add Shipping Method.
  4. Select Balík na Poštu or BalikoBOX from the dropdown list.
  5. Click Add Shipping Method.
  6. Click the method title in the list to open the instance settings. Configure the title and pricing. See the individual method pages for full settings details:

Multiple instances: You can add the same method to a zone more than once with different settings — for example, one instance with flat-rate pricing and another with weight-based pricing for heavy orders.


Common Behavior

Both shipping methods share the following behavior:

  • A "Select Pickup Point" button is displayed below the shipping method at checkout when the method is selected.
  • The customer must select a pickup point before they can place the order.
  • The selected pickup point is stored in the WooCommerce session and saved to order meta on checkout.
  • If configured, the pickup point address replaces the shipping address on the order.

Pricing Options

Both methods support three pricing modes:

  • Flat rate — a fixed shipping cost regardless of order weight or total.
  • Percentage — a percentage of the cart subtotal, with an optional minimum cost.
  • Weight-based — tiered pricing based on total cart weight, defined by a table of weight thresholds and prices.

A free shipping threshold can be set independently of the pricing mode — if the cart subtotal reaches the threshold, shipping is free.

See Cost Calculation for full details on how pricing is calculated.


Dimension & Weight Validation

When a customer proceeds to checkout with a Slovenská Pošta method selected, the plugin optionally validates:

  • Weight limits — whether the total cart weight exceeds the maximum accepted weight at the selected pickup point.
  • Package dimensions — whether the cart items (individually or packed together) fit within the service’s dimension limits.

Warnings can be configured to block or merely advise. See the Pickup Points Settings for validation bypass options.

Balík na Poštu

Balík na Poštu Shipping Method

Method ID: wcsp_bnp

Balík na Poštu (Package to the Post Office) delivers parcels to Slovenská Pošta post office branches. Customers select their preferred branch using the pickup point picker at checkout.

To edit a Balík na Poštu instance, navigate to WP-Admin > WooCommerce > Settings > Shipping, open the shipping zone, and click the method name.


Instance Settings

Method Title

Key: wcsp_bnp_title
Default: Balík na Poštu

The name displayed to customers at checkout for this shipping option.


Cost Type

Key: wcsp_bnp_cost_type
Options: flat (Flat Rate), percentage (Percentage of Cart), weight (Weight-Based)
Default: flat

Selects the pricing model for this shipping instance. See Cost Calculation for a detailed explanation of each mode.


Flat Rate Cost

Key: wcsp_bnp_cost

The fixed shipping cost shown when Cost Type is set to Flat Rate. Enter the amount in your store currency.


Percentage of Cart

Key: wcsp_bnp_percentage

The percentage of the cart subtotal charged as shipping, when Cost Type is set to Percentage. Example: 10 charges 10% of the cart subtotal.

Minimum Cost (Percentage Mode)

Key: wcsp_bnp_min_cost

The minimum shipping cost when using percentage pricing. If the calculated percentage amount is lower than this value, the minimum cost is used instead. Example: with 10% on a €5 cart and a minimum cost of €2, the customer pays €2.


Weight-Based Pricing Rules

Key: wcsp_bnp_weight_rules

A table of weight thresholds and corresponding prices, active when Cost Type is set to Weight-Based.

Each rule consists of:

  • Weight (kg): The upper weight limit for this rule.
  • Price: The shipping cost for orders up to this weight.

How rules are applied: The plugin finds the first rule where the total cart weight is less than or equal to the rule’s weight threshold, and uses that rule’s price. If the cart weight exceeds all defined thresholds, the price from the last (highest) rule is used.

Example rule table:

Weight (kg) Price
1 €2.50
5 €3.50
10 €4.50
30 €6.00

A cart weighing 3 kg would use the €3.50 rate (matches the "up to 5 kg" rule).

See Cost Calculation for the complete pricing logic.


Free Shipping Threshold

Key: wcsp_bnp_free_shipping_threshold

If the cart subtotal equals or exceeds this amount, shipping is offered for free, overriding any other pricing calculation. Leave empty to disable free shipping.


Packing Material Weight

Key: wcsp_bnp_packing_material_weight
Unit: kg

Additional weight added to the cart’s total weight calculation for this shipping instance. Use this to account for the weight of packaging for your specific shipping configuration.

Note: This value is added on top of the global Packaging Weight set in Pickup Points Settings. Both values are included in the total weight used for pricing and weight limit checks.


Exclude BalikoBOX Locations

Key: wcsp_bnp_exclude_balikoboxes

When enabled, BalikoBOX locker locations are excluded from the pickup point list shown for this Balík na Poštu instance. This is useful if you want BNP customers to only see traditional post office branches, not parcel lockers.

This option is only available on Balík na Poštu instances and has no effect on BalikoBOX methods.


Dimension Limits

Slovenská Pošta enforces hard dimension limits for Balík na Poštu parcels. These are always enforced and cannot be disabled:

Limit Value
Minimum face 14 cm × 9 cm
Maximum single dimension 150 cm
Maximum girth (L + 2W + 2H) 300 cm

If cart items exceed these limits, a size warning is shown. Whether the customer can proceed past the warning is controlled by the Bypass Size Validation setting in Pickup Points Settings.

BalikoBOX

BalikoBOX Shipping Method

Method ID: wcsp_bbox

BalikoBOX delivers parcels to self-service parcel locker stations. Customers select their preferred locker using the pickup point picker at checkout.

To edit a BalikoBOX instance, navigate to WP-Admin > WooCommerce > Settings > Shipping, open the shipping zone, and click the method name.


Instance Settings

Method Title

Key: wcsp_bbox_title
Default: BalikoBOX

The name displayed to customers at checkout for this shipping option.


Cost Type

Key: wcsp_bbox_cost_type
Options: flat (Flat Rate), percentage (Percentage of Cart), weight (Weight-Based)
Default: flat

Selects the pricing model for this shipping instance. See Cost Calculation for a detailed explanation of each mode.


Flat Rate Cost

Key: wcsp_bbox_cost

The fixed shipping cost when Cost Type is set to Flat Rate.


Percentage of Cart

Key: wcsp_bbox_percentage

The percentage of the cart subtotal charged as shipping, when Cost Type is set to Percentage.

Minimum Cost (Percentage Mode)

Key: wcsp_bbox_min_cost

The minimum shipping cost when using percentage pricing.


Weight-Based Pricing Rules

Key: wcsp_bbox_weight_rules

A table of weight thresholds and prices, active when Cost Type is set to Weight-Based. Works identically to the Balík na Poštu weight rules — see Balík na Poštu or Cost Calculation for details.


Free Shipping Threshold

Key: wcsp_bbox_free_shipping_threshold

If the cart subtotal equals or exceeds this amount, shipping is free regardless of other pricing settings.


Packing Material Weight

Key: wcsp_bbox_packing_material_weight
Unit: kg

Additional weight added to the total cart weight for this instance.


Dimension Limits

BalikoBOX lockers have a maximum parcel size. The dimensions are configurable in WP-Admin > Slovenská Pošta > Pickup Points:

Dimension Default
Maximum Length 50 cm
Maximum Width 60 cm
Maximum Height 45 cm

If cart items exceed these dimensions (or cannot be packed together within the box, when box packing is enabled), a warning is shown.

Whether customers can proceed past a size warning is controlled by Bypass Size Validation for BalikoBOX in Pickup Points Settings.

Note: BalikoBOX dimension limits differ from Balík na Poštu. BalikoBOX limits are enforced based on the physical size of locker compartments and can vary by locker type. The defaults represent a typical large compartment.

Cost Calculation

How Shipping Costs Are Calculated

Both Balík na Poštu and BalikoBOX use the same cost calculation logic. The calculation runs in this order:

1. Free shipping threshold check
   └─ If cart subtotal ≥ threshold → cost = 0 (stop here)

2. Cost type = 'weight'?
   └─ Find first rule where cart_weight ≤ rule_weight → use rule price
      If no rule matches → use last (highest threshold) rule price

3. Cost type = 'percentage'?
   └─ cost = cart_subtotal × (percentage / 100)
      cost = MAX(cost, minimum_cost)

4. Default (flat rate)
   └─ cost = flat_rate_cost

5. Apply developer filter
   └─ wcsp_shipping_cost_bnp or wcsp_shipping_cost_bbox

Free Shipping Threshold

If a Free Shipping Threshold is configured on the shipping instance, it is checked first — before any other pricing logic. When the cart subtotal meets or exceeds the threshold, the shipping cost is set to 0 and no further calculation is performed.

Example:

  • Free shipping threshold: €50
  • Cart subtotal: €55
  • Result: Shipping cost = €0

If the threshold is left empty (or set to 0), it is disabled and pricing falls through to the cost type logic.


Flat Rate

The simplest mode. The shipping cost is a fixed amount regardless of cart contents.

Example:

  • Flat rate: €3.50
  • Result: Shipping cost = €3.50 for all orders (unless free shipping threshold applies)

Percentage of Cart

The shipping cost is calculated as a percentage of the cart subtotal. A minimum cost can be set to ensure very small orders still generate meaningful shipping revenue.

Formula:

calculated = cart_subtotal × (percentage / 100)
cost       = MAX(calculated, minimum_cost)

Example:

  • Percentage: 8%
  • Minimum cost: €2.00
  • Cart subtotal: €20 → 8% = €1.60 → below minimum → cost = €2.00
  • Cart subtotal: €40 → 8% = €3.20 → above minimum → cost = €3.20

Weight-Based Pricing

Weight-based pricing uses a table of weight thresholds and prices. The algorithm finds the first rule where the total cart weight does not exceed the rule’s weight threshold and applies that price.

Weight calculation:

total_weight = sum(product_weight × quantity)
             + packing_material_weight (instance setting)

Products without a weight are treated as 0 kg in the cost calculation. The global Default Weight setting and the global Packaging Weight setting do not affect shipping cost calculation — they are only used for the pickup point weight limit validation (determining whether a pickup point can accept the parcel). See Pickup Points Settings.

Rule matching algorithm:

For each rule (sorted by weight threshold, ascending):
  If total_weight ≤ rule.weight → use rule.price (stop)

If total_weight exceeds ALL rules:
  → Use the price from the LAST rule (highest threshold)

Example rule table and results:

Rule Weight Threshold Price
1 1 kg €2.50
2 5 kg €3.50
3 10 kg €4.50
4 30 kg €6.00
Cart Weight Matched Rule Shipping Cost
0.5 kg Rule 1 (≤ 1 kg) €2.50
3 kg Rule 2 (≤ 5 kg) €3.50
7 kg Rule 3 (≤ 10 kg) €4.50
15 kg Rule 4 (≤ 30 kg) €6.00
40 kg No rule matches → last rule €6.00

Configuring weight rules:

Rules are entered in the shipping instance settings as a table of weight/price pairs. Add as many rules as needed to cover your weight range. Rules are evaluated in ascending order of weight.


Developer Filters

The final calculated cost can be modified via filter hooks before it is added to WooCommerce rates:

// Modify Balík na Poštu cost
add_filter( 'wcsp_shipping_cost_bnp', function( $cost, $package ) {
    // $cost = calculated shipping cost (float)
    // $package = WooCommerce package array
    return $cost;
}, 10, 2 );

// Modify BalikoBOX cost
add_filter( 'wcsp_shipping_cost_bbox', function( $cost, $package ) {
    return $cost;
}, 10, 2 );

The entire rate array (cost, label, taxes, etc.) can also be filtered before being registered:

add_filter( 'wcsp_shipping_rate_bnp', function( $rate, $package ) {
    // $rate = array with 'id', 'label', 'cost', 'taxes', etc.
    return $rate;
}, 10, 2 );

See Hooks & Filters for the complete reference.