NAV
  • The Form3 Staging Environment
  • Transaction Simulator
  • Debug Endpoints
  • Upcoming Features
  • Staging Release Log
  • The Form3 Staging Environment

    Form3 Staging is a sandbox environment to try out the Form3 API, validate and debug your implementation.

    It closely resembles Form3's production environment, but isn't connected to any payment schemes. This means it doesn't support real-money transactions.

    Instead, the staging environment offers a transaction simulator that allows you to send and receive test transactions, as well as trigger a wide range of scenarios to make sure your client implementation handles them correctly.

    Additionally, the environment exposes debug endpoints to help you spot errors in your implementation.

    New features and changes to our services are deployed in the staging environment before being released into production. This gives you the chance to implement with new features and make sure your software is ready once an update reaches the production environment.

    Endpoint Connection

    The base URL for the staging environment is https://api.staging-form3.tech. Like with our production environment, you have to use TLS 1.2 or greater to connect to the API endpoints.

    Configuration

    Credentials

    Staging and production are two separate environments that require separate sets of authentication credentials. This means that the request signing key pairs (or, if you're using deprecated OAuth, the client ID and client secret) that you use for the staging environment during implementation will not carry over to the production environment once you go live.

    Contact your Form3 implementation manager to acquire credentials and set up your access to the staging environment.

    Organisation ID

    You will be issued an organisation ID when getting access to the staging environment. You can use the same organisation ID in staging and production, but different setups are also possible.

    User permissions

    When getting access to the staging environment, your organisation has one admin user with all possible permissions set up. You can create additional users with limited permissions if you prefer, see our tutorial on how to do that.

    Sort codes and BICs

    The staging environment performs sort code/BIC validation the same way the production environment does. This means that you will need a valid sort code or BIC to send payments in the staging environment.

    FPS Direct and Bacs

    Our sort code validation checks debtor and beneficiary sort codes on outbound payments against the Extended Industry Sorting Code Directory (EISCD). This mechanism ensures that you send payments to and from existing sort codes.

    For customers that already have one or several sort codes or BICs, we recommend you also use these in staging. Contact your implementation manager to have your codes configured in the staging environment.

    If you don't have a live sort code yet, your implementation manager can assign you a dummy sort code. Using that code, you can send payments to your own accounts that you have registered with our Account API, but not to accounts with other sort codes.

    FPS Indirect

    For new FPS Indirect customers, we will assign you a sort code to use with the FPS Indirect simulator. This codes may change in production as you go live.

    Validation API

    The Validation API allows you to check bank IDs and account number for validity. Currently only UK sort codes and account numbers are supported and checked against the EISCD.

    The EISCD file in the staging environment is frequently updated, however there can sometimes be a delay to propagate new sort codes to the staging environment.

    Transaction Simulator

    We provide simulators for all supported payment schemes. Talk to your Form3 contact about getting access to the scheme simulator for your intergration.

    FPS Indirect via Starling Simulator

    FPS Indirect uses the Starling FPS simulator. It offers a number of test accounts that will accept or reject payments sent to them. See the tables below for a list of available test accounts.

    The simulator allows you to send transactions between two accounts to test both the sending and receiving logic of your integration. This approach also supports returns.

    Outbound payments

    Accounts that will accept valid transactions:

    Account Number Sort Code
    00004588 203002
    00027944 203002
    58110244 204514
    60282377 204514
    99993193 166051
    87889196 166051

    Account that will reject transactions:

    Account Number Sort Code
    00004900 203002
    00028000 203002
    58110250 204514
    60282380 204514
    99993200 166051
    87889200 166051

    Different error codes can be triggered for rejected payments. Use the syntax rejectCode:nnnn in the reference attribute of the Payment resource, where nnnn represents the 4-digit scheme error code you want to trigger.

    If no error code is specified, 1114 – "Beneficiary Sort Code/Account Number unknown" will be used. Below is a list of supported error codes. Note that some error codes will trigger a automatic retry of the payment as a Future Dated Payment (FDP):

    Code Description Retried as FDP
    1100 Other No
    1114 Beneficiary Sort Code/Account Number unknown No
    1160 Beneficiary Account closed No
    1161 Beneficiary Account stopped No
    1162 Beneficiary Account Name does not match Beneficiary Account Number No
    1163 Account cannot be identified without data in Reference Information field No
    1164 Reference Information is incorrect No
    1167 Beneficiary deceased No
    1168 Fraudulent payment suspected No
    9909 Central Infrastructure System Malfunction Yes
    9910 Direct Receiver’s system not logged on Yes
    9911 Direct Receiver’s system timed out Yes
    9912 Direct Receiver’s system not available Yes
    9913 Duplicate FPID Yes

    Inbound payments

    For triggering inbound payments from accounts other than your own as well as to create a reversal for an inbound payment, ask your Form3 implementation manager.

    FPS Direct Simulator

    The FPS Direct simulator uses Form3's own simulator of the FPS scheme. It supports a large number of simulator scenarios that can be triggered by sending outbound payments with a certain amount. See the table below for a list of supported simulator scenarios.

    The simulator does not route payments. This means it does not support sending payment from one of your accounts to another one.

    The simulator resembles the actual FPS scheme as closely as possible, however, there are a few small differences:

    Supported Scenarios

    Trigger Amount Scenario
    13.00 Outbound payment will be accepted
    90.00 Outbound payment will be rejected, scheme_status_code field of Payment Submission resource will be populated with 1177.
    99.10 Outbound payment will be accepted after being soft-rejected and retried by Form3 as a ForwardDatedPayment
    204.00 Outbound payment will be accepted, but with redirection of funds
    208.00 Outbound payment will be conditionally accepted
    216.16 Outbound payment will be rejected - unknown sortcode or account
    600.00 Outbound payment will be accepted and a separate inbound payment will be generated. The beneficiary_party and debtor_party sections of the inbound payment are switched from the outbound payment.

    Supports both successful and failed inbound payments. Use a non-existing account_number in the debtor_party section of the outbound payment to trigger a failed inbound payment.

    Supports SIP, SOP, FDP payments via the scheme_payment_type field of the outbound Payment resource.
    603.00 Outbound payment is accepted and a separate inbound POO payment is generated. The beneficiary_party and debtor_party sections of the inbound payment are switched from the outbound payment.

    There is a 50% chance an fx field is included in the inbound Payment resource.
    640.00 Outbound payment will be accepted and an inbound return will be generated for the outbound payment.
    855.00 Outbound payment is accepted and a separate inbound payment with amount 855.00 is generated. An inbound reversal is generated for the inbound payment.

    The beneficiary_party and debtor_party sections of the inbound payment are switched from the outbound payment.
    1009.71 Outbound payment will be accepted and an inbound Unsolicited Message of type Service status change (USM-971) is generated.
    1009.72 Outbound payment will be accepted and an inbound Unsolicited Message of type FPS Institution and Third Party Beneficiary status change (USM-972) is generated.
    1009.73 Outbound payment will be accepted and an inbound Unsolicited Message of type Settlement Risk - Net Sender Threshold Status Change (USM-973) is generated.
    1009.74 Outbound payment will be accepted and an inbound Unsolicited Message of type Net Sender Cap Status (USM-974) is generated.
    1009.75 Outbound payment will be accepted and an inbound Unsolicited Message of type Settlement Individual Transaction Limit Change (USM-975) is generated.
    1009.76 Outbound payment will be accepted and an inbound Unsolicited Message of type Security Transaction Limit Change (USM-976) is generated.
    1009.77 Outbound payment will be accepted and an inbound Unsolicited Message of type Net Sender Threshold Change (USM-977) is generated.
    1009.78 Outbound payment will be accepted and an inbound Unsolicited Message of type Net Sender Cap Change (USM-978) is generated.
    1009.79 Outbound payment will be accepted and an inbound Unsolicited Message of type Settlement Status (USM-979) is generated.
    1009.80 Outbound payment will be accepted and an inbound Unsolicited Message of type Scheme Return Payment Failure (USM-980) is generated.
    1009.81 Outbound payment will be accepted and an inbound Unsolicited Message of type ASPM Alert Message (USM-981) is generated.

    Match Trigger Payments and Triggered Transactions

    To match trigger payments to triggered inbound transactions, use the reference field in the Payment resource of the trigger payment. Your reference will appear in the reference field of the inbound Payment resource that has been triggered as part of a scenario.

     FPS Scheme Reports

    The FPS Direct simulator supports testing of the Report API. An inbound dummy report is created every business day shortly after midnight. This includes the creation of a Report resource and a Report Admission resource. To be notified when the report is admitted, subscribe to the created event of Report Admission resources.

    Speak to your Form3 implementation manager to ensure reports are enabled for your organisation in the Staging environment.

    For more information on reports, see our Report tutorial.

    Bacs Simulator

    The Bacs simulator uses Form3's own simulator of the Bacs scheme. It supports a large number of simulator scenarios that can be triggered by sending outbound payments with a certain amount. See the table below for a list of supported simulator scenarios.

    The simulator does not route payments. This means it does not support sending payment from one of your accounts to another one.

    Supported Scenarios

    Trigger Amount Scenario
    13.00 Outbound payment will be accepted
    600.00 Outbound payment will be accepted and a separate inbound payment will be generated. The beneficiary_party and debtor_party sections of the inbound payment are switched from the outbound payment.

    Supports both successful and failed inbound payments. Use a non-existing account_number in the debtor_party section of the outbound payment to trigger a failed inbound payment.
    640.00 Outbound payment will be accepted and an inbound return will be generated for the outbound payment.
    700.00 Outbound payment will be accepted and an inbound Direct Debit of type DirectDebitFirst is generated.

    The beneficiary_party and debtor_party sections of the inbound Direct Debit are the same as in the outbound payment.

    Supports both successful and failed inbound Direct Debits. Use a non-existing account_number in the debtor_party section of the outbound payment to trigger a failed inbound Direct Debit.
    700.01 Outbound payment will be accepted and an inbound Direct Debit of type ClaimForUnpaidCheque is generated.

    The beneficiary_party and debtor_party sections of the inbound Direct Debit are the same as in the outbound payment.

    Supports both successful and failed inbound Direct Debits. Use a non-existing account_number in the debtor_party section of the outbound payment to trigger a failed inbound Direct Debit.
    705.00 Outbound payment will be accepted and an inbound Direct Debit reversal is generated.

    The reversal can be matched to a inbound Direct Debit, see details below. Unmatched reversals are also supported.

    The scheme code in the scheme_status_code field of the Direct Debit Reversal Admission resource can be either Q or R, the value is chosen randomly.
    705.01 Outbound payment will be accepted and an inbound Direct Debit reversal is generated.

    The reversal can be matched to a inbound Direct Debit, see scenario 705.00 for more details. Unmatched reversals are also supported.

    The scheme code in the scheme_status_code field of the Direct Debit Reversal Admission resource is fixed and set to Q.
    705.02 Outbound payment will be accepted and an inbound Direct Debit reversal is generated.

    The reversal can be matched to a inbound Direct Debit, see scenario 705.00 for more details. Unmatched reversals are also supported.

    The scheme code in the scheme_status_code field of the Direct Debit Reversal Admission resource is fixed and set to R.
    750.00 Outbound payment will be accepted and an inbound mandate of type DirectDebitInstructionNew is generated.

    The beneficiary_party and debtor_party sections of the inbound mandate are the same as in the outbound payment.

    Supports both successful and failed inbound mandates. Use a non-existing account_number in the debtor_party section of the outbound payment to trigger a failed inbound mandate.
    751.00 Outbound payment will be accepted and an inbound mandate of type DirectDebitInstructionCancel is generated.

    The beneficiary_party and debtor_party sections of the inbound mandate are the same as in the outbound payment.

    Supports both successful and failed inbound mandates. Use a non-existing account_number in the debtor_party section of the outbound payment to trigger a failed inbound mandate.
    752.00 Outbound payment will be accepted and an inbound mandate of type DirectDebitInstructionConvert is generated.

    The beneficiary_party and debtor_party sections of the inbound mandate are the same as in the outbound payment.

    Supports both successful and failed inbound mandates. Use a non-existing account_number in the debtor_party section of the outbound payment to trigger a failed inbound mandate.
    854.03 Outbound payment will be accepted and an inbound payment reversal is generated

    The reversal can be matched to a previous inbound payment, see details below. Unmatched reversals are also supported.

    The scheme code in the scheme_status_code field of the Payment Reversal Admission resource can be either Q, R, or S, the value is chosen randomly.
    854.06 Outbound payment will be accepted and an inbound payment reversal is generated

    The reversal can be matched to a previous inbound payment, see scenario 854.03 for more details. Unmatched reversals are also supported.

    The scheme code in the scheme_status_code field of the Payment Reversal Admission resource will be fixed and set to Q.
    854.07 Outbound payment will be accepted and an inbound payment reversal is generated

    The reversal can be matched to a previous inbound payment, see scenario 854.03 for more details. Unmatched reversals are also supported.

    The scheme code in the scheme_status_code field of the Payment Reversal Admission resource will be fixed and set to R.
    854.08 Outbound payment will be accepted and an inbound payment reversal is generated

    The reversal can be matched to a previous inbound payment, see scenario 854.03 for more details. Unmatched reversals are also supported.

    The scheme code in the scheme_status_code field of the Payment Reversal Admission resource will be fixed and set to S.
    4000.19 Can be triggered by sending a Direct Debit or a payment. Sent transaction will be accepted. An inbound Direct Debit return is created, both matched & unmatched scenarios are possible, see details below.

    Generating matched or unmatched inbound payment reversals using 854.03 triggering amount

    You can use the 854.03 scenario to create both matched and unmatched inbound payment reversals in Bacs. See the steps below for how to create each scenario.

    Matched reversals

    1. Send an outbound payment with trigger amount 600.00, choose a reference value (i.e. REVERSAL-0001) and wait until the inbound payment is received.
    2. Send another outbound payment, this time with trigger amount 854.03. Use the same beneficiary and debtor account details, and the same value in the reference field (i.e. REVERSAL-0001).
    3. Receive an inbound matched reversal for the inbound payment that was triggered in step 1.

    Unmatched reversals

    1. Send an outbound payment with trigger amount 854.03.
    2. Receive an inbound unmatched reversal for which the Payment resource (but no Admission resource) will be created automatically.

    Generating matched or unmatched Direct Debit returns using 4000.19 triggering amount

    You can use the 4000.19 scenario to create both matched and unmatched inbound Direct Debit returns in Bacs. See the steps below for how to create each scenario.

    Matched returns

    1. Send an outbound Direct Debit with amount 4000.19 and scheme payment type set to DirectDebitFirst. Choose a reference value (i.e. RETURN-0001), note that all letters need to be upper-case. Wait until the status of the Direct Debit Submission resource switches to delivery_confirmed.
    2. Receive an inbound matched return for the outbound Direct Debit that was sent in step 1.

    Unmatched returns

    1. Send an outbound payment with trigger amount 4000.19.
    2. Receive an inbound unmatched Direct Debit return for which the Direct Debit resource (but no Admission resource) will be created automatically.

    Generating matched or unmatched inbound Direct Debit reversals using 705.00 triggering amount

    You can use the 705.00 scenario to create both matched and unmatched inbound Direct Debit reversals in Bacs. See the steps below for how to create each scenario.

    Matched reversals

    1. Send an outbound payment with trigger amount 700.00, choose a reference value (i.e. REVERSAL-0001) and wait until the inbound Direct Debit is received.
    2. Send another outbound payment, this time with trigger amount 705.00. Use the same beneficiary and debtor account details, and the same value in the reference field (i.e. REVERSAL-0001).
    3. Receive an inbound matched Direct Debit reversal for the inbound Direct Debit that was triggered in step 1.

    Unmatched reversals

    1. Send an outbound payment with trigger amount 705.00.
    2. Receive an inbound unmatched Direct Debit reversal for which the Direct Debit resource (but no Admission resource) will be created automatically.

    Bacs Cycle Time

    In the real world, Bacs uses a 3-day cycle to complete transactions: The transaction information is entered to the system on day 1, the transaction is processed on day 2 and the funds applied on day 3.

    The simulator attempts to model the behaviour of the real Bacs scheme as closely as possible. Transaction dates and restrictions around processing days are active. When receiving an inbound Bacs payment (by using the 600.00 scenario) on a Bacs working day, the scheme_processing_date of the Payment resource is set to the current date. For the inbound payment, this is Bacs day 2 - the same day Bacs provides you with information on inbound payments in the real world.

    Consequently, a Bacs return can only be processed on Bacs day 3 of the original payment. This means if you trigger an inbound payment and immediately return it, the return will only be processed on the next Bacs working day and the return submission will remain in queued_for_delivery state until then.

    Batching and File Submission

    Bacs is a batched service, meaning that all transactions are collected by Form3 and sent to Bacs on specific times on working days. In the simulator, this batching happens once every minute between 7am Monday and 12am Saturday UK time.

    Scenario Triggers

    The simulator reacts to trigger payments immediately. This means that when a trigger payment is submitted and processed, any inbound transactions are created immediately.

    Match Trigger Payments and Triggered Transactions

    To match trigger payments to triggered inbound transactions, use the reference field in the Payment resource of the trigger payment. Your reference will appear in the reference field of the inbound Payment, Direct Debit, Mandate, or Claim resource that has been triggered as part of a scenario.

     Bacs Scheme Reports

    The Bacs simulator supports testing of the Report API. An inbound dummy report is created every business day shortly after midnight. This includes the creation of a Report resource and a Report Admission resource. To be notified when the report is admitted, subscribe to the created event of Report Admission resources.

    Speak to your Form3 implementation manager to ensure reports are enabled for your organisation in the Staging environment.

    For more information on reports, see our Report tutorial.

    SEPA Instant & SCT Direct Simulator

    The SEPA Direct simulator uses Form3's own simulator of the SEPA Instant and Credit Transfer schemes and gateway. It supports a large number of simulator scenarios that can be triggered by sending outbound payments with a certain amount. See the table below for a list of supported simulator scenarios.

    The simulator does not route payments. This means it does not support sending payment from one of your accounts to another one.

    Supported Scenarios

    Trigger amount Scenario Schemes
    13.00 Outbound payment will be accepted SEPA Instant & SCT
    90.00 Outbound payment will be rejected.

    The scheme_status_code field of the Submission resource will be set to AC04 for SEPA Instant, to R23 for SCT.
    SEPA Instant & SCT
    99.31 Outbound payment will be rejected.

    The scheme_status_code field of the Submission resource will be populated from the end_to_end_reference field of the Payment resource.
    SEPA Instant
    300.00 Outbound payment will be accepted, sending an outbound recall for the payment will generate a positive inbound recall decision SEPA Instant & SCT
    310.00 Outbound payment will be accepted, a following outbound recall for the payment will be accepted, no recall decision is generated SEPA Instant & SCT
    391.00 Outbound payment will be accepted, a following outbound recall for the payment will generate a negative recall decision SEPA Instant & SCT
    400.00 Outbound payment will be accepted. Generates an inbound payment and recall for that payment, any decision can then be made against the recall SEPA Instant & SCT
    400.01 Outbound payment will be accepted. Generates an inbound payment and a recall for that payment, an outbound positive recall decision will be rejected and an inbound recall reversal is generated in response. SEPA Instant & SCT
    600.00 Outbound payment will be accepted and a separate inbound payment will be generated. The beneficiary_party and debtor_party sections of the inbound payment are switched from the outbound payment.

    Supports both successful and failed inbound payments. Use a non-existing account_number in the debtor_party section of the outbound payment to trigger a failed inbound payment.
    SEPA Instant & SCT
    601.23 Outbound payment will be accepted and a separate inbound payment will be generated. The beneficiary_party and debtor_party sections of the inbound payment are switched from the outbound payment.

    Supports both successful and failed inbound payments. Use a non-existing account_number in the debtor_party section of the outbound payment to trigger a failed inbound payment.

    The amount field of the inbound payment will be populated from the end_to_end_reference field of the outbound Payment resource.
    SEPA Instant & SCT
    609.00 Outbound payment will be accepted and a separate inbound payment with amount 709.00 will be generated. The beneficiary_party and debtor_party sections of the inbound payment are switched from the outbound payment.

    Supports both successful and failed inbound payments. Use a non-existing account_number in the debtor_party section of the outbound payment to trigger a failed inbound payment.
    SEPA Instant
    640.00 Outbound payment will be accepted and an inbound return will be generated for the outbound payment. SCT
    855.00 Outbound payment is accepted. A separate inbound payment and an inbound reversal for that payment are generated. The reversal arrives with a slight delay. SEPA Instant
    1009.51 Outbound payment is accepted. Generates a Scheme Message of type Scheme participant unavailable SEPA Instant
    6000.00 Outbound payment is accepted. Generates an inbound Pre-Settlement (PSR) Report. SCT
    6000.01 Outbound payment is accepted. Generates an inbound Cycle Reconciliation (CRR) Report. SCT
    6000.02 Outbound payment is accepted. Generates an inbound Daily Reconciliation (DRR) Report. SCT
    6000.03 Outbound payment is accepted. Generates an inbound Monthly Statistical (MSR) Report. SCT
    6000.04 Outbound payment is accepted. Generates an inbound Monthly Reconciliation NRR Report. SCT

    Match Trigger Payments and Triggered Transactions

    To match trigger payments to triggered inbound transactions, use the end_to_end_reference field in the Payment resource of the trigger payment. Your reference will appear in the end_to_end_reference field of the inbound Payment resource that has been triggered as part of a scenario.

    FPS and SEPA - LHV Indirect Simulator

    The LHV Indirect simulator emulates Form3's Indirect Participant propositions for FPS and SEPA Instant and Credit Transfer in the Staging Environment. It supports simulator scenarios for both account management and payments. See the below sections for a list of all supported scenarios for the Account API and Payment API.

    Account Management

    The LHV Indirect simulator supports scenarios for creating and deleting bank account using Form3's Account API. These scenarios are triggered by providing a specific country code in the private_identification.country field of the Account resource. The following scenarios are supported:

    Scenario Country Code Description
    Create Account Success GB, FR Create an Account resource with trigger country code
    Account is created successfully
    Account Events resources generated for status changes
    Final status is confirmed, final routing_status is routable
    Create Account Failure Any code except GB, FR Create an Account resource with trigger country code
    Account creation fails
    Account Event resources generated for status changes
    Final status is failed, final routing_status is unroutable
    Delete Account Success All country codes Delete an existing account
    Account is deleted successfully
    Account Event resources generated for status changes
    Final status is confirmed, final routing_status is deleted

    Supported Payment Scenarios

    Trigger Amount Scenario Supported Schemes
    13.00 Outbound payment will be accepted SEPA Instant, SCT, FPS
    40.00 Outbound payment will be accepted and payment_scheme field is updated to INTERNAL SEPA Instant, SCT, FPS
    90.00 Outbound payment will be rejected. status_reason is NARR - Insufficient funds available. SEPA Instant, SCT, FPS
    91.00 Outbound payment will be rejected. status_reason is NARR - Faulty sender account [] SEPA Instant, SCT, FPS
    600.00 Outbound payment will be accepted and a separate inbound payment will be generated SEPA Instant, SCT, FPS
    640.00 Outbound payment will be accepted and an inbound return is generated for the payment, return_code is MS02 SCT & FPS

    Match Trigger Payments and Triggered Transactions

    To match trigger payments to triggered inbound transactions, use the end_to_end_reference field in the Payment resource of the trigger payment. Your reference will appear in the end_to_end_reference field of the inbound Payment resource that has been triggered as part of a scenario.

    SEPA Direct Debit

    The SEPA Direct Debit simulator emulates Form3's SEPA Direct Debit proposition in the Staging Environment. It supports several simulator scenarios that can be triggered by sending outbound Direct Debits with a certain amount. See the table below for a list of supported simulator scenarios.

    Supported Scenarios

    Trigger Amnount Scenario Description
    13.00 Direct Debit Submission Happy Path - pending Steps:
    1. Create Direct Debit resource with amount 13.00
    2. Create Direct Debit Submission resource

    Outcome:
    1. Direct Debit Submission succeeds, status reaches pending.
    13.01 Direct Debit Submission Happy Path - delivery confirmed Steps:
    1. Create Direct Debit resource with amount 13.01
    2. Create Direct Debit Submission resource

    Outcome:
    1. Direct Debit Submission succeeds, status immediately reaches delivery_confirmed.
    313.00: MD01
    313.01: MD02
    313.02: ED05
    313.03: AM02
    313.04: AM05
    Direct Debit Submission Unhappy Path - delivery fails, code depends on trigger amount Steps:
    1. Create Direct Debit resource with amount 313.0X
    2. Create Direct Debit Submission resource

    Outcome:
    1. Direct Debit Submission is submitted to scheme and fails.
    2. Direct Debit Submission status is set to delivery_failed
    2. Direct Debit Submission scheme_status_code field is set to the code listed with the trigger amount.
    370.00 Direct Debit Reversal Submission Unhappy Path - delivery fails with AM05 Steps:
    1. Create Direct Debit resource with amount 370.00
    2. Create Direct Debit Submission resource
    3. Create Direct Debit Reversal resource for the submitted Direct Debit
    4. Create Direct Debit Reversal Submission resource

    Outcome:
    1. Direct Debit Submission succeeds, status immediately reaches delivery_confirmed.
    2. Direct Debit Reversal Submission status is set to delivery_failed
    3. Direct Debit Reversal Submission scheme_status_code field is set to AM05.
    640.00 Direct Debit Return Admission Happy Path - 5 EUR charges Steps:
    1. Create Direct Debit resource with amount 640.00
    2. Create Direct Debit Submission resource
    3. Receive inbound Direct Debit Return

    Outcome:
    1. Direct Debit Submission succeeds, status immediately reaches delivery_confirmed
    2. Direct Debit Return resource is created
    3. Direct Debit Return Admission resource is created, status field is set to confirmed
    640.01: AC01
    640.02: AC04
    640.03: AC06
    640.04: AC13
    640.05: AG01
    640.06: AG02
    640.07: AM04
    640.08: AM05
    640.09: MD01
    640.10: MD06
    640.11: MD07
    640.12: MS02
    640.13: MS03
    640.14: RC01
    640.15: RR01
    640.16: RR02
    640.17: RR03
    640.18: RR04
    640.19: SL01
    640.20: BE05
    Direct Debit Return Admission Happy Path - return_code depends on trigger amount Steps:
    1. Create Direct Debit resource with amount 640.XX
    2. Create Direct Debit Submission resource
    3. Receive inbound Direct Debit Return

    Outcome:
    1. Direct Debit Submission succeeds, status immediately reaches delivery_confirmed
    2. Direct Debit Return resource is created, the return_code field contains the code listed with the trigger amount
    3. Direct Debit Return Admission resource is created, status field set to confirmed
    660.00: AC01
    660.01: AC04
    660.02: AC06
    660.03: AC13
    660.04: AG01
    660.05: AG02
    660.06: AM04
    660.07: AM05
    660.08: CNOR
    660.09: DNOR
    660.10: FF01
    660.11: MD01
    660.12: MD02
    660.13: MD07
    660.14: MS02
    660.15: MS03
    660.16: RC01
    660.17: RR01
    660.18: RR02
    660.19: RR04
    660.20: SL01
    660.21: BE05
    Direct Debit Decision Admission Happy Path - reason_code depends on trigger amount Steps:
    1. Create Direct Debit resource with amount 660.XX
    2. Create Direct Debit Submission resource
    3. Receive inbound Direct Debit Decision

    Outcome:
    1. Direct Debit Submission succeeds, status reaches pending
    2. Direct Debit Decision resource is created, the reason_code field contains the code listed with the trigger amount
    3. Direct Debit Decision Admission resource is created, status field set to confirmed
    4. Direct Debit Submission status field changes to delivery_failed
    940.00 Direct Debit Return Admission Exception Scenario - No Direct Debit Steps:
    1. Create Direct Debit resource with amount 940.00
    2. Create Direct Debit Submission resource
    3. Receive inbound Direct Debit Return

    Outcome:
    1. Direct Debit Submission succeeds, status immediately reaches delivery_confirmed
    2. Direct Debit placeholder resource is created
    3. Direct Debit Return resource related to placeholder Direct Debit is created
    4. Direct Debit Return Admission resource is created, status field set to confirmed
    960.00 Direct Debit Decision Admission Exception Scenario - No Direct Debit Steps:
    1. Create Direct Debit resource with amount 960.00
    2. Create Direct Debit Submission resource
    3. Receive inbound Direct Debit Decision

    Outcome:
    1. Direct Debit Submission succeeds, status immediately reaches delivery_confirmed
    2. Direct Debit placeholder resource is created
    3. Direct Debit Decision resource related to placeholder Direct Debit is created
    4. Direct Debit Decision Admission resource is created, status field set to confirmed

    Debug Endpoints

    Request signing

    The HTTP signature debug endpoint can be used to verify if a client is correctly signing HTTP requests. It returns validation messages that are not available in the production environment for security reasons.

    See our tutorial for more information on how to use the request signing debug endpoint.

    Upcoming Features

    This section contains information about upcoming changes and features that are available in our test environment but not yet in the production environment.

    Add limit_check_pending and limit_check_passed values to submission status

    Form3 will introduce the limit_check_pending and limit_check_passed values for the status field the following resources:

    The update will be made available in our Staging Environment soon and will be made available in Production shortly after.

    Add new pagination method for List calls of Audit API

    Form3 introduces a new way to navigate the pages of List call results in the Audit API.

    Instead of relying on page numbers, we are using a cursor-based approach. If the results to a List request don't fit on a single page (defined by the page[size] URL parameter), the response message contains the URL to the next page in the links.next field. The URL contains the new page[after] URL parameter which defines where the next page begins.

    For more information, see the Audit API list call documentation.

    At the same time, Form3 continues to support the existing page[number] URL parameter. The API Documentation refers to this parameter as deprecated to encourage the use of the new method.

    The update is available in our Staging Environment now and will be made available in Production in the near future.

    Staging Release Log

    This section contains a list of past updates to the staging environment. You can subscribe to updates on this release log using our Staging Releases RSS Feed.

    Note that the production environment has its own release log.

    Change types

    A change can be of the following types: breaking change, new feature, improvement and bug fix.

    See the table below for more information on the categories.

    Change Type Description
    Breaking Change This change requires customers to update their integration. These changes are very rare.
    New Feature Introduces a new feature or functionality.
    Improvement Improves an existing functionality.
    Bug Fix Fixes an existing functionality that was not working as expected.

    May 4, 2021

    BUG FIXES

    April 30, 2021

    IMPROVEMENTS

    April 29, 2021

    IMPROVEMENTS

    April 28, 2021

    IMPROVEMENTS

    BUG FIXES

    April 26, 2021

    IMPROVEMENTS

    BUG FIXES

    April 22, 2021

    BUG FIXES

    April 21, 2021

    IMPROVEMENTS

    April 19, 2021

    BUG FIXES

    April 16, 2021

    IMPROVEMENTS

    April 15, 2021

    IMPROVEMENTS

    April 14, 2021

    IMPROVEMENTS

    April 13, 2021

    IMPROVEMENTS

    April 12, 2021

    IMPROVEMENTS

    April 8, 2021

    IMPROVEMENTS

    BUG FIXES

    April 2, 2021

    BUG FIXES

    March 31, 2021

    IMPROVEMENTS

    March 30, 2021

    IMPROVEMENTS

    March 29, 2021

    IMPROVEMENTS

    March 26, 2021

    IMPROVEMENTS

    March 25, 2021

    IMPROVEMENTS

    BUG FIXES

    March 24, 2021

    IMPROVEMENTS

    March 22, 2021

    IMPROVEMENTS

    BUG FIXES

    March 19, 2021

    IMPROVEMENTS

    March 18, 2021

    IMPROVEMENTS

    March 16, 2021

    IMPROVEMENTS

    BUG FIXES

    March 15, 2021

    IMPROVEMENTS

    March 12, 2021

    BUG FIXES

    March 11, 2021

    BUG FIXES

    March 10, 2021

    IMPROVEMENTS

    BUG FIXES

    March 9, 2021

    IMPROVEMENTS

    March 8, 2021

    IMPROVEMENTS

    March 4, 2021

    IMPROVEMENTS

    March 3, 2021

    IMPROVEMENTS

    March 2, 2021

    IMPROVEMENTS

    March 1, 2021

    IMPROVEMENTS

    February 26, 2021

    IMPROVEMENTS

    February 25, 2021

    IMPROVEMENTS

    February 24, 2021

    NEW FEATURES

    February 23, 2021

    NEW FEATURES

    IMPROVEMENTS

    February 22, 2021

    NEW FEATURES

    February 19, 2021

    IMPROVEMENTS

    February 18, 2021

    IMPROVEMENTS

    BUG FIXES

    February 16, 2021

    IMPROVEMENTS

    February 12, 2021

    BUG FIXES

    February 5, 2021

    IMPROVEMENTS

    BUG FIXES

    February 4, 2021

    IMPROVEMENTS

    January 29, 2021

    IMPROVEMENTS

    January 28, 2021

    IMPROVEMENTS

    January 27, 2021

    IMPROVEMENTS

    January 21, 2021

    IMPROVEMENTS

    January 20, 2021

    IMPROVEMENTS

    January 19, 2021

    IMPROVEMENTS

    January 18, 2021

    IMPROVEMENTS

    January 15, 2021

    IMPROVEMENTS

    January 11, 2021

    IMPROVEMENTS

    BUG FIXES

    January 7, 2021

    IMPROVEMENTS

    January 5, 2021

    IMPROVEMENTS

    December 22, 2020

    IMPROVEMENTS

    December 21, 2020

    NEW FEATURES

    IMPROVEMENTS

    BUG FIXES

    December 18, 2020

    BUG FIXES

    December 15, 2020

    BUG FIXES

    December 11, 2020

    IMPROVEMENTS

    BUG FIXES

    December 10, 2020

    IMPROVEMENTS

    BUG FIXES

    December 7, 2020

    BUG FIXES

    December 4, 2020

    IMPROVEMENTS

    November 30, 2020

    NEW FEATURES

    IMPROVEMENTS

    November 27, 2020

    IMPROVEMENTS

    November 25, 2020

    IMPROVEMENTS

    November 23, 2020

    IMPROVEMENTS

    November 20, 2020

    BUG FIXES

    November 18, 2020

    NEW FEATURES

    November 17, 2020

    IMPROVEMENTS

    November 16, 2020

    IMPROVEMENTS

    November 6, 2020

    IMPROVEMENTS

    November 5, 2020

    IMPROVEMENTS

    November 4, 2020

    IMPROVEMENTS

    November 3, 2020

    BUG FIXES

    November 2, 2020

    IMPROVEMENTS

    October 30, 2020

    IMPROVEMENTS

    October 29, 2020

    IMPROVEMENTS

    October 28, 2020

    BUG FIXES

    October 27, 2020

    BUG FIXES

    October 26, 2020

    IMPROVEMENTS

    October 23, 2020

    IMPROVEMENTS

    October 20, 2020

    IMPROVEMENTS

    October 19, 2020

    IMPROVEMENTS

    October 16, 2020

    IMPROVEMENTS

    October 15, 2020

    IMPROVEMENTS

    October 14, 2020

    IMPROVEMENTS

    October 13, 2020

    IMPROVEMENTS

    October 7, 2020

    IMPROVEMENTS

    October 6, 2020

    IMPROVEMENTS

    October 5, 2020

    IMPROVEMENTS

    October 2, 2020

    IMPROVEMENTS

    October 1, 2020

    IMPROVEMENTS

    BUG FIXES

    September 29, 2020

    IMPROVEMENTS

    BUG FIXES

    September 25, 2020

    IMPROVEMENTS

    September 24, 2020

    IMPROVEMENTS

    September 22, 2020

    IMPROVEMENTS

    BUG FIXES

    September 21, 2020

    IMPROVEMENTS

    BUG FIXES

    September 17, 2020

    BUG FIXES

    September 14, 2020

    IMPROVEMENTS

    September 11, 2020

    IMPROVEMENTS

    September 10, 2020

    BUG FIXES

    September 9, 2020

    IMPROVEMENTS

    BUG FIXES

    September 4, 2020

    IMPROVEMENTS

    September 2, 2020

    IMPROVEMENTS

    BUG FIXES

    September 1, 2020

    BUG FIXES

    August 28, 2020

    IMPROVEMENTS

    August 27, 2020

    IMPROVEMENTS

    August 26, 2020

    IMPROVEMENTS

    August 25, 2020

    IMPROVEMENTS

    August 24, 2020

    BUG FIXES

    August 20, 2020

    IMPROVEMENTS

    BUG FIXES

    August 19, 2020

    IMPROVEMENTS

    August 18, 2020

    IMPROVEMENTS

    BUG FIXES

    August 17, 2020

    BUG FIXES

    August 14, 2020

    IMPROVEMENTS

    August 13, 2020

    NEW FEATURES

    IMPROVEMENTS

    August 12, 2020

    IMPROVEMENTS

    August 7, 2020

    IMPROVEMENTS

    August 6, 2020

    IMPROVEMENTS

    August 5, 2020

    IMPROVEMENTS

    August 3, 2020

    IMPROVEMENTS

    July 31, 2020

    NEW FEATURES

    IMPROVEMENTS

    July 30, 2020

    IMPROVEMENTS

    July 28, 2020

    IMPROVEMENTS

    July 27, 2020

    NEW FEATURES

    July 24, 2020

    NEW FEATURES

    IMPROVEMENTS

    July 23, 2020

    IMPROVEMENTS

    BUG FIXES

    July 22, 2020

    NEW FEATURES

    July 21, 2020

    IMPROVEMENTS

    July 20, 2020

    IMPROVEMENTS

    July 17, 2020

    IMPROVEMENTS

    July 16, 2020

    IMPROVEMENTS

    July 15, 2020

    IMPROVEMENTS

    July 9, 2020

    NEW FEATURES

    IMPROVEMENTS

    July 8, 2020

    NEW FEATURES

    July 7, 2020

    IMPROVEMENTS

    July 6, 2020

    NEW FEATURES

    June 26, 2020

    IMPROVEMENTS

    June 25, 2020

    IMPROVEMENTS

    June 23, 2020

    IMPROVEMENTS

    June 22, 2020

    IMPROVEMENTS

    BUG FIXES

    June 19, 2020

    IMPROVEMENTS

    June 18, 2020

    IMPROVEMENTS

    June 17, 2020

    IMPROVEMENTS

    June 16, 2020

    IMPROVEMENTS

    June 15, 2020

    IMPROVEMENTS

    June 12, 2020

    IMPROVEMENTS

    June 11, 2020

    IMPROVEMENTS

    June 10, 2020

    IMPROVEMENTS

    June 9, 2020

    IMPROVEMENTS

    June 8, 2020

    IMPROVEMENTS

    June 4, 2020

    IMPROVEMENTS

    June 2, 2020

    IMPROVEMENTS

    May 27, 2020

    IMPROVEMENTS

    May 22, 2020

    IMPROVEMENTS

    May 21, 2020

    NEW FEATURES

    May 19, 2020

    IMPROVEMENTS

    May 18, 2020

    IMPROVEMENTS

    May 15, 2020

    BUG FIXES

    May 14, 2020

    IMPROVEMENTS

    May 13, 2020

    IMPROVEMENTS

    May 12, 2020

    NEW FEATURES

    IMPROVEMENTS

    May 11, 2020

    NEW FEATURES

    May 7, 2020

    NEW FEATURES

    May 6, 2020

    NEW FEATURES

    May 4, 2020

    NEW FEATURES

    April 28, 2020

    NEW FEATURES

    IMPROVEMENTS

    April 22, 2020

    IMPROVEMENTS

    April 15, 2020

    NEW FEATURES

    IMPROVEMENTS

    April 3, 2020

    NEW FEATURES

    April 1, 2020

    IMPROVEMENTS

    March 31, 2020

    NEW FEATURES

    March 30, 2020

    NEW FEATURES

    March 27, 2020

    IMPROVEMENTS

    March 23, 2020

    NEW FEATURES

    March 19, 2020

    IMPROVEMENTS

    March 12, 2020

    IMPROVEMENTS

    March 5, 2020

    IMPROVEMENTS

    BUG FIXES

    March 4, 2020

    IMPROVEMENTS

    March 2, 2020

    NEW FEATURES

    February 28, 2020

    BUG FIXES

    February 27, 2020

    NEW FEATURES

    February 24, 2020

    NEW FEATURES

    February 21, 2020

    NEW FEATURES

    February 20, 2020

    IMPROVEMENTS

    February 18, 2020

    IMPROVEMENTS

    February 14, 2020

    BUG FIXES

    February 10, 2020

    BUG FIXES

    February 6, 2020

    IMPROVEMENTS

    February 5, 2020

    IMPROVEMENTS

    February 4, 2020

    IMPROVEMENTS

    February 3, 2020

    NEW FEATURES

    January 31, 2020

    IMPROVEMENTS

    January 23, 2020

    BUG FIXES

    January 22, 2020

    NEW FEATURES

    IMPROVEMENTS

    January 17, 2020

    BUG FIXES

    January 13, 2020

    BUG FIXES

    January 7, 2020

    IMPROVEMENTS

    January 6, 2020

    BUG FIXES

    December 31, 2019

    BUG FIXES

    December 17, 2019

    BUG FIXES

    December 13, 2019

    IMPROVEMENTS

    December 12, 2019

    IMPROVEMENTS

    December 10, 2019

    IMPROVEMENTS

    December 4, 2019

    NEW FEATURES

    December 3, 2019

    BUG FIXES

    November 14, 2019

    IMPROVEMENTS

    November 13, 2019

    NEW FEATURES

    November 12, 2019

    NEW FEATURES

    November 7, 2019

    NEW FEATURES

    October 30, 2019

    NEW FEATURES

    BUG FIXES

    October 29, 2019

    IMPROVEMENTS

    October 28, 2019

    IMPROVEMENTS

    October 25, 2019

    IMPROVEMENTS

    October 24, 2019

    IMPROVEMENTS

    October 21, 2019

    IMPROVEMENTS

    October 18, 2019

    IMPROVEMENTS

    October 14, 2019

    IMPROVEMENTS

    October 11, 2019

    IMPROVEMENTS

    October 9, 2019

    IMPROVEMENTS

    October 2, 2019

    BUG FIXES

    October 1, 2019

    IMPROVEMENTS

    September 24, 2019

    BUG FIXES

    September 23, 2019

    BUG FIXES

    September 20, 2019

    BUG FIXES

    September 19, 2019

    IMPROVEMENTS

    September 16, 2019

    BUG FIXES

    September 13, 2019

    BUG FIXES

    September 12, 2019

    NEW FEATURES

    September 9, 2019

    BUG FIXES

    September 7, 2019

    BUG FIXES

    September 3, 2019

    BUG FIXES

    August 30, 2019

    BUG FIXES

    August 28, 2019

    NEW FEATURES

    IMPROVEMENTS

    August 27, 2019

    NEW FEATURES

    August 22, 2019

    BUG FIXES

    August 21, 2019

    BUG FIXES

    August 20, 2019

    NEW FEATURES

    August 19, 2019

    NEW FEATURES

    August 16, 2019

    NEW FEATURES

    August 15, 2019

    NEW FEATURES

    IMPROVEMENTS

    August 14, 2019

    IMPROVEMENTS

    August 13, 2019

    IMPROVEMENTS

    August 9, 2019

    IMPROVEMENTS

    August 8, 2019

    BUG FIXES