Recurring Transactions
Description
Recurring transactions are a part of everyday life, however due to the complexities of failure handling and customer communication, Synapse does not directly manage scheduled transactions outside of loan repayments.
Basic Patterns
Pick a task scheduler and runner
Record scheduled transactions and their current state (future, pending, executed, etc) in a datastore of some form
Make sure scheduled tasks are self healing (ie processes will automatically recover from intermittent failure)
Ensure background tasks are interruptible and atomic
Pick a priority:
Maximize success with fan out patterns (such as 1 scheduled transaction per task)
Minimize cost with batch transactions (such as all transactions in a single task)
Enforce idempotency within app and Synapse for scheduled transactions
Creating a Recurring/Scheduled Transaction
Collect payment details
Nickname
Sender
Receiver
Amount
Frequency
Start Date
End Date
Display Transaction Disclosures
Express authorization language (e.g., “I authorize <Platform> to debit my account")
Amount of transaction
The date of transaction
Account identifiers for both the accounts involved (account/routing, bank name with last 4 digits of account, etc.)
Revocation language (for payments scheduled in advance)
Cancellation Details for future transactions
Frequency (daily, weekly, monthly) and timing of transactions (start/end date)
Store recurring transaction details in data store
Canceling a Recurring Transaction
Display list of Recurring Transactions (Platform DB)
Name
Amount
Frequency
Next transaction Date
Select recurring transaction
Display full recurring transaction details
Name
Amount
Frequency
Start Date
End Date
Recipient
Sender
Next transaction date
Required Language: This is an authorized recurring debit from your account
Collect Affirmative Consent from the user
Delete the recurring transaction
Delete all upcoming transactions
Executing a Scheduled Transaction
Notify user of upcoming transaction 7 Days in advance
Transaction Date
Recurring Transaction Nickname
Amount
Recipient
Sending Account
Notify user of upcoming transaction 24 hours prior to executing the transaction
Transaction Date
Recurring Transaction Nickname
Amount
Recipient
Sending Account
Current Account Balance
If the transaction exceeds the current balance
Get Account Balance (if external account) immediately before creating the transaction
Pull from 3rd party aggregator
Notify user via email that the scheduled transaction was executed
Transaction Date
Recurring Transaction Nickname
Amount
Recipient
Sent Account
Current Account Balance
Notes:
To reduce ACH returns, always check the balance before initiating a scheduled ACH debit request
Last updated