For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Dashboard
GuidesAPI ReferenceSDKs
GuidesAPI ReferenceSDKs
  • Get Started
    • Overview and Solutions
    • Choose an Integration
    • Quickstart
    • Branding Guidelines
    • Get Support
  • Accept Payments
    • Instant Payments
    • Trustly Pay
    • Recurring Payments
    • Scan and Pay
    • Remember Me
    • Payment Integration Checklist
  • Send Money
    • Send Payouts Using Online Banking
    • Send Payouts Using Account Information
    • International Transfers
  • Retrieve Data
    • Verify Accounts Using Online Banking
    • Verify Accounts Using Micro-Deposits
    • Retrieve Bank and User Information
    • Tokenize Bank Information
    • Trustly ID
    • Insights Data
  • Core Concepts
    • Key Concepts
    • The Establish Data Object
    • Transactions and Transaction IDs
    • Tokens and Account Security
    • Redirect URLs and Return Flow
    • Webhooks and Events
    • Content Strings
  • API Fundamentals
    • Authentication and OAuth
    • Secure Requests and Signature Validation
    • Idempotency
    • Testing
    • Status codes and type definitions
  • Manage Your Integration
    • Go-Live Checklist
    • Merchant Portal
    • Reports and Reconciliation
    • Refresh Bank Authorization
    • Override Risk Declines
    • VIP Tiers
    • Financial Institution Status
Dashboard
Products
PaymentsDataPayouts
Company
AboutCareersContact Sales

Terms of Use | Privacy Policy | © 2026 Trustly, Inc.

Developer-friendly docs for your API
GitHub|Contact Support|Business Help Center|Merchant Portal
Terms of Use|Privacy Policy|© 2026 Trustly, Inc.
Developer-friendly docs for your API
LogoLogo
North AmericaEurope
North AmericaEurope
On this page
  • Prerequisites
  • Payout workflow
  • Authenticate the customer
  • Example SDK call
  • Check eligibility (optional)
  • Send funds (deposit)
  • Request parameters
  • Example request
  • Handle the response
  • Event notifications
Send Money

Send payouts using online banking

|View as Markdown|Open in Claude|
Was this page helpful?
Previous

Send money

Next

Send payouts using account information

Built with

Trustly Payouts allow you to transfer funds directly to a customer’s bank account using the secure Trustly Lightbox. This is ideal for gaming withdrawals, wallet withdrawals, or gig-economy payments.

Unlike manual payouts which require you to handle sensitive banking data, this workflow authenticates the customer with their online banking credentials. This enables instant verification, reduces fraud, and supports Real-Time Payments (RTP).

Prerequisites

  • Client-side SDK: You must integrate the JavaScript SDK (Web) or Mobile SDK to launch the Trustly UI. See Integrate the Client-Side SDK.
  • Sandbox credentials: You need your accessId and accessKey.
  • Legal agreement: Ensure your contract supports Payouts and Deposits.

Payout workflow

The following diagram illustrates the Payout workflow for a new user (first-time bank connection). This process involves the customer authorizing their account for the first time before the merchant initiates a deposit.

The following table provides details for each step of the payout workflow.

Workflow StepParticipantActionDescription
ACustomerRequests PayoutA customer selects Withdraw or Cash out on your website.
BMerchantCalls Establish APIThe frontend initializes the SDK with paymentType: 'Deferred' to create an authorization.
CTrustlyOpens UIThe Trustly Lightbox launches.
DCustomerAuthenticatesThe customer logs in to their bank to authorize the account connection.
ETrustlyRedirectsTrustly redirects the customer to your returnUrl with a transactionId.
FMerchantDepositsYour system calls the Deposit API using the transactionId and the payout amount.
GTrustlySends Credit InstructionTrustly sends the instruction and funds to the customer’s bank.
HTrustlySends WebhookAsync: Trustly sends a webhook to your backend confirming the final settlement status.

Authenticate the customer

To send money, you first need to establish a connection with the customer’s bank. This generates a transactionId that represents the authorized account.

Use the Establish method with paymentType: 'Deferred'. This creates an open authorization without authorizing a charge or debit from the customer’s account.

Example SDK call

1var establishData = {
2 accessId: 'YOUR_ACCESS_ID',
3 merchantId: 'YOUR_MERCHANT_ID',
4 merchantReference: 'payout_session_12345',
5 description: 'Connect Bank for Withdrawals',
6 currency: 'USD',
7 amount: '0.00',
8 paymentType: 'Deferred',
9 requestSignature: 'GENERATED_SIGNATURE_FROM_BACKEND', // Required for security
10 customer: {
11 externalId: 'user_123',
12 name: 'John Doe',
13 email: 'john.doe@example.com',
14 address: {
15 country: 'US'
16 }
17 },
18 returnUrl: 'https://merchant.com/payout/success',
19 cancelUrl: 'https://merchant.com/payout/cancel'
20};
21
22/* Open the Lightbox */
23Trustly.establish(establishData, TrustlyOptions);

Security Note: You must generate a requestSignature for the payload to prevent tampering. See Securing requests.

Once the customer completes the flow, Trustly redirects them to your returnUrl. You must capture the transactionId from the URL parameters.

To configure TrustlyOptions, see Integrate the Client-Side SDK.

Check eligibility (optional)

Most merchants bypass this check. You can set instantPayoutRequest to true in your deposit call. Trustly will automatically attempt an instant settlement (RTP/FedNow) and fall back to standard ACH if the bank is ineligible.

Before sending funds, you may want to check if the customer’s bank supports Instant Payouts (Real-Time Payments).

Call the Get Transactions API using the transactionId you obtained when you authenticated the customer. For example:

Endpoint: GET /transactions/{transactionId}

Review the payment.paymentProvider.instantPayoutAvailable boolean field for the following values:

  • true: The bank supports instant settlement (RTP/FedNow).
  • false: The payout will process via standard ACH (1-3 business days).

Send funds (deposit)

Use the Deposit a Transaction API to transfer funds to the authorized account. For example:

Endpoint: POST /transactions/{transactionId}/deposit

Request parameters

ParameterDescription
amountThe amount to credit to the customer’s account.
merchantReferenceYour unique identifier for this payout order.
instantPayoutRequestOptional. Set to true to request Real-Time Payment (RTP) settlement. This is instant: true in manual configurations.

Example request

$curl -X POST https://sandbox.trustly.one/api/v1/transactions/{transactionId}/deposit \
> -u "YOUR_ACCESS_ID:YOUR_ACCESS_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "amount": "25.00",
> "merchantReference": "payout_001",
> "instantPayoutRequest": true
> }'

Handle the response

The following table describes the response statuses returned by the Deposit a Transaction API and the recommended actions for each status.

StatusDescriptionAction
AUTHORIZEDThe payout request is accepted.The payout request is accepted. Record the transaction and wait for the COMPLETED webhook
DECLINEDThe request failed.Do not deduct funds. Notify the customer.

Event notifications

Payouts are asynchronous. Even instant payouts undergo processing states. You must listen for Event notifications to confirm the final status. The API returns the following statuses:

  • PROCESSED: Trustly submitted the funds to the payment network.
  • COMPLETED: The funds settled in the customer’s account.
  • DENIED: The payout failed before submission.
  • REVERSED: The payout was successfully submitted but later failed or returned by the bank. You should return the funds to the customer’s wallet balance.