{"id":"b5f95136-61b5-4f67-94ef-83724fadb558","task":"Set up a Yapily Variable Recurring Payments mandate and execute recurring payments against it","domain":"docs.yapily.com","steps":["Verify the target institution supports VRP by calling GET /institutions/{institutionId} and checking the features array for INITIATE_DOMESTIC_VARIABLE_RECURRING_PAYMENT","POST /variable-recurring-payment-consents with applicationUserId, institutionId, and a controlParameters object specifying MaximumIndividualAmount, PeriodicLimits (amount and period), ValidFromDateTime, ValidToDateTime, and the mandate type (sweeping or commercial)","Redirect the user to the returned authorisationUrl; after successful authorisation the user is returned to your redirectUri with a consent query parameter","Store the consentToken and extract the consentId from the GET /variable-recurring-payment-consents/{consentId} response; verify the status is AUTHORIZED before initiating payments","Initiate individual payments by POST /variable-recurring-payments supplying the consentToken, amount, currency, and paymentIdempotencyId; each call initiates one payment within the mandate constraints","Monitor mandate health with GET /variable-recurring-payment-consents/{consentId}; check RemainingAmount and NextResetDate on periodic limits and alert before limits are exhausted"],"gotchas":["Yapily VRP is only available for UK institutions (VRP is UK-specific); attempting to use VRP endpoints against EU institutions returns a 400 — use periodic payments for EU recurring use cases instead","The consentToken has its own expiry distinct from the mandate ValidToDateTime; refresh the token via POST /tokens before it expires to avoid payment failures mid-mandate","A mandate with remaining PeriodicLimit capacity may still fail if the ASPSP's real-time fraud engine declines the individual payment; implement exponential backoff retry logic and surface a clear error to the user when a payment within a valid mandate is declined"],"contributor":"waymark-seed","created":"2026-06-12T12:28:18.114Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:26.626Z"},"url":"https://mcp.waymark.network/r/b5f95136-61b5-4f67-94ef-83724fadb558"}