# Bulk Discount for Several EDD Downloads

> Takes a percentage off the Easy Digital Downloads cart when it contains a set number of downloads or more, shown as a discount line at checkout.

- Type: PHP
- Runs: Run everywhere
- Category: [Easy Digital Downloads](https://wpide.com/library/category/edd/)
- Requires: Easy Digital Downloads
- Tags: edd, discounts, cart, fees
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/edd-bulk-discount/

## Code

```php
$wpide_edd_bulk = array(
    'items'   => 3,  // Minimum downloads in the cart.
    'percent' => 15, // Percent off the subtotal.
);

$wpide_edd_bulk_apply = function () use ( $wpide_edd_bulk ) {
    if ( ! function_exists( 'EDD' ) || ! EDD()->fees ) {
        return;
    }

    EDD()->fees->remove_fee( 'wpide_bulk_discount' );

    $count = count( (array) edd_get_cart_contents() );

    if ( $count >= $wpide_edd_bulk['items'] ) {
        EDD()->fees->add_fee( array(
            'amount' => -round( (float) edd_get_cart_subtotal() * $wpide_edd_bulk['percent'] / 100, edd_currency_decimal_filter() ),
            'label'  => sprintf( 'Bulk discount (%d%%)', $wpide_edd_bulk['percent'] ),
            'id'     => 'wpide_bulk_discount',
            'no_tax' => false,
        ) );
    }
};

add_action( 'edd_post_add_to_cart', $wpide_edd_bulk_apply );
add_action( 'edd_post_remove_from_cart', $wpide_edd_bulk_apply );
add_action( 'template_redirect', function () use ( $wpide_edd_bulk_apply ) {
    if ( function_exists( 'edd_is_checkout' ) && edd_is_checkout() ) {
        $wpide_edd_bulk_apply();
    }
} );
```

## Notes

Uses EDD cart fees and recalculates whenever items are added or removed.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Bulk Discount for Several EDD Downloads" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
