MySQL. 8.0.19. Best index to match given query

Hello, thank you in advance.

Im trying to improve my query performance, but stuck in such situation:

Given a table:

CREATE TABLE `user_purchases`
    `id`        BIGINT      NOT NULL AUTO_INCREMENT,
    `user_id`   INT         NOT NULL,
    `date`      DATETIME    NOT NULL,
    `status`    VARCHAR(20) NOT NULL,
    `purchase`  BIGINT      NOT NULL,
    `cashback`  BIGINT      NULL DEFAULT -1,
    `coupon_id` INT         NULL,
    PRIMARY KEY (`id`),
    KEY `user_status_key` (`user_id`, `status`),
    KEY `user_key` (`user_id`),
    KEY `status_key` (`status`)

Table has many historical data about user purchases
To get all i need i execute such query:

SELECT id FROM user_purchases p
WHERE p.user_id = 1
  AND < 400
  AND p.coupon_id IS NULL

But in situations, where user have thousands of purchases in that statuses it takes too long time.
Does i choose best indexes, or i can change them to other to make this query execute faster?
Result for explain query:

select_type - SIMPLE
type - range
select_type - simple
POSSIBLE_KEYS - PRIMARY,user_status_key,status_key,user_key
key_len - 8
ref - null
rows - 8347239
filtered - 0.01
Extra - Using where; Backward index scan

If i use force index (user_status_key) result is better

select_type - SIMPLE
type - range
select_type - simple
POSSIBLE_KEYS - user_status_key
key - user_status_key
key_len - 270
ref - null
rows - 55324
filtered - 10
Extra - Using index condition; Using where; Using filesort

Hello @TMTQuant

First off, thisindex, is a duplicate and can be dropped:

KEY `user_key` (`user_id`),

After that, run ANALYZE TABLE user_purchases and see if EXPLAIN improves.