We use cookies to make your experience better. To comply with the new e-Privacy directive, we need to ask for your consent to set the cookies. Learn more.
Magento 2: Programmatically Create Coupon Code
Creating a coupon code programmatically in Magento 2 involves using Magento's Quote and SalesRule functionalities.
use Exception;
use Magento\Backend\App\Action;
use Magento\SalesRule\Model\Rule;
use Magento\SalesRule\Model\RuleFactory;
use Magento\Framework\Controller\ResultFactory;
class Create extends Action
{
protected $ruleFactory;
public function __construct(
Action\Context $context,
RuleFactory $ruleFactory
) {
parent::__construct($context);
$this->ruleFactory = $ruleFactory;
}
public function execute()
{
try {
// Create new rule
$rule = $this->ruleFactory->create();
$rule->setName('Sample Coupon Code')
->setDescription('This is a sample coupon code')
->setFromDate(date('Y-m-d'))
->setToDate(date('Y-m-d', strtotime('+1 month')))
->setCouponType(Rule::COUPON_TYPE_SPECIFIC)
->setCouponCode('SAMPLECOUPON')
->setUsesPerCoupon(1) // Max usage per coupon
->setUsesPerCustomer(1) // Max usage per customer
->setIsActive(1)
->setSimpleAction('by_fixed')
->setDiscountAmount(10) // Fixed discount amount
->setStopRulesProcessing(0)
->setWebsiteIds('1'); // Set the website ID(s) where this rule will apply (as a comma-separated string)
// Save the rule
$rule->save();
$this->messageManager->addSuccessMessage(__('Coupon code created successfully.'));
} catch (Exception $e) {
$this->messageManager->addErrorMessage(__('Error creating coupon code: ' . $e->getMessage()));
}
// Redirect back to admin page or show result
return $this->resultFactory->create(ResultFactory::TYPE_REDIRECT)->setPath('*/*/');
}
}