⛩️ Orders

🏦 Bank Transfer

Bank Transfer Flow

API Sequence Table

API EndpointLogic Overview
Get KYC RequirementPass the quoteId to fetch the KYC Status.
WHEN data.kyc.status = APPROVED β†’ No further steps in the KYC process. Proceed to Get User Limits.

WHEN data.kyc.status = NOT_SUBMITTED β†’ User details need to be submitted. Proceed to Patch User Details.
WHEN data.kyc.status = ADDITIONAL_FORMS_REQUIRED β†’ More steps in the KYC process are required. Proceed to Get Additional Requirements.
Get User LimitsPass paymentMethod = bank_transfer for bank transfers and fiatCurrency to fetch the user’s monthly, daily, and yearly limits along with available limits to place an order.
On success β†’ proceed to Create Order.
Create OrderPass the quoteId and paymentInstrumentId (payment method) along with walletAddress to create the order.
Case 1:
response.status === AWAITING_PAYMENT_FROM_USER && errorMessage.isNull β†’ Proceed to Confirm Payment.
Case 2:
response.status === AWAITING_PAYMENT_FROM_USER && errorMessage === "Order exists" β†’ Cancel Order and repeat Get User Limits.
Case 3:
error.statusCode === 400 && error.message === "Order exists" β†’ Get Quote and repeat Get User Limits.
Confirm PaymentPass orderId and paymentMethod to confirm payment.
On success β†’ proceed to Get Order By ID.
Cancel OrderPass orderId and cancelReason to cancel the order.
Get Order By IDPass orderId to fetch the order status for a particular ID.

πŸ’³ Cards, Apple Pay

This flow enables users to OnRamp using existing or new card details, including Apple Pay. The flow uses a session ID to initialize a payment widget, enabling a smooth, embedded experience within the partner’s UI.

KYC Flow Diagram

API Sequence Table

API Endpoint / StepLogic Overview
Get KYC RequirementPass the quoteId to fetch the KYC status.
When data.kyc.status = APPROVED: No further KYC steps are required. Proceed to Get User Limits.
When data.kyc.status = NOT_SUBMITTED: User details must be submitted. Proceed to Patch User Details.
When data.kyc.status = ADDITIONAL_FORMS_REQUIRED: Additional KYC steps are required. Proceed to Get Additional Requirements.
Get User LimitsPass the payment method (credit_debit_card or apple_pay) and fiatCurrency to fetch the user’s monthly, daily, and yearly limits along with available limits for placing an order.
On successful response, proceed to Create Widget URL.
Create Widget URLPartner passes the User Access Token and Partner Access Token to generate a payment.widgetUrl.
Each widgetUrl is single-use only and valid for 5 minutes from the time of creation.
Payment WidgetOpen the Payment Widget using the. widgetUrl received from the **Create Widget URL** API. The widget handles card entry or Apple Pay validation. **Example:** Eg: https://global-stg.transak.com?apiKey=YOUR_API_KEY&sessionId=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvdHQiOiI2YzgxMDFiMjlhMzg0YWE2YmRjM2JjMmFkODA1M2YzMyIsImlhdCI6MTc1NzMyNTkwNywiZXhwIjoxNzU3MzI2MjA3fQ.zooQ07sGOnI_2dwtIzYL5sOD-Z0wQZoahPxZqZcCVCI
Use Existing or New Card DetailsThrough the widget, users can enter new card details or use previously saved cards. Apple Pay is supported if the user’s browser and device configuration allow it.
Place OrderCard information is submitted via the widget. The backend API securely processes the payment and places the order.
WebSocketAfter order placement, the order status is delivered in real time via a WebSocket connection. Partners can subscribe to various order status events.
Refer to the WebSocket integration docs to listen to order events.

πŸ’Έ Open Banking

The **Open Banking payment **method allows users in the **EU and UK **to fund crypto purchases via a secure, real-time bank transfer.

Open Banking is available under the Get Fiat Currencies API with payment method ID referred to as pm_open_banking or displayed to users as Easy Bank Transfer.

Note: This feature is available only for users whose KYC country is supported under Plaid’s Open Banking framework (e.g., UK, Ireland, Germany, France, etc.). The list of supported countries and banks can be found here.

API Sequence Table

API Endpoint / ActionPurpose & Flow
Get Fiat CurrenciesConfirm supported fiat currencies (e.g., EUR/GBP) and find the availability of pm_open_banking as a payment method.
Get QuoteGenerate a quote for fiat β†’ crypto using Open Banking as the selected payment method.
Get KYC RequirementUse quoteId to validate if KYC is approved for the provided quote amount.
Get User LimitsValidate user’s daily, monthly, and yearly limits for pm_open_banking.
Get Active OrdersCheck the active order for the user. Transak doesn't support placing multiple orders, so all the pending order should be cancelled if any before proceeding to the new order.
Create Order & Initiate Payment AuthorizationCreate the order with quoteId, walletAddress, and paymentInstrumentId: pm_open_banking.
Get redirectUrl from the response: data.paymentDetails.redirectUrl.
Note: This URL must be opened in a webview/browser to launch the Open Banking authorization flow.
Cancel OrderCancel a pending order (if still AWAITING_PAYMENT_FROM_USER) by providing orderId and cancelReason.
Get Order By IDPass orderId to fetch the order status for a particular ID.