When a billing request combines a Direct Debit mandate with an Instant Bank Pay (or other instant-scheme) joining fee, GoCardless can create two mandates for the same billing request — one Direct Debit, one instant. The webhook handler explicitly filters by scheme (only bacs, sepa_core, sepa_cor1, ach, becs, becs_nz, pad, autogiro, betalingsservice count) before writing wpdd_mandate_id, specifically so the instant mandate can't overwrite the Direct Debit one that the recurring subscription actually needs. If you're building anything that reads wpdd_mandate_id directly, know that it's deliberately DD-only — it will never be the instant-payment mandate.
