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
Known 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
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp