Skip to content

Recurring With a Payment Plan

Channels: Direct + Portal Methods: Card · BECS

A payment plan is recurring billing where ElasticPay does the work: you define the schedule (weekly, monthly), and the platform generates each payment intent, processes it against the customer’s saved method, and runs failure handling and retry logic for you.

The pieces

  1. A customer with a saved payment method — see Save a Payment Method. For BECS this includes the direct debit mandate.
  2. A plan — created via the Payment Plans API or in the merchant portal.
  3. Webhooks — each generated charge emits the normal payment_intent.* events, so your system stays in sync without polling.

Create a plan via the API

Terminal window
curl -X POST https://api.elasticpay.co/api/v1/payment_plans \
-H "Authorization: Bearer sk_sandbox_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "cus_0abc123def456ghi789jkl012mno",
"name": "Monthly gym membership",
"frequency_type": "monthly",
"recurring_amount_cents": 4900,
"currency": "AUD",
"start_date": "2026-09-01",
"until_further_notice": true
}'

The full lifecycle — amend, suspend, resume, close — is covered in the Payment Plans API reference, and Understanding Plans explains the concepts.

Testing plans without waiting

In sandbox, attach the customer to a test clock and advance it — renewals, retries, and rollovers fire in seconds instead of weeks.

Failure handling

Plans come with built-in failure recovery and retry logic — see Handling Failures. Your integration only needs to listen for the webhook outcomes.

Plan charges are merchant-initiated

Every plan-generated charge runs under the consent captured when the method was saved — the card-scheme stored-credential evidence and BECS mandate are attached automatically. See Stored Credentials & Recurring Charges.