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.

- Navigate to WP-Admin > WooCommerce > Settings > Shipping.
- Create a new shipping zone or click Edit on an existing one.
- Under Shipping Methods, click Add Shipping Method.
- Select Balík na Poštu or BalikoBOX from the dropdown list.
- Click Add Shipping Method.
- 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.