Before you start
You need a ready pay-in capability and ready issued destination wallet for the same customer. Complete any open work through Capabilities and tasks, then refetch both resources.1. Create a quote
Create the price withPOST /v3/quotes. Send these headers:
data.id as QUOTE_ID. Present the returned amounts and fees rather than rebuilding them from the rate.
2. Execute the quote
Execute the current quote before expiry withPOST /v3/transfers. Use a new key for this intended transfer:
data.id as TRANSFER_ID and retain its current state.
Add a return URL for card and Apple Pay
For a card or Apple Pay quote, you can include an optionalredirectUrl in the same request. After the customer finishes the hosted checkout, the checkout page opens this URL to bring the customer back to your app.
redirectUrl must be an absolute HTTPS URL of at most 2048 characters and must not contain embedded credentials. Sending redirectUrl for a quote that does not support return navigation fails validation instead of being ignored.
Arrival at redirectUrl is browser navigation only. It does not confirm that the payment or the transfer completed. Determine completion from the transfer state in step 4 and from webhook events.
Pre-select the checkout method for a card quote
For a card quote, you can include an optionalcheckoutMethod in the same request to choose which funding option the hosted checkout opens on. The current values are card, apple_pay, google_pay, cash_app, sepa, and blik. The list is open and can grow, so tolerate values you do not recognize on transfer reads. The checkout opens on the requested method when it is available for the customer and their device, and the customer can still choose any other method the checkout offers. Omit it to keep the default pre-selection.
checkoutMethod is a preference, not a guarantee. Availability depends on the customer, their device, and the checkout, so requesting a method does not make it available. Here sepa and blik are funding options inside the card checkout, not Swipelux capabilities, rails, or accounts. The pre-selection does not change the quote’s capability, amounts, or fees, and the checkout confirms the final fees. Transfer reads echo the requested value; they do not confirm which method the customer used. Sending checkoutMethod for a quote that is not a card quote fails validation instead of being ignored, and a replay with the same idempotency key must send the same checkoutMethod.
3. Retrieve funding instructions
ReadGET /v3/transfers/{transferId}/instructions. Render the returned data.instructions variant without assuming its type.
These details are transfer-specific. Never reuse one transfer’s bank coordinates, code, hosted URL, amount, reference, or expiry for another pay-in.
For bank instructions, when reference.required is true, display the exact reference.value next to the bank coordinates and make it copyable. Show the returned amount and currency from the same instruction set.
An issued bank account is different: it provides reusable details for later deposits. See Issue a bank account when that is the intended experience.
4. Track settlement
ReadGET /v3/transfers/{transferId} after execution and after each event. Drive the customer-facing status from the latest data.state.
Use data.stateDetail and data.openTaskIds when the transfer needs another action. Do not mark it complete from an expected schedule.
Next, add Webhooks and keep the transfer status synchronized until it reaches an outcome your product handles.