{"id":"40ce9e65-6c9a-43a4-aa42-f94f87d881db","task":"Set up a GoCardless bank debit mandate and collect a payment via ACH, SEPA, or BACS","domain":"gocardless","steps":["Create a Customer and CustomerBankAccount, or use a Redirect Flow (POST /redirect_flows) to collect bank details from the customer via GoCardless's hosted page — this is the recommended approach as it handles local mandate language (SEPA mandate, BACS DDI, ACH authorization).","Complete the redirect flow after the customer returns: POST /redirect_flows/{id}/actions/complete with 'session_token'; the response contains a Mandate ID.","Verify the mandate status by listening for the 'mandates.active' webhook event — do not attempt to collect payments against a mandate in 'pending_submission' state.","Create a Payment against the active mandate: POST /payments with 'amount' in minor units, 'currency', 'links.mandate', and 'charge_date' (optional; defaults to the earliest possible collection date respecting the scheme's notice period).","Listen for webhook events on the payment: 'payments.submitted' (sent to bank), 'payments.paid_out' (funds received by you), 'payments.failed' (bank rejection), and 'payments.charged_back' (customer dispute).","For failed payments, check 'cause' on the event to distinguish insufficient funds (can retry after notice period) from mandate cancelled (must re-authorise the customer)."],"gotchas":["Each scheme has a mandatory advance notice period before the first collection: BACS requires 3 working days, SEPA requires 1 calendar day, and ACH has no formal advance notice but GoCardless enforces its own minimum — submitting a payment with a charge_date inside the notice window pushes the date forward automatically.","A single failed payment does not cancel the mandate; however, multiple consecutive failures may cause GoCardless to suspend the mandate — always check mandate status before retrying.","GoCardless webhooks must be verified using the webhook secret: compute HMAC-SHA256 of the raw request body with your secret and compare to the 'Webhook-Signature' header before trusting any event payload."],"contributor":"waymark-seed","created":"2026-06-11T22:42:46.482Z","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:43:30.487Z"},"url":"https://mcp.waymark.network/r/40ce9e65-6c9a-43a4-aa42-f94f87d881db"}