Testing Bank Transfer Payments
In your demo environment, create a test payment with the following data:
1. Payer information (Magic Values)
Use any placeholder data you'd like for the required payer information.
For the payer's first name use one of the magic values depending on the scenario you want to test:
Successful Payment - realistic disbursement
This scenario simulates a successful payment that moves into delivered after 24 hours. This is a realistic scenario since payments get disbursed every 24 hours. If you create multiple test payments like this, you create a realistic disbursement file that contains multiple payments.
Payer's First Name | Payment Flow | Callbacks you will receive |
---|---|---|
SANDBOX_TO_GUARANTEED_STATUS |
|
After 24 hours:
|
Successful Payment - disbursed immediately
This magic value moves a payment into delivered immediately.

Payer's First Name | Payment Flow | Callbacks you will receive |
---|---|---|
SANDBOX_TO_DELIVERED_STATUS |
|
|
Unsuccessful Payment - cancelled payment
This can happen for any payment method when then payment gets cancelled by you, the payer, or by Flywire.
Payer's First Name | Payment Flow | Callbacks you will receive |
---|---|---|
SANDBOX_TO_CANCEL_STATUS |
|
|
Successful Payment - with simulated successful verification
This can happen for any payment method if a manual review (for example document collection or quality checks) is necessary.
This magic value simulates a payment that fails automated checks and gets routed to manual review which ends up being successful.
Payer's First Name | Payment Flow | Callbacks you will receive |
---|---|---|
SANDBOX_TO_VERIFICATION |
![]() ![]() ![]() |
After 2 hours:
|
Unsuccessful Payment - with simulated failed verification
This can happen for any payment method if document collection or quality checks fail and cannot be manually corrected by contacting the payer.
The magic value simulates a payment that fails automated checks and gets routed to manual review and fails the check.
Payer's First Name | Payment Flow | Callbacks you will receive |
---|---|---|
SANDBOX_TO_VERIFICATION_FAILED |
|
After 2 hours:
|
Re-initiated Cancelled Payment
This can happen for payments made via bank transfer, card, or alternative payment methods.
In some edge cases, the Cancelled status isn't final. It is important to ensure that your platform can handle callbacks that occur after cancelled.
When can this happen?
-
For bank transfer:
A bank transfer is automatically cancelled if Flywire doesn't receive the funds in time. However, if the payer sent funds but they did not arrive before the cancellation or there was a bank delay, Flywire will re-initiate and process the payment if the FX rate is similar. This moves a payment from cancelled back through the standard flow.
-
For payment via card and alternative payment methods:
If the third-party caused the payment to go into cancelled even though the transaction was successful, Flywire is able to re-initate the payment.
Payer's First Name | Payment Flow | Callbacks you will receive |
---|---|---|
SANDBOX_CANCELLED_BACK_TO_PROCESS_STATUS |
|
|
This can happen for payments made via any payment method.
After Flywire receives the funds, the transaction is flagged as suspicious and is placed on hold. The payment is manually checked to determine legitimacy. There can be two outcomes:
-
If the alert is deemed to be a false positive, Flywire will deliver the funds.
-
If the risk profile of the payment is deemed higher than Flywire thresholds allow (payment is deemed to be suspicious and/or the alert cannot be deemed a false-positive), the payment will be cancelled. Flywire will notify you and return the funds to the payer.
Initiated >
Processed >
Guaranteed >
Cancelled
Under- or Overpayment
This can only happen for bank transfer as the payment method (because the payment is completed manually outside of the Flywire platform). If the payer transfers a slightly wrong amount, the payment amount that is Guaranteed (and will be
Delivered ) can be different from the
Initiated amount.
Example:
-
A payer books an exchange rate with Flywire to send $2000 via bank transfer.
-
An initiated status and value of $2000 is sent to you via the callback notification.
-
When the payer sends funds via online banking or at their physical bank, they send above or below the quoted amount of $2000. Flywire will accept this amount if it is within a specific threshold.
Flywire amount change tolerances are:
-
200.00 USD or equivalent under the booked exchange amount
-
1000.00 USD or equivalent over the booked exchange amount
-
-
If the payment is within these tolerances:
A guaranteed status with an updated value in the amount parameter is sent to you via the callback notification.
If the payment is outside of these tolerances (excessively under or over the initiated value):
Flywire will contact you to ask if you would like to accept the payment or return it back to the payer. If this happens, the payment will be placed on hold and follow the payments on hold flow.
Payer's First Name | Payment Flow | Callbacks you will receive |
---|---|---|
SANDBOX_SMALL_UNDERPAYMENT_STATUS |
|
|
SANDBOX_SMALL_OVERPAYMENT_STATUS |
|
|
2. Payment option
Choose bank transfer as the payment option.
The bank transfer instructions will be displayed but you can ignore them, since at this point the payment has already been created and will move through the statuses according to the scenario you chose.
3. Check the results
You will receive callbacks according to the scenario you chose (see Payment Status Notifications for details).