Pay-By-Link is the lightest and easiest integration. You simply generate a link for your payer that you can implement into emails and other places. After clicking the link, your payer will be directed to the Checkout Experience outside of your website and all fields you provided values for via the link (for example payer's name or the payment amount) are already pre-filled.
The Checkout Experience is the pop-up form that your customer accesses to make a payment. No matter how you ask your customer to pay - for example by sending them a link or by embedding the form on your website - they will always end up at the Checkout Experience to make their payment.
There are two types of Pay-By-Link integrations depending on your use case:
A Payment Request is a way to ask your customer to make a payment, typically by sending them a link. Unlike links for standalone payments, links to a Payment Request are stateful, which means they retain the information if a payment has already been made.
For a single payment, the link shows the amount to pay. Since the link is stateful, visiting the link again after the payment is made shows the information that the amount is already paid.
For multiple installments, the link shows an overview about all installments in this request and lets the payer pay for them individually. Since the link is stateful, the overview gets updated whenever a payment is made.
For subscriptions, the payer can save the payment method for all payments of this subscription. They also get an overview about past and upcoming payments of this subscription. Since the link is stateful, the overview gets updated whenever a payment is made.
Payment Requests also serve as an umbrella sitting on top of one or multiple payments. In Dashboard, the Payment Request tab shows you all different kinds of Payment Requests:
Another benefit compared to standalone payments is that Payments Requests can be edited after they are created, for example, you can add more payments to it (see Managing Payment Requests).
Payment Request links are ideal for highly customized links you want to send to a specific customer. For example, you can insert them into an invoice or an email template and they pre-fill the Checkout Experience form with all the payer info and the payment amount.
Important info for payment callbacks: Ensure your portal has a static callback URL in place when you are using Payment Request links.
You cannot provide a dynamic callback URL for payments that are part of a Payment Request. To receive callbacks about those payments, you have to use the static URL. Alternatively, you can use callback notifications for Payment Request status updates, but note that the content of those callbacks are different from payment status callbacks.
There are two different URLs for receiving callbacks:
Static URL
A static callback URL is a fixed URL defined in your portal. All payments for this portal will send callbacks to this URL.
The static callback URL has been defined when your portal was set up. If you don't use a static callback URL yet and want to start using it, please reach out to your Flywire contact.
Dynamic URL
A dynamic callback URL is a URL that you define when you create the payment. Since this URL can be different for every payment you create, it is called dynamic.
For Pay-By-Link and Checkout , you define the URL via the callbackUrl parameter.
If you want to receive callbacks, you must provide a callback URL and a callback ID, otherwise no callbacks will be triggered. You also must set the callback version to 2.
You cannot provide a dynamic callback URL for payments that are part of a Payment Request. To receive callbacks about those payments, you have to use the static URL. Alternatively, you can use callback notifications for Payment Request status updates, but note that the content of those callbacks are different from payment status callbacks.
How defining static and dynamic URLs affect callbacks
= not set
= set
Static URL
Dynamic URL
Result
You won't receive callbacks .
You'll receive callbacks to your static URL.
You'll also receive callbacks for payments that are part of Payment Requests.
You'll receive callbacks to both URLs.
You'll also receive callbacks for payments that are part of Payment Requests, but only to the static URL.
You'll receive callbacks to your dynamic URL
You will not receive callbacks for payments that are part of Payment Requests since there is no static URL.
Dynamic links are ideal for unspecific links that you want to re-use, for example a payment link on your website that always fills the Checkout Experience form with the same amount, but doesn't pre-fill any information about the payer since you don't know who will be clicking the link.
While you can also send dynamic links to a specific customer, they are not ideal since those links will ask the customer to pay each time they click on the link. This could result in duplicate payments (meaning the payer creates multiple payments in the Flywire system), even though Flywire has measures in place to try to prevent this.
Dynamic links allow you to provide a dynamic URL for receiving callbacks for the payment. If you don't provide a dynamic URL, the fixed URL of the portal will be used (if there is one).
There are two different URLs for receiving callbacks:
Static URL
A static callback URL is a fixed URL defined in your portal. All payments for this portal will send callbacks to this URL.
The static callback URL has been defined when your portal was set up. If you don't use a static callback URL yet and want to start using it, please reach out to your Flywire contact.
Dynamic URL
A dynamic callback URL is a URL that you define when you create the payment. Since this URL can be different for every payment you create, it is called dynamic.
For Pay-By-Link and Checkout , you define the URL via the callbackUrl parameter.
If you want to receive callbacks, you must provide a callback URL and a callback ID, otherwise no callbacks will be triggered. You also must set the callback version to 2.
You cannot provide a dynamic callback URL for payments that are part of a Payment Request. To receive callbacks about those payments, you have to use the static URL. Alternatively, you can use callback notifications for Payment Request status updates, but note that the content of those callbacks are different from payment status callbacks.
How defining static and dynamic URLs affect callbacks
= not set
= set
Static URL
Dynamic URL
Result
You won't receive callbacks .
You'll receive callbacks to your static URL.
You'll also receive callbacks for payments that are part of Payment Requests.
You'll receive callbacks to both URLs.
You'll also receive callbacks for payments that are part of Payment Requests, but only to the static URL.
You'll receive callbacks to your dynamic URL
You will not receive callbacks for payments that are part of Payment Requests since there is no static URL.
We are excited to offer you an exclusive luxury travel package that promises an unforgettable experience. Enjoy a 7-day stay at a five-star resort, gourmet dining, private tours, and much more.
To secure your spot, please make a payment using the button below.
Sincerely, The Grand Horizons Travel Team
This documentation has been updated on September 23, 2025