Scheduled Transfers enable seamless integration of future-dated payment functionality into your application. It supports both recurring and one-off payments with full control over scheduling and execution. The feature is compatible with SEPA Credit Transfers (SCT) and SEPA Instant Credit Transfers (SCT Inst), offering flexibility to accommodate a wide range of payment scenarios.
This API replaces the previous Standing Orders and Timed Orders functionality, expanding capabilities to cover a broader range of scheduled payment scenarios with improved control and reliability. See the overview page to learn more about SEPA and the different types of SEPA payment schemes.
You must implement the following features in order to use scheduled transfers in your solution:
- Device binding
- Strong Customer Authentication
- Verification of a Payee
- SEPA Credit Transfers
- SEPA Instant Credit Transfers
A Scheduled Transfer functions similarly to a standard SEPA Credit Transfer (SCT) or SEPA Instant Credit Transfer (SCT Instant), depending on the selected transfer type. You should allow end users to choose between SCT and SCT Instant when configuring a scheduled transfer. Due to regulatory requirements, offering only SCT is not permitted. You must support SCT Instant as well.
Before a transfer can be scheduled, the customer must complete the Verification of Payee (VoP) process to confirm the recipient's account details. Once verified, the frontend should guide the user through setting up the transfer, which initiates a change request. The customer then authorizes the request using either SMS OTP or a device signing challenge.
The customer logs into their account and initiates a scheduled transfer. As part of this process, they provide the recipient's name and IBAN, which triggers the VoP check.
The customer selects the transfer type (SCT or SCT Inst) and inputs relevant details such as:
- Amount
- Execution schedule (e.g., recurring or one-off)
- Execution date
- Verification of Payee ID
The customer authorizes the scheduled transfer using two-factor authentication (2FA) via SMS One-Time Password (OTP), or Device signing challenge
Before each scheduled execution, Solaris performs a real-time account check, including:
- Validation of
available_balance - Account status (must be
ACTIVE)
- Validation of
If validations pass, Solaris executes the transfer. The transaction is booked on the customer’s account with one of the following booking types based on previous chosen method:
SEPA_CREDIT_TRANSFERorSEPAInstantCreditTransfer
Schedule transfers have the same transaction type and booking type as a standard SCT and SCT Instant, which is SEPA_CREDIT_TRANSFER or SEPAInstantCreditTransfer respectively.
- The execution_schedule is set to
ONE-TIME. - For one-off transfers,
active_fromis the single execution date. - The
active_toproperty is not required. - The transfer status changes from
ACTIVEtoCONCLUDEDimmediately after execution.
- The execution_schedule is set to "WEEKLY" , "EVERY_TWO_WEEKS" , "MONTHLY" , "QUARTERLY" , "EVERY_SIX_MONTHS" or "ANNUALLY" .
- A scheduled transfer is executed on the date defined in the
active_fromfield. - For recurring transfers, the transfer is executed on the last day of each recurrence interval, starting from
active_from. - When creating a recurring transfer, the customer can set an
active_todate to specify when it should stop. Based on thisactive_todate,the scheduled transfer transitions fromACTIVEtoCONCLUDED.
In the event of a scheduled transfer execution failure:
- No booking will be recorded on the customer’s account.
- For regular SEPA Credit Transfers (SCT), the transfer status will be set to
declined, and theSEPA_CREDIT_TRANSACTION_DECLINEDwebhook will be issued. - For instant SEPA Credit Transfers (SCT Inst), the transfer status will be set to
FAILED, accompanied by theINSTANT_SEPA_CREDIT_TRANSFER_FAILEDwebhook. - Failed scheduled transfers will not be retried; the schedule will continue with the next execution as specified in the execution schedule.
- For transfers designated as
ONE-TIME, a failure will immediately result in the scheduled transfer status being updated toCONCLUDED, with no further retry attempts.
A scheduled transfer may fail for various reasons. Depending on whether the transfer is a regular or instant SEPA Credit Transfer, the appropriate webhook will be sent. The specific reason for failure will be detailed in the failure_reason property.
Typical causes of transfer decline include:
- The target account is blocked, preventing transactions.
- The source account is blocked, preventing transactions.
- Insufficient funds to complete the transfer.
- The target account is closed.
- The source account is closed.
Customers can cancel an existing scheduled transfer at any time using the PATCH Cancel a scheduled transfer endpoint. In rare cases, Solaris Customer Support manually cancels scheduled transfers, such as during account closure.
This action requires Strong Customer Authentication (SCA) through the change request process.
Customers can modify the details of an existing, active scheduled transfer using the PATCH Update a scheduled transfer endpoint.
The request body allows updating one or more of the following optional fields:
amount: The new transaction amount (value in Euro cents and currencyEUR).description: The updated textual reference or purpose of the transfer.active_to: The updated expiration date (YYYY-MM-DD). Solaris executes the final transfer on or before this date.
You can only modify amount, description, and active_to. If the customer needs to change the recipient (IBAN), the transfer scheme (SCT vs. SCT Inst), or the recurrence interval, they must cancel the existing scheduled transfer and create a new one.
- Initiate the update: Call
PATCH /v1/accounts/{account_id}/scheduled_transfers/{id}with the modified attributes. - Authorize the change request: The endpoint returns a
202 Acceptedresponse with achange_requestobject. The customer must authorize the challenge using their registered authentication method (SMS OTP or device signing challenge). - Receive the outcome webhook: Once the customer completes or fails the challenge, Solaris emits the
SCHEDULED_TRANSFER_UPDATEDwebhook:UPDATE: The customer successfully authorized the change request. The webhook payload contains the updated fields and the recalculatednext_execution_date.FAILURE: The customer rejected the challenge, the challenge expired, or authentication failed. The webhook payload contains areasonexplaining why Solaris could not apply the update.
A scheduled transfer can have the following statuses:
AUTHORIZATION_REQUIRED : You triggered the creation of a scheduled transfer, but the customer has not yet approved it using two-factor authentication (2FA) via an SMS OTP or a device signing challenge.
ACTIVE : The customer completed the change request process, and the scheduled transfer is actively running.
CONCLUDED : The scheduled transfer reached its final execution date as defined in active_to (for recurring transfers), or Solaris executed a ONE-TIME scheduled transfer on its active_from date.
CANCELED : You or Solaris canceled the scheduled transfer.
Solaris sends a SCHEDULED_TRANSFER_STATUS_CHANGED webhook when the scheduled transfer status changes to ACTIVE, CONCLUDED, or CANCELED.
Solaris recommends subscribing to the following webhook events to automate your processes. For detailed instructions on implementing Solaris webhooks, check the webhooks documentation.
SCHEDULED_TRANSFER_STATUS_CHANGED: Solaris sends this webhook when the status of the scheduled transfer changes toACTIVE,CONCLUDED, orCANCELED.SCHEDULED_TRANSFER_UPDATED: Solaris sends this webhook when a scheduled transfer update completes (type: UPDATEwith the modified attributes) or fails (type: FAILUREwith a rejection reason).SEPA_CREDIT_TRANSACTION_DECLINED: Solaris sends this webhook when a regular SCT scheduled transfer execution fails, specifying the schedule ID inschedule_idand the failure reason inrejection_reason.INSTANT_SEPA_CREDIT_TRANSFER_FAILED: Solaris sends this webhook when an SCT Instant scheduled transfer execution fails, specifying the schedule ID inschedule_idand the failure reason inrejection_reason.INSTANT_SEPA_CREDIT_TRANSFER_EXECUTED: Solaris sends this webhook when it successfully executes an SCT Instant scheduled transfer, specifying the schedule ID inschedule_id.BOOKING: Solaris sends this webhook whenever a successful execution creates a booking on the account.
To implement scheduled transfers, integrate the following endpoints in your solution: