Direct debit
Recurring charges: POST /v1/mandates, then GET /v1/mandates until succeeded, then POST /v1/mandates/{mandate_id}/debits.
Create returns processing. Poll GET (or wait for mandate.succeeded) before debiting. Debit while pending returns HTTP 409.
After cancel, create starts a fresh mandate. Cancelling one mandate also cancels other local rows that share the same upstream MandateId.