openapi: 3.1.0
info:
title: Trustly North America API
version: 1.0.0
description: Trustly Pay by Bank REST API for the United States and Canada (Trustly Inc., formerly PayWithMyBank). Establish
and authorize bank transactions, capture and deposit funds, send payouts, refund and cancel, tokenize and verify bank
accounts, retrieve account data and Trustly ID identity details, manage customers and disputes, and receive event notifications
(webhooks). Sandbox and production share one contract; only the host differs.
contact:
name: Trustly North America developer experience
url: https://amer.developers.trustly.com/help
email: amer.developer.experience@trustly.com
termsOfService: https://www.trustly.com/about-us/terms-and-conditions
x-api-evangelist-provenance:
source: https://amer.developers.trustly.com/openapi.json
fetched: '2026-09-18'
note: Verbatim provider spec from the Fern-hosted docs (also linked from /.well-known/api-catalog as /openapi/api.yaml).
info.title/description/contact/termsOfService added by API Evangelist from the provider docs; paths, schemas and webhooks
untouched. Production server added from the Environment URLs table at https://amer.developers.trustly.com/integrate/api-fundamentals/testing.
paths:
/transactions/{transactionId}/accountSummary:
get:
operationId: accountData_get-transaction-account-summary
summary: Get account activity summary
description: 'Returns summarized and aggregated information about an account such as deposits, withdrawals and balances
for various time periods.
**Warning**
Please wait to receive the [DataReady](/api-reference/api/event-notifications/data-ready) event before
calling this endpoint. Requests to this endpoint made prior to receiving the DataReady event can result in partial
data being returned.'
tags:
- accountData
parameters:
- name: transactionId
in: path
description: Transaction ID retrieved from a Trustly Authorization transaction.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Account_Data_get-transaction-account-summary_Response_200'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Get-transaction-account-summaryRequestBadRequestError'
security:
- HTTPBasic: []
/transactions/{transactionId}/payment/paymentProvider/account/balance:
get:
operationId: accountData_get-transactions-account-balance
summary: Get account balance
description: 'Retrieves the details of an Account that was authorized for a Transaction. You need only supply the unique
transactionId that was returned as part of a bank authorization.
This is a restricted API and must be approved for usage by the Trustly Compliance team.
**Note**
This endpoint retrieves data for the account selected during the Lightbox flow, which is already available
once authorization completes. Waiting for the [DataReady](/api-reference/api/event-notifications/data-ready) event
is not required to call this endpoint — DataReady signals completion of data retrieval for non-selected accounts and
full account activity, not the selected account''s balance.
**Note for International Financial Institutions**
In some geographies the `Account` object in the response for
this API may contain additional properties. For example, the `taxId` returned for accounts from Brazilian institutions.'
tags:
- accountData
parameters:
- name: transactionId
in: path
description: Transaction ID retrieved from a Trustly Authorization transaction.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Account_Data_get-transactions-account-balance_Response_200'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Get-transactions-account-balanceRequestBadRequestError'
security:
- HTTPBasic: []
/transactions/{transactionId}/payment/paymentProvider/user:
get:
operationId: accountData_get-user
summary: Get account users
description: 'This endpoint retrieves users'' information from an Authorized Bank transaction.
**Warning**
Please wait to receive the [DataReady](/api-reference/api/event-notifications/data-ready) event before
calling this endpoint. Requests to this endpoint made prior to receiving the DataReady event can result in partial
data being returned.'
tags:
- accountData
parameters:
- name: transactionId
in: path
description: Transaction ID retrieved from a Trustly Authorization transaction.
required: true
schema:
type: string
- name: expand
in: query
description: A field in the API response to be expanded in order for more details to be provided (e.g. customer.segmentedName).
required: false
schema:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdPaymentPaymentProviderUserGetParametersExpandSchemaItems'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/FIUser'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Get-userRequestBadRequestError'
security:
- HTTPBasic: []
/transactions/{transactionId}/payment/paymentProvider/accounts:
get:
operationId: accountData_list-selected-accounts
summary: List all accounts
description: 'Returns a list of all user-selected accounts associated with a given authorization transaction.
**Warning**
Please wait to receive the [DataReady](/api-reference/api/event-notifications/data-ready) event before
calling this endpoint. Requests to this endpoint made prior to receiving the DataReady event can result in partial
data being returned.'
tags:
- accountData
parameters:
- name: transactionId
in: path
description: Transaction ID retrieved from a Trustly Authorization transaction.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Account_Data_list-selected-accounts_Response_200'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/List-selected-accountsRequestBadRequestError'
security:
- HTTPBasic: []
/feedback:
post:
operationId: accounts_post-account-feedback
summary: Post account feedback
description: "Utilize this endpoint to record feedback regarding the result of an ACH payment using the account information\
\ verified by Trustly during a Verification Transaction. This feedback data helps optimize account verification scores\
\ over time. It is **required** when using Trustly Connect. \n\n> **Note for Trustly Pay** \n> For apps using Trustly\
\ Pay, feedback should be provided on individual transactions rather than on the account. See [`/transactions/{id}/feedback`](ref:post-transaction-feedback)\
\ for transaction-specific feedback details."
tags:
- accounts
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Accounts_post-account-feedback_Response_200'
'400':
description: Invalid parameter
content:
application/json:
schema:
$ref: '#/components/schemas/BaseException'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/BaseException'
requestBody:
description: ''
content:
application/json:
schema:
type: object
properties:
merchantId:
type: number
format: double
description: A unique Trustly merchant identifier.
account:
$ref: '#/components/schemas/FeedbackPostRequestBodyContentApplicationJsonSchemaAccount'
description: The token is required only when account number and routing number are not sent and vice-versa.
feedback:
$ref: '#/components/schemas/Feedback'
required:
- merchantId
- account
- feedback
security:
- HTTPBasic: []
/accounts/tokenize:
post:
operationId: accounts_post-accounts-tokenize?-verifyAccount
summary: Tokenize an account
description: Convert legacy ACH ABA routing and account numbers or an International Bank Account Number (IBAN) into
a verified token to meet NACHA requirements.
tags:
- accounts
parameters:
- name: verifyAccount
in: query
description: If true, Trustly will verify the provided account data. Default value is false.
required: false
schema:
type: boolean
default: false
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Accounts_post-accounts-tokenize_-verifyAccount_Response_200'
'400':
description: One of the request parameters is invalid (sending an invalid amount format string for example).
content:
application/json:
schema:
$ref: '#/components/schemas/Post-accounts-tokenize_-verifyAccountRequestBadRequestError'
requestBody:
description: ''
content:
application/json:
schema:
type: object
properties:
merchantId:
type: string
minLength: 1
account:
$ref: '#/components/schemas/AccountsTokenizePostRequestBodyContentApplicationJsonSchemaAccount'
required:
- merchantId
- account
security:
- HTTPBasic: []
/accounts/verify:
post:
operationId: accounts_get-accounts-verify
summary: Verify an account
description: Allows for verification of most global accounts by passing in an account object containing either bank
routing and account numbers or an IBAN.
tags:
- accounts
parameters:
- name: expand
in: query
description: A field in the API response to be expanded in order for more details to be provided (e.g. account.paymentProvider).
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/FinancialInstitutionAccount'
'400':
description: One of the request parameters is invalid (sending an invalid amount format string for example).
content:
application/json:
schema:
$ref: '#/components/schemas/Get-accounts-verifyRequestBadRequestError'
requestBody:
content:
application/json:
schema:
type: object
properties:
merchantId:
type: number
format: double
description: A unique Trustly merchant identifier.
account:
$ref: '#/components/schemas/AccountsVerifyPostRequestBodyContentApplicationJsonSchemaAccount'
required:
- merchantId
- account
security:
- HTTPBasic: []
/countries:
get:
operationId: countries_get-countries
summary: List countries
description: Returns a list of all available products by country.
tags:
- countries
parameters:
- name: country
in: query
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US, CA,
UK, DE, and AU are supported.
required: false
schema:
$ref: '#/components/schemas/CountriesGetParametersCountry'
- name: paymentType
in: query
description: Returns the countries that support this Payment Type.
required: false
schema:
type: string
- name: paymentProvider.subType
in: query
description: Returns the countries that support this Payment Provider SubType
required: false
schema:
type: string
- name: enabled
in: query
description: If true, returns all countries that are currently supported. Default value is true.
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Countries_get-countries_Response_200'
'400':
description: One of the request parameters is invalid (sending an invalid amount format string for example).
content:
application/json:
schema:
$ref: '#/components/schemas/Get-countriesRequestBadRequestError'
security:
- HTTPBasic: []
/customers:
post:
operationId: customers_post-customers
summary: Create or Update a Customer
description: 'Creates a new customer record in the merchant account. In cases when the customer was not created at the
time an Authorization was established, use this endpoint to register customer details, such as name, email, and optional
metadata, to support your integration.
If an existing `customerId` or `externalId` is provided, the specified customer will be updated with any new or updated
properties. To remove properties of an existing customer, set the property to `null`. Before using this endpoint,
it may be helpful to call [Get Customer by ID](ref:get-customers-customerid) to obtain the relevant customer object.'
tags:
- customers
parameters:
- name: externalId
in: query
description: The externalId that was passed when the Customer record was created.
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Customers_post-customers_Response_200'
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
security:
- HTTPBasic: []
get:
operationId: customers_get-customers
summary: Get Customers
description: "Retrieves a list of customers associated with the merchant account. Use this endpoint to view customer\
\ details relevant to your integration. \n\n Results can be filtered by either the `externalId` or `customerId` properties\
\ in order to retrieve the details of a single customer using the unique `externalId` that was provided during customer\
\ creation. Other filtering and paging capabilities are not supported at this time."
tags:
- customers
parameters:
- name: externalId
in: query
description: The externalId that was passed when the Customer record was created.
required: false
schema:
type: string
- name: customerId
in: query
description: The identifier of the Customer to be retrieved.
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Customers_get-customers_Response_200'
security:
- HTTPBasic: []
/customers/{customerId}:
get:
operationId: customers_get-customers-customerId
summary: Get Customer by ID
description: Retrieves the details of a Customer using the unique `customerId` that was returned upon customer creation.
tags:
- customers
parameters:
- name: customerId
in: path
description: The identifier of the Customer to be retrieved.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Customers_get-customers-customerId_Response_200'
security:
- HTTPBasic: []
post:
operationId: customers_post-customers-customerId
summary: Update Customer by ID
description: Updates the specified Customer by setting the values of the parameters on the customer object passed. Before
calling this endpoint, it may be beneficial to call [Get Customer by ID](/api-reference/api/customers/get-customers-customer-id)
to obtain a Customer Object. Change the desired fields in the Customer object and then modify the object before calling
the update endpoint with the modified object.
tags:
- customers
parameters:
- name: customerId
in: path
description: The identifier of the Customer to be retrieved.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Customers_post-customers-customerId_Response_200'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
security:
- HTTPBasic: []
/collections/recovery/dispute:
post:
operationId: disputeManagement_post-dispute-recovery
summary: Post a dispute
description: This endpoint allows you to recover a retail dispute. The response includes key transaction information,
such as the transaction status, as well as amounts, and account details for payment or authorization transactions.
tags:
- disputeManagement
parameters:
- name: Idempotency-Key
in: header
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
'400':
description: Invalid parameter
content:
application/json:
schema:
$ref: '#/components/schemas/BaseException'
requestBody:
content:
application/json:
schema:
type: object
properties:
transactionId:
type: string
description: Transaction ID retrieved from a Trustly Dispute Webhook.
amount:
type: string
maxLength: 10
description: The amount to be captured. If the value is omitted, the maximum allowed amount is captured.
(maximum of 10 characters with support for 2 decimal places).
required:
- transactionId
- amount
security:
- HTTPBasic: []
/transactions/{transactionId}/user:
get:
operationId: identity_get-trustly-id-user-data
summary: Get user
description: Retrieve the User object associated with the Trustly ID authorization transaction.
tags:
- identity
parameters:
- name: transactionId
in: path
description: Transaction ID retrieved from a Trustly Authorization transaction.
required: true
schema:
type: string
- name: expand
in: query
description: "A field in the API response to be expanded in order for more details to be provided.\nSupported values:\n\
\ * `segmentedName`: returns a segmented version of the name field returned in the response."
required: false
schema:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdUserGetParametersExpandSchemaItems'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Get-trustly-id-user-dataRequestBadRequestError'
security:
- HTTPBasic: []
/transactions/{transactionId}/user/detail:
get:
operationId: identity_get-trustly-id-user-details
summary: Get user verification details
description: "Retrieve the verification results and details of a Trustly ID-enabled authorization transaction. The details\
\ returned by this endpoint are segmented into two lists: verifications and attributes. \n\nThe verification objects\
\ contain the `name` and `result` of the verification as well as reason codes and reason descriptions corresponding\
\ to the results. If a verification includes a sanction screening and a match was returned, the results of the screening\
\ will also be included. If no `screeningResults` property is returned in the verification object, no match was returned.\n\
>**Note:** Verifications are configured per application, check with your Trustly services team member for definitions\
\ of your configured verifications.\n\nThe attribute objects contain metadata which describe how the property was\
\ verified and a list of `verification` objects which apply to the attribute."
tags:
- identity
parameters:
- name: transactionId
in: path
description: Transaction ID retrieved from a Trustly Authorization transaction.
required: true
schema:
type: string
- name: expand
in: query
description: "A field in the API response to be expanded in order for more details to be provided.\nSupported values:\n\
\ * `verification`: returns human-readable reason rules and descriptions."
required: false
schema:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdUserDetailGetParametersExpandSchemaItems'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UserVerificationDetail'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Get-trustly-id-user-detailsRequestBadRequestError'
security:
- HTTPBasic: []
/transactions/{transactionId}/feedback:
post:
operationId: identity_post-transaction-feedback
summary: Update user status
description: "This endpoint updates the status of a user by posting feedback data to Trustly for an authorized Identity\
\ transaction. This communicates to Trustly that the user associated with the transaction has been successfully registered\
\ in the merchant system, or that the user record has been voided and therefore will not be eligible for future payment\
\ transactions. \n\nTo confirm a user was registered, set properties `status` to `4`, `subStatus` to `559` and `description`\
\ to `Registered`. To void a user who did not complete registration after completing the Trustly ID flow, set `status`\
\ to `13`, `subStatus` to `558` and `description` to `Known bad user`. \n\nfor more information about Trustly ID,\
\ see [Verify identity with Trustly ID](/integrate/retrieve-data/trustly-id)."
tags:
- identity
parameters:
- name: transactionId
in: path
description: Transaction ID retrieved from a Trustly Authorization transaction.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
'401':
description: Access not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/Post-transaction-feedbackRequestUnauthorizedError'
requestBody:
content:
application/json:
schema:
type: object
properties:
status:
type: integer
default: 4
subStatus:
type: integer
default: 559
description:
type: string
default: Registered
security:
- HTTPBasic: []
/customers/lookup:
get:
operationId: networkCheckApi_get-customer-lookup
summary: Look up whether a user is known to Trustly
description: 'Checks whether a user has previously used Trustly, based on one or more provided identifiers (email or
phone).
Merchants can use this endpoint without having to launch Trustly widget/lightbox. One such use case could be to use
this endpoint early in the payment funnel — before the user reaches the payment selection screen — to determine whether
to surface Trustly as the top payment option. A `true` response indicates the user is already familiar with Pay by
Bank and is more likely to complete a Trustly-powered transaction.
**How it works:** The lookup queries Trustly''s user database across all stored identifiers. If any provided identifier
matches a known Trustly user, `isInTrustlyNetwork` is returned as `true`.
**Authentication:** Requests must be authenticated with HTTP Basic Auth using your `accessId` as the username and
`accessKey` as the password.'
tags:
- networkCheckApi
parameters:
- name: email
in: query
description: User's email address.
required: true
schema:
type: string
format: email
- name: phone
in: query
description: User's phone number in ITU E.164 format.
required: false
schema:
type: string
responses:
'200':
description: Lookup result
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerLookupResponse'
'400':
description: Bad Request — missing mandatory fields or invalid email
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerLookupResponse'
'401':
description: Access not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/Get-customer-lookupRequestUnauthorizedError'
'500':
description: Internal server error
content:
application/json:
schema:
description: Any type
security:
- HTTPBasic: []
/paymentProviders:
get:
operationId: paymentProviders_get-paymentProviders
summary: List payment providers
description: Returns a list of payment providers, filtered by country. It can be paged and filtered by appending arguments
to the query string of the request.
tags:
- paymentProviders
parameters:
- name: countries
in: query
description: 2 character ISO Country code. There can be multiple instances of this query parameter to represent a
list of countries.
required: false
schema:
type: string
- name: paymentType
in: query
description: Filters out payment providers not enabled for the specified payment type. Possible values are Instant,
Deferred, Disbursement, Recurring, Verification, and Retrieval.
required: false
schema:
type: string
- name: startIndex
in: query
description: Returns payment providers from that offset.
required: false
schema:
type: string
- name: count
in: query
description: Returns the maximum number of payment providers specified by this field.
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Payment_Providers_get-paymentProviders_Response_200'
security:
- HTTPBasic: []
/payments:
get:
operationId: payments_list-payments
summary: List payments
description: Returns a list of transactions. It can be paged and filtered by appending arguments to the query string
of the request.
tags:
- payments
parameters:
- name: paymentType
in: query
description: Returns payments of this Payment Type. It is possible to filter by multiple values by repeating this
argument.
required: false
schema:
type: array
items:
type: string
- name: merchantReference
in: query
description: Returns transactions of the payments associated with this merchant reference.
required: false
schema:
type: string
- name: authorization.status
in: query
description: Returns transactions of the payments at this payment Authorization Status.
required: false
schema:
type: array
items:
type: string
- name: verification.status
in: query
description: Returns transactions of the payments at this payment Verification Status.
required: false
schema:
type: array
items:
type: string
- name: paymentId
in: query
description: Returns payments of this identification.
required: false
schema:
type: string
- name: merchant.merchantId
in: query
description: Returns payments by this merchant identification.
required: false
schema:
type: string
- name: description
in: query
description: Returns payments by description.
required: false
schema:
type: string
- name: paymentProvider.paymentProviderId
in: query
description: Returns payments by this payment provider identification.
required: false
schema:
type: string
- name: customer.customerId
in: query
description: Returns payments by this customer identification.
required: false
schema:
type: string
- name: fingerprint
in: query
description: Returns payments by this fingerprint.
required: false
schema:
type: string
- name: createdAt.start
in: query
description: Returns payments after this creation date
required: false
schema:
type: string
- name: createdAt.end
in: query
description: Returns payments before this creation date
required: false
schema:
type: string
- name: updatedAt.start
in: query
description: Returns payments after this update date
required: false
schema:
type: string
- name: updatedAt.end
in: query
description: Returns payments before this update date
required: false
schema:
type: string
- name: amount.min
in: query
description: Returns payments for that minimum amount.
required: false
schema:
type: string
- name: amount.max
in: query
description: Returns payments for that maximum amount.
required: false
schema:
type: string
- name: paid.min
in: query
description: Returns payments for that minimum paid.
required: false
schema:
type: string
- name: paid.max
in: query
description: Returns payments for that maximum paid.
required: false
schema:
type: string
- name: refunded.min
in: query
description: Returns payments with this minimum refund amount.
required: false
schema:
type: string
- name: refunded.max
in: query
description: Returns payments with this maximum refund amount.
required: false
schema:
type: string
- name: orderBy
in: query
description: List payments by order field.
required: false
schema:
type: string
- name: sortOrder
in: query
description: Returns payments by this sort order
required: false
schema:
type: string
- name: startIndex
in: query
description: Returns payments from that offset
required: false
schema:
type: string
- name: count
in: query
description: Returns the maximum number of payments specified by this field
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Payments_list-payments_Response_200'
security:
- HTTPBasic: []
/payments/{paymentId}:
get:
operationId: payments_get-payments
summary: Retrieve payment
description: Retrieves the details of a Payment. Supply the unique paymentId that was returned from your previous request,
and Trustly will return the corresponding payment information.
tags:
- payments
parameters:
- name: paymentId
in: path
description: The identifier of the payment object to be retrieved.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Payment'
security:
- HTTPBasic: []
/transactions/{transactionId}/cancel:
post:
operationId: transactions_post-transactions-cancel
summary: Cancel transaction
description: 'Cancels an existing transaction that has not yet been processed. A cancellation should be issued as soon
as you know the transaction will not be completed.
A Deferred or Instant payment transaction can only be canceled before the payment processing cut-off time. If the
Cancel request returns an error, a Refund call should be executed instead.
Additionally, this endpoint can be used to cancel a Bank Authorization when a user revokes access to their bank from
your application. If the bank authorization transaction is voided, further `/capture` or `/deposit` requests using
the canceled transaction will not be permitted. Any outstanding transactions with a `pending` status related to the
bank authorization will remain unchanged and must be canceled individually if necessary.'
tags:
- transactions
parameters:
- name: transactionId
in: path
description: Authorization Transaction ID retrieved from a Trustly Deferred or Recurring transaction.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
requestBody:
description: ''
content:
application/json:
schema:
type: object
properties:
merchantReference:
type: string
description: A specific merchant reference for this cancellation. For example, this could be a merchant
order number or the same merchant reference value used in the original establish call.
message:
type: string
description: An optional message describing the reason for the cancellation. (maximum of 40 characters)
reason:
type: number
format: double
description: 'A specific reason code for this cancellation. '
signature:
type: string
description: 'A specific signature for this cancellation. '
security:
- HTTPBasic: []
/transactions/{transactionId}/capture:
post:
operationId: transactions_post-transactions-transactionId-capture
summary: Capture transaction
description: "Capture collects money amounts (minimum of 0.99) from a customer bank account of a previously authorized\
\ transaction.\n\nThis operation creates a new transaction called a Capture transaction. It is linked to the payment\
\ you are partially or fully capturing.\n\nYou can issue multiple capture requests against a single Authorization.\
\ However, the sum of these captures must be less than or equal to what is allowed by the authorized payment.\n\n\
Ensure you also implement an Event Notification Handler to get transaction status updates. Although the splitToken\
\ field is optional at the API level, if you are using 'guaranteed' payments, omitting this field will result in a\
\ Fail event. When providing a splitToken, be sure the string is URL encoded.\n\n> **Note for Money Transfer** \n\
> If your application is configured for \"Money Transfer\" many properties in the `beneficiary` and `beneficiaryAccount`\
\ objects will be required. \n> See [Send money](/integrate/send-money) for more details."
tags:
- transactions
parameters:
- name: transactionId
in: path
description: Authorization Transaction ID retrieved from a Trustly Deferred or Recurring transaction, or Preauthorization
Transaction ID retrieved from a Trustly Preauthorize API.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
requestBody:
content:
application/json:
schema:
type: object
properties:
merchantReference:
type: string
description: A specific merchant reference for this capture such as an order number. If your account is
configured for idempotency, this value must be unique to prevent duplicate transactions.
amount:
type: string
maxLength: 10
description: The amount to be captured. If the value is omitted, the maximum allowed amount is captured.
(maximum of 10 characters with support for 2 decimal places)
splitToken:
type: string
description: Encrypted token received from the Authorize event. Note, token may include url escape characters
which must be encoded or the request will result in an error.
beneficiaryAccount.iban:
type: string
pattern: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$
description: International Bank Account Number (IBAN)
beneficiaryAccount.accountNumber:
type: string
maxLength: 12
description: Account Number
beneficiaryAccount.paymentProvider.name:
type: string
maxLength: 35
description: Name of financial institution. 35 characters maximum.
beneficiaryAccount.paymentProvider.swift:
type: string
minLength: 8
maxLength: 11
description: International SWIFT code of the payment provider
beneficiaryAccount.paymentProvider.routingNumber:
type: string
pattern: ^[0-9]{9}$
maxLength: 9
description: Routing Number (9 digits)"
beneficiaryAccount.paymentProvider.country:
type: string
minLength: 2
maxLength: 2
description: 2-letter ISO country code of the beneficiary financial institution
beneficiary.name:
type: string
description: Customer full legal name
beneficiary.email:
type: string
description: Customer email address
beneficiary.dateOfBirth:
type: string
description: Customer date of birth
beneficiary.taxId:
type: string
description: Customer tax ID (e.g. SSN [US], SIN [CA])
beneficiary.address.address1:
type: string
description: Street address of the beneficiary financial institution
beneficiary.address.address2:
type: string
description: Street address line 2 of the beneficiary financial institution (if applicable)
beneficiary.address.city:
type: string
description: City or Locality of the beneficiary financial institution
beneficiary.address.state:
type: string
description: State or Province of the beneficiary financial institution
beneficiary.address.zip:
type: string
description: ZIP or postal code of the beneficiary financial institution
beneficiary.address.country:
type: string
minLength: 2
maxLength: 2
description: 2 character ISO Country code of the beneficiary financial institution
metadata.remittance.withdrawalMethod:
$ref: '#/components/schemas/TransactionsTransactionIdCapturePostRequestBodyContentApplicationXWwwFormUrlencodedSchemaMetadataRemittanceWithdrawalMethod'
description: The method by which the recipient will receive the funds.
interactionId:
type: string
description: Optional interaction ID parameter for Preauthorization and Capture APIs, inclusion of which
signifies consumer interaction tied to data obtained from getTrustlyInteraction function. If not specified,
Trustly assumes the consumer is present in session. Set to "consumerNotPresent" to signify that the transaction
is merchant-initiated and the consumer is not present.
required:
- merchantReference
- amount
- splitToken
security:
- HTTPBasic: []
/transactions/{transactionId}/deposit:
post:
operationId: transactions_post-transactions-deposit
summary: Deposit transaction
description: 'Deposit sends money amounts (minimum of 0.99) to a customer bank account of a previously authorized Disbursement
or Deferred transaction.
This operation creates a new transaction called a Deposit transaction. It is linked to the disbursement payment.
You can create multiple Deposit transactions against a single Disbursement or Deferred Authorization so long as the
amount doesn''t exceed the total of the Authorization.
Ensure you also implement an Event Notification Handler to get transaction status updates.'
tags:
- transactions
parameters:
- name: transactionId
in: path
description: Authorization Transaction ID retrieved from a Trustly Deferred or Disbursement Authorization.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
requestBody:
description: ''
content:
application/json:
schema:
type: object
properties:
merchantReference:
type: string
description: A specific merchant reference for this deposit. For example, this could be a merchant order
number or the same merchant reference value used in the original establish call.
amount:
type: string
title: float
description: The amount to be sent. (maximum of 10 characters with support for 2 decimal places)
instantPayoutRequest:
type: boolean
description: Whether instant payout for the deposit will be attempted.
externalTier:
type: string
description: The merchant's tier associated with the customer (e.g. vip).
required:
- merchantReference
security:
- HTTPBasic: []
/establish:
post:
operationId: transactions_post-establish
summary: Establish a new transaction for authorization
description: "This endpoint creates a new unauthorized transaction and returns a URL to be provided for a user to authorize\
\ the transaction. After the user has authorized the transaction with a bank, the transaction can be used with other\
\ Trustly APIs to retrieve account data or process payments.\n\nFor more details and descriptions of the fields supported\
\ by this endpoint see [Establish Data object](doc:features/establish-data-object).\n\n> **Note for Money Transfer**\
\ \n> If your application is configured for \"Money Transfer\" many properties in the `customer`, `beneficiary` and\
\ `beneficiaryAccount` objects will be required. \n> See [Send money](/integrate/send-money) for more details."
tags:
- transactions
parameters:
- name: createTransaction
in: query
description: If true, Trustly will return a transactionId that can be used with other API's. Either createTransaction
or notify is required.
required: false
schema:
type: boolean
- name: notify
in: query
description: If true, Trustly will notify the User via SMS or Email with a URL that can be used to complete the transaction.
Either createTransaction or notify is required.
required: false
schema:
type: boolean
- name: channel
in: query
description: 'Comma separated list of notification channels. Currently only sms and email are supported. Example:
sms,email will send a notification via SMS and email to the User. Required if notify is true.'
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/EstablishData'
requestBody:
description: ''
content:
application/json:
schema:
type: object
properties:
merchantId:
type: string
minLength: 1
description: Your Trustly-provided Merchant ID.
accessId:
type: string
minLength: 1
description: Your Trustly-provided client application access ID.
amount:
type: string
minLength: 1
description: The amount of the transaction. This represents the maximum amount of the transactions that
can be processed with the Authorization. If the amount is 0.00, there will be no upper bound on the transaction.
(10 characters with support for 2 decimal places)
currency:
$ref: '#/components/schemas/EstablishPostRequestBodyContentApplicationJsonSchemaCurrency'
description: 3-letter ISO Currency Code.
description:
type: string
minLength: 1
description: A summary description of the order. Do not pass Consumer PII (name, email address, etc) in
this field.
returnUrl:
type: string
minLength: 1
description: The URL where the user should be redirected to when the user successfully authorizes the transaction
(must be a valid URL or function).
cancelUrl:
type: string
minLength: 1
description: The URL where the user should be redirected to if the user exits or the transaction is canceled
(must be a valid URL or function).
notificationUrl:
type: string
description: Notification URL to use for notifications associated with this transaction. This overrides
the notification URL configured by Trustly during onboarding.
paymentType:
$ref: '#/components/schemas/EstablishPostRequestBodyContentApplicationJsonSchemaPaymentType'
description: "Specifies the type of transaction to create. Possible values are Instant, Deferred, Disbursement,\
\ Recurring, Verification, and Retrieval. Default is Retrieval.\n\n **Note:** If your application is configured\
\ for \"Money Transfer\" and utilizes the \"Instant\" `paymentType` several properties under `customer`,\
\ `beneficiary` and `beneficiaryAccount` will be required. \n> See [Send money](/integrate/send-money)\
\ for more details."
requestSignature:
type: string
minLength: 1
description: Request Signature used to secure the request.
displayAmount:
type: string
minLength: 1
description: 'Optionally displays the provided transaction amount to the user throughout the Lightbox experience.
**Note:** This value must be sent as a JSON string (for example, `"10.50"`), not as a numeric value.'
merchantReference:
type: string
minLength: 1
description: A unique identifier that you create to represent the Transaction in the Trustly system.
customer:
$ref: '#/components/schemas/Customer'
account:
$ref: '#/components/schemas/EstablishPostRequestBodyContentApplicationJsonSchemaAccount'
description: Account information. Required if paymentType is Verification and a transactionId is not included.
beneficiary:
$ref: '#/components/schemas/EstablishPostRequestBodyContentApplicationJsonSchemaBeneficiary'
description: 'The ultimate beneficiary of this payment. Required when using `paymentType: Instant` for [Money
Transfer](/integrate/send-money)'
beneficiaryAccount:
$ref: '#/components/schemas/EstablishPostRequestBodyContentApplicationJsonSchemaBeneficiaryAccount'
description: 'Financial institution account associated with the ultimate beneficiary of a transaction. Required
when using `paymentType: Instant` for [Money Transfer](/integrate/send-money)'
kycType:
type: string
description: Specifies the KYC (Know Your Customer) type. This field is optional and can only be used by
merchants configured for [Trustly ID](/integrate/retrieve-data/trustly-id).
metadata:
$ref: '#/components/schemas/EstablishPostRequestBodyContentApplicationJsonSchemaMetadata'
description: Provide additional use case-specific properties in this object.
required:
- merchantId
- accessId
- currency
- returnUrl
- cancelUrl
- requestSignature
- merchantReference
security:
- HTTPBasic: []
/transactions:
get:
operationId: transactions_list-transactions
summary: Get transactions
description: Returns a list of transactions. It can be paged and filtered by appending arguments to the query string
of the request.
tags:
- transactions
parameters:
- name: transactionType
in: query
description: Returns transactions of this Transaction Type. It is possible to filter by multiple values by repeating
this argument.
required: false
schema:
type: array
items:
type: string
- name: transactionStatus
in: query
description: Returns transactions that currently have this Transaction Status. It is possible to filter by multiple
values by repeating this argument.
required: false
schema:
type: array
items:
type: string
- name: originalTransactionId
in: query
description: Returns transactions that belongs to this original transaction identifier.
required: false
schema:
type: string
- name: payment.paymentId
in: query
description: Returns transactions of the payment specified by this payment ID.
required: false
schema:
type: string
- name: payment.paymentType
in: query
description: Returns transactions of the payments of this Payment Type. It is possible to filter by multiple values
by repeating this argument.
required: false
schema:
type: array
items:
type: string
- name: payment.merchantReference
in: query
description: Returns transactions of the payments associated with this merchant reference.
required: false
schema:
type: string
- name: payment.verification.status
in: query
description: Returns transactions of the payments at this payment Verification Status.
required: false
schema:
type: number
format: double
- name: paymentProviderTransaction.ppTrxStatusCode
in: query
description: Returns transactions of the payment specified by this payment provider status code.
required: false
schema:
type: string
- name: orderBy
in: query
description: Returns transactions by this order field
required: false
schema:
type: string
- name: sortOrder
in: query
description: Returns transactions by this sort order
required: false
schema:
type: string
- name: startIndex
in: query
description: Returns transactions from that offset
required: false
schema:
type: string
- name: count
in: query
description: Returns the maximum number of transactions specified by this field
required: false
schema:
type: string
- name: amount.min
in: query
description: Returns transactions for that minimum amount.
required: false
schema:
type: string
- name: amount.max
in: query
description: Returns transactions for that maximum amount.
required: false
schema:
type: string
- name: paid.min
in: query
description: Returns transactions for that minimum paid.
required: false
schema:
type: string
- name: paid.max
in: query
description: Returns transactions for that maximum paid.
required: false
schema:
type: string
- name: refunded.min
in: query
description: Returns transactions with this minimum refund amount.
required: false
schema:
type: string
- name: refunded.max
in: query
description: Returns transactions with this maximum refund amount.
required: false
schema:
type: string
- name: createdAt.start
in: query
description: Returns transactions after this creation date
required: false
schema:
type: string
- name: createdAt.end
in: query
description: Returns transactions before this creation date
required: false
schema:
type: string
- name: updatedAt.start
in: query
description: Returns transactions after this update date
required: false
schema:
type: string
- name: updatedAt.end
in: query
description: Returns transactions before this update date
required: false
schema:
type: string
- name: processedAt.start
in: query
description: Returns transactions after this processing date
required: false
schema:
type: string
- name: processedAt.end
in: query
description: Returns transactions before this processing date
required: false
schema:
type: string
- name: completedAt.start
in: query
description: Returns transactions after this completion date
required: false
schema:
type: string
- name: completedAt.end
in: query
description: Returns transactions before this completion date
required: false
schema:
type: string
- name: paymentProviderTransaction.paymentProviderTransactionId
in: query
description: Returns transactions of the payment specified by this payment provider id.
required: false
schema:
type: string
- name: payment.description
in: query
description: Returns transactions with this payment description
required: false
schema:
type: string
- name: payment.fingerprint
in: query
description: Returns transactions with this payment fingerprint
required: false
schema:
type: string
- name: payment.merchant.merchantId
in: query
description: Returns transactions of the payment specified by this merchant identification.
required: false
schema:
type: string
- name: payment.paymentProvider.paymentProviderId
in: query
description: Returns transactions by this payment provider identification.
required: false
schema:
type: string
- name: payment.authorization.status
in: query
description: Returns transactions of the payments at this payment Authorization Status.
required: false
schema:
type: array
items:
type: string
- name: payment.fiAccount.providerId
in: query
description: Returns transactions of the payment specified by this payment provider identification.
required: false
schema:
type: string
- name: payment.fiAccount.accountNumber
in: query
description: Returns transactions of the payment specified by account number.
required: false
schema:
type: string
- name: payment.fiAccount.routingNumber
in: query
description: Returns transactions of the payment specified by routing number.
required: false
schema:
type: string
- name: payment.fiAccount.verified
in: query
description: Returns transactions of the payment if account is verified.
required: false
schema:
type: boolean
- name: ipAddr
in: query
description: Returns transactions with this IP address
required: false
schema:
type: string
- name: routingNumber
in: query
description: Returns transactions with this routing number
required: false
schema:
type: string
- name: accountNumber
in: query
description: Returns transactions with this account number
required: false
schema:
type: string
- name: customerName
in: query
description: Returns transactions with this customer name
required: false
schema:
type: string
- name: payment.customer.name
in: query
description: Returns transactions of the payment specified by customer name.
required: false
schema:
type: string
- name: payment.customer.externalId
in: query
description: Returns transactions of the payment specified by customer external identification.
required: false
schema:
type: string
- name: ignoreUserPortalTransactions
in: query
description: Returns transactions bypassing the portal user.
required: false
schema:
type: boolean
- name: payment.paymentProvider.framework
in: query
description: Returns transactions of the payment provider specified by framework.
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transactions_list-transactions_Response_200'
security:
- HTTPBasic: []
/transactions/{transactionId}/capture/preAuth:
post:
operationId: transactions_post-transactions-transactionId-capture-preauth
summary: Preauthorize transaction
description: The Preauthorize API allows the merchant to pre-authorize one or more captures up to the total pre-authorized
amount on a pre-authorized period interval in hours. Captures after the pre-authorized period interval are treated
as normal Captures (will need to pass the full balance and risk analysis to be guaranteed).
tags:
- transactions
parameters:
- name: transactionId
in: path
description: Authorization Transaction ID retrieved from a Trustly Deferred or Recurring transaction.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
requestBody:
description: ''
content:
application/json:
schema:
type: object
properties:
merchantReference:
type: string
description: A specific merchant reference for this preauthorization. For example, this could be a merchant
order number or the same merchant reference value used in the original establish call.
period:
type: integer
minimum: 1
maximum: 6
default: 0
description: Number of hours the preauthorization will be valid for.
amount:
type: string
description: The amount to be authorized. (maximum of 10 characters with support for 2 decimal places).
Required if the bank authorization was created with an amount of 0.00. If not specified, then the full
amount of the bank authorization will be used.
splitToken:
type: string
description: Token received on the Authorize event.
externalTier:
type: string
description: The merchant's tier associated with the customer (e.g. vip).
metadata.remittance.withdrawalMethod:
$ref: '#/components/schemas/TransactionsTransactionIdCapturePreAuthPostRequestBodyContentApplicationXWwwFormUrlencodedSchemaMetadataRemittanceWithdrawalMethod'
description: The method by which the recipient will receive the funds.
interactionId:
type: string
description: Optional interaction ID parameter for Preauthorization and Capture APIs, inclusion of which
signifies consumer interaction tied to data obtained from getTrustlyInteraction function. If not specified,
Trustly assumes the consumer is present in session. Set to "consumerNotPresent" to signify that the transaction
is merchant-initiated and the consumer is not present.
required:
- merchantReference
- period
- amount
security:
- HTTPBasic: []
/transactions/{transactionId}/reclaim:
post:
operationId: transactions_post-transactions-transactionId-reclaim
summary: Reclaim transaction
description: 'Reclaims a previously completed Deposit transaction (minimum of 0.99). You can optionally reclaim partially.
You can do so as many times as you wish until the entire deposited amount has been reclaimed.
A Deposit transaction can only be reclaimed after the transaction has been processed and completed.
Ensure you also implement an [event notification](/integrate/core-concepts/webhooks-and-events) handler to get transaction
status updates.'
tags:
- transactions
parameters:
- name: transactionId
in: path
description: Deposit Transaction ID retrieved from a Trustly Deposit transaction.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
requestBody:
description: ''
content:
application/json:
schema:
type: object
properties:
merchantReference:
type: string
description: A specific merchant reference for this reclaim. For example, this could be a merchant order
number or the same merchant reference value used in the original establish call.
amount:
type: string
maxLength: 10
description: The amount to be reclaimed which can be less or equal than the current balance of the deposit
transaction being reclaimed. If the value is omitted the remaining balance is reclaimed. (maximum of 10
characters with support for 2 decimal places)
required:
- amount
security:
- HTTPBasic: []
/transactions/{transactionId}/refresh:
post:
operationId: transactions_post-transactions-refresh
summary: Refresh a transaction
description: Refresh allows for data associated with a transaction to be updated to the most recent available.
tags:
- transactions
parameters:
- name: transactionId
in: path
description: Authorization Transaction ID retrieved from a Trustly Deferred or Recurring transaction, or Preauthorization
Transaction ID retrieved from a Trustly Preauthorize API.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transactions_post-transactions-refresh_Response_200'
requestBody:
description: ''
content:
application/json:
schema:
type: object
properties:
splitToken:
type: string
description: 'Token received from the Authorize event. Note: string value must be URL encoded.'
required:
- splitToken
security:
- HTTPBasic: []
/transactions/{transactionId}/refund:
post:
operationId: transactions_post-transactions-refund
summary: Refund transaction
description: 'Refunds a previously completed Capture or Instant transaction (minimum of 0.99). You can optionally refund
partially. You can do so as many times as you wish until the entire collected amount has been refunded.
A *Capture* or *Pay* transaction can only be refunded after the bank money collection has been processed and completed.
Ensure you also implement an Event Notification Handler to get transaction status updates.'
tags:
- transactions
parameters:
- name: transactionId
in: path
description: Capture Transaction ID retrieved from a Trustly Capture transaction.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
requestBody:
description: ''
content:
application/json:
schema:
type: object
properties:
merchantReference:
type: string
description: A specific merchant reference for this refund. For example, this could be a merchant order
number or the same merchant reference value used in the original establish call.
amount:
type: string
description: The amount to be refunded which can be less or equal than the current balance of the transaction
being refunded. If the value is omitted the remaining balance is refunded. (maximum of 10 characters with
support for 2 decimal places)
security:
- HTTPBasic: []
/transactions/{transactionId}:
get:
operationId: transactions_get-transaction
summary: Retrieve a transaction
description: This endpoint allows you to retrieve comprehensive details about a transaction using its unique identifier
`transactionId`. The response includes key transaction information, such as the transaction status, as well as amounts,
and account details for payment or authorization transactions. This endpoint is useful for checking the current state
of a transaction or verifying transaction information after processing.
tags:
- transactions
parameters:
- name: transactionId
in: path
description: Transaction ID retrieved from Trustly.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
security:
- HTTPBasic: []
/transactions/{transactionId}/payment/customer/verify:
get:
operationId: verifyCustomer_get-verify-customer
summary: Get customer verification data
description: Retrieves verification results for a given transaction. Returns a match result for each attribute compared.
tags:
- verifyCustomer
parameters:
- name: transactionId
in: path
description: Transaction ID retrieved from a Trustly Authorization transaction.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Verify_Customer_get-verify-customer_Response_200'
'400':
description: One or more required fields are missing from the request object.
content:
application/json:
schema:
$ref: '#/components/schemas/Get-verify-customerRequestBadRequestError'
'401':
description: Access not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/Get-verify-customerRequestUnauthorizedError'
security:
- HTTPBasic: []
tags:
- name: accountData
- name: accounts
- name: countries
- name: customers
- name: disputeManagement
- name: identity
- name: networkCheckApi
- name: paymentProviders
- name: payments
- name: transactions
- name: verifyCustomer
servers:
- url: https://trustly.one/api/v1
description: Production
- url: https://sandbox.trustly.one/api/v1
description: Sandbox
webhooks:
eventNotifications_Authorize:
post:
operationId: eventNotifications_Authorize
summary: Authorize
description: The `Authorize` event indicates that the user has successfully authorized the transaction with their bank.
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventAuthorize'
eventNotifications_Completed:
post:
operationId: eventNotifications_Completed
summary: Completed
description: The `Completed` event indicates that the funds for a transaction have successfully settled.
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventCompleted'
eventNotifications_DataReady:
post:
operationId: eventNotifications_DataReady
summary: Data Ready
description: The `DataReady` event indicates that all bank-qualified data, such as account details and balance, has
been retrieved and is ready for consumption. Wait for this event before calling Account Data endpoints.
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventDataReady'
eventNotifications_Dispute:
post:
operationId: eventNotifications_Dispute
summary: Dispute
description: The `Dispute` indicates that a transaction received a return that generated a dispute. The returnType property
specifies the type of return
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
type: object
properties:
createdAt:
type: string
format: int64
description: The timestamp when the event was created, represented as a Unix timestamp in milliseconds.
eventId:
type: string
description: Unique identifier for the event.
eventType:
type: string
description: The type of event that triggered the webhook.
objectId:
type: string
description: Unique identifier for the object associated with the event, such as a transaction.
objectType:
type: string
description: The type of object associated with the event.
reference:
type: string
transactionId:
type: string
transactionDatetime:
type: string
returnType:
type: string
customerId:
type: string
returnDatetime:
type: string
amountReturned:
type: string
eventNotifications_Establish:
post:
operationId: eventNotifications_Establish
summary: Establish
description: The `Establish` event indicates that a new transaction has been created. This occurs when a user activates
the Trustly User Interface (UI) or when you create a transaction using the API
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventEstablish'
eventNotifications_Expired:
post:
operationId: eventNotifications_Expired
summary: Expired
description: The `Expired` event indicates that a transaction or session timed out before the user completed the flow.
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventExpire'
eventNotifications_Failed:
post:
operationId: eventNotifications_Failed
summary: Failed
description: The `Failed` event indicates that the transaction could not be completed because of an error, decline,
or cancellation.
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventFailed'
eventNotifications_Refresh:
post:
operationId: eventNotifications_Refresh
summary: Refresh
description: The `Refresh` event indicates that the account data for a transaction has been successfully refreshed.
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventRefresh'
eventNotifications_Update:
post:
operationId: eventNotifications_Update
summary: Update
description: The `Update` event indicates that the status of a transaction has changed. For example, when a transaction
moves from `Pending` to `Authorized`
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventUpdate'
eventNotifications_VerifyCustomer:
post:
operationId: eventNotifications_VerifyCustomer
summary: Verify Customer
description: The `VerifyCustomer` event provides the result of the identity verification check performed against the
data from the bank.
responses:
'200':
description: Webhook received successfully
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EventVerifyCustomer'
components:
schemas:
TransactionsTransactionIdAccountSummaryGetResponsesContentApplicationJsonSchemaSummaryItemsAggregationsItems:
type: object
properties:
days:
type: integer
activityEarliestDate:
type: integer
activityLatestDate:
type: integer
balanceMax:
type: string
balanceMin:
type: string
balanceAvg:
type: string
depositCount:
type: integer
depositAmountTotal:
type: string
depositAmountMax:
type: string
withdrawalCount:
type: integer
withdrawalAmountTotal:
type: string
withdrawalAmountMax:
type: string
overdraftCount:
type: integer
overdraftAmountTotal:
type: string
nsfCount:
type: integer
nsfFeeAmountTotal:
type: string
title: TransactionsTransactionIdAccountSummaryGetResponsesContentApplicationJsonSchemaSummaryItemsAggregationsItems
TransactionsTransactionIdAccountSummaryGetResponsesContentApplicationJsonSchemaSummaryItems:
type: object
properties:
selectedAccount:
type: boolean
currency:
type: string
nameOnAccount:
type: string
accountNumber:
type: string
routingNumber:
type: string
aggregations:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdAccountSummaryGetResponsesContentApplicationJsonSchemaSummaryItemsAggregationsItems'
title: TransactionsTransactionIdAccountSummaryGetResponsesContentApplicationJsonSchemaSummaryItems
Account_Data_get-transaction-account-summary_Response_200:
type: object
properties:
customerId:
type: string
lastUpdated:
type: integer
summary:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdAccountSummaryGetResponsesContentApplicationJsonSchemaSummaryItems'
title: Account Data_get-transaction-account-summary_Response_200
TransactionsTransactionIdAccountSummaryGetResponsesContentApplicationJsonSchemaErrorsItems:
type: object
properties:
domain:
type: string
minLength: 1
code:
type: number
format: double
location:
type: string
minLength: 1
message:
type: string
minLength: 1
occurredAt:
type: number
format: double
required:
- domain
- code
- location
- message
- occurredAt
title: TransactionsTransactionIdAccountSummaryGetResponsesContentApplicationJsonSchemaErrorsItems
Get-transaction-account-summaryRequestBadRequestError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdAccountSummaryGetResponsesContentApplicationJsonSchemaErrorsItems'
required:
- errors
title: Get-transaction-account-summaryRequestBadRequestError
PaymentProvider2SubType:
type: string
enum:
- '1000'
- '2000'
- '2001'
description: "Financial Institution Account Type:\n * `1000`: Online Banking\n * `2000`: Manual Entry\n * `2001`: Manual\
\ Entry with Challenge Deposit\n"
title: PaymentProvider2SubType
Address3Country:
type: string
enum:
- US
description: 2 character ISO Country code. Currently only the US is supported.
title: Address3Country
Address-3:
type: object
properties:
address1:
type: string
minLength: 1
description: Address Line 1.
city:
type: string
minLength: 1
description: Address City.
state:
type: string
minLength: 1
description: 2 character ISO State code.
zip:
type: string
minLength: 1
description: 5 character US Zip Code.
country:
$ref: '#/components/schemas/Address3Country'
description: 2 character ISO Country code. Currently only the US is supported.
address2:
type: string
description: Address Line 2.
required:
- country
title: Address-3
PaymentProvider2Country:
type: string
enum:
- US
- CA
- UK
- DE
- AU
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US, CA,
UK, DE, and AU are supported.
title: PaymentProvider2Country
PaymentProvider-2:
type: object
properties:
paymentProviderId:
type: string
minLength: 1
description: A unique identifier for the Payment Provider.
type:
type: number
format: double
name:
type: string
minLength: 1
description: Payment Provider name.
instantPayoutAvailable:
type: boolean
description: Whether payment provider supports instant payout.
subType:
$ref: '#/components/schemas/PaymentProvider2SubType'
description: "Financial Institution Account Type:\n * `1000`: Online Banking\n * `2000`: Manual Entry\n * `2001`:\
\ Manual Entry with Challenge Deposit\n"
swift:
type: string
address:
$ref: '#/components/schemas/Address-3'
country:
$ref: '#/components/schemas/PaymentProvider2Country'
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US,
CA, UK, DE, and AU are supported.
instantPayment:
type: boolean
required:
- paymentProviderId
- type
- name
- instantPayoutAvailable
title: PaymentProvider-2
? TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaAccountBalanceAccountCountry
: type: string
enum:
- US
- CA
- UK
- DE
- AU
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US, CA,
UK, DE, and AU are supported.
title: TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaAccountBalanceAccountCountry
FinancialInstitutionAccountVerificationType:
type: string
enum:
- '1'
- '2'
- '3'
description: "Verification Type:\n * `1`: Manual - The account was verified with manual account verification. For example,\
\ Manual Electronic Check and Micro Challenge Deposit.\n * `2`: Online Banking verification\t- The Account was verified\
\ using the Trustly Online Banking application.\n * `3`: Database verification\t- The Account was verified using the\
\ Trustly database or a Third-Party Service. \n"
title: FinancialInstitutionAccountVerificationType
FinancialInstitutionAccountVerificationScore:
type: string
enum:
- '0'
- '1'
- '2'
- '3'
- '4'
- '5'
- '6'
- '7'
- '8'
- '9'
- '10'
description: "Verification Score:\n * `0`: Invalid input. The account or routing number are invalid. (Verified Mapping\
\ = false)\n * `1`: There is a strong indication that the account is invalid. (Verified Mapping = false)\n * `2`:\
\ There are active non-bankable returns on this account that are less than 3 years old. (Verified Mapping = false)\n\
\ * `3`: There are administrative returns on this account. (Verified Mapping = false)\n * `4`: The format appears\
\ to be suspicious. (Verified Mapping = false)\n * `5`: There is no data on this account or format. (Verified Mapping\
\ = false)\n * `6`: We have not seen this account, but the format appears to be valid. (Verified Mapping = true)\n\
\ * `7`: We have seen this account but have not received a final disposition on the transaction. (Verified Mapping\
\ = true)\n * `8`: We have seen this account, but not in the last 6 months, and have seen no returns associated with\
\ the account. (Verified Mapping = true)\n * `9`: We have seen this account in the last 6 months and have seen no\
\ returns associated with the account. (Verified Mapping = true)\n * `10`: This account has been directly validated\
\ with/by the financial institution or 3rd party. We have the highest confidence that this account is valid. (Verified\
\ Mapping = true)\n"
title: FinancialInstitutionAccountVerificationScore
FinancialInstitutionAccountVerificationThirdPartyScore:
type: string
enum:
- '0'
- '100'
- '200'
- '300'
- '400'
- '500'
- '600'
- '700'
- '800'
- '900'
- '999'
description: "Verification Third-Party Score:\n * `0`: Failed RT validation. (Verified Mapping = 0)\n * `100`: The supplier\
\ has a strong indication that this account is invalid. (Verified Mapping = 1)\n * `200`: The supplier has active\
\ non-bankable debt(s) on this account that are less than 3 years old. (Verified Mapping = 2)\n * `300`: The supplier\
\ has administrative returns on this account. (Verified Mapping = 3)\n * `400`: The supplier does not have Neg data\
\ on this account, but the format appears to be suspicious. (Verified Mapping = 4)\n * `500`: The supplier does not\
\ have data on this account or format. (Verified Mapping = 5)\n * `600`: The supplier has not seen this account, but\
\ the format appears valid. (Verified Mapping = 6)\n * `700`: The supplier has seen this account, but did not receive\
\ a final disposition on the transaction. (Verified Mapping = 7)\n * `800`: The supplier has seen this account, but\
\ not in the last 6 months. (Verified Mapping = 8)\n * `900`: The supplier has seen this account in the last 6 months.\
\ (Verified Mapping = 9)\n * `999`: The supplier has the highest confidence that this account is valid. (Verified\
\ Mapping = 10)\n"
title: FinancialInstitutionAccountVerificationThirdPartyScore
FinancialInstitutionAccountVerification:
type: object
properties:
verified:
type: boolean
description: true if the account is verified; false otherwise.
type:
$ref: '#/components/schemas/FinancialInstitutionAccountVerificationType'
description: "Verification Type:\n * `1`: Manual - The account was verified with manual account verification. For\
\ example, Manual Electronic Check and Micro Challenge Deposit.\n * `2`: Online Banking verification\t- The Account\
\ was verified using the Trustly Online Banking application.\n * `3`: Database verification\t- The Account was\
\ verified using the Trustly database or a Third-Party Service. \n"
hasEnoughFunds:
type: boolean
description: If true, there is enough balance in account.
verificationDate:
type: integer
description: "The date and time the verification was completed \n as a UNIX timestamp."
score:
$ref: '#/components/schemas/FinancialInstitutionAccountVerificationScore'
description: "Verification Score:\n * `0`: Invalid input. The account or routing number are invalid. (Verified Mapping\
\ = false)\n * `1`: There is a strong indication that the account is invalid. (Verified Mapping = false)\n * `2`:\
\ There are active non-bankable returns on this account that are less than 3 years old. (Verified Mapping = false)\n\
\ * `3`: There are administrative returns on this account. (Verified Mapping = false)\n * `4`: The format appears\
\ to be suspicious. (Verified Mapping = false)\n * `5`: There is no data on this account or format. (Verified\
\ Mapping = false)\n * `6`: We have not seen this account, but the format appears to be valid. (Verified Mapping\
\ = true)\n * `7`: We have seen this account but have not received a final disposition on the transaction. (Verified\
\ Mapping = true)\n * `8`: We have seen this account, but not in the last 6 months, and have seen no returns associated\
\ with the account. (Verified Mapping = true)\n * `9`: We have seen this account in the last 6 months and have\
\ seen no returns associated with the account. (Verified Mapping = true)\n * `10`: This account has been directly\
\ validated with/by the financial institution or 3rd party. We have the highest confidence that this account is\
\ valid. (Verified Mapping = true)\n"
thirdPartyScore:
$ref: '#/components/schemas/FinancialInstitutionAccountVerificationThirdPartyScore'
description: "Verification Third-Party Score:\n * `0`: Failed RT validation. (Verified Mapping = 0)\n * `100`: The\
\ supplier has a strong indication that this account is invalid. (Verified Mapping = 1)\n * `200`: The supplier\
\ has active non-bankable debt(s) on this account that are less than 3 years old. (Verified Mapping = 2)\n * `300`:\
\ The supplier has administrative returns on this account. (Verified Mapping = 3)\n * `400`: The supplier does\
\ not have Neg data on this account, but the format appears to be suspicious. (Verified Mapping = 4)\n * `500`:\
\ The supplier does not have data on this account or format. (Verified Mapping = 5)\n * `600`: The supplier has\
\ not seen this account, but the format appears valid. (Verified Mapping = 6)\n * `700`: The supplier has seen\
\ this account, but did not receive a final disposition on the transaction. (Verified Mapping = 7)\n * `800`:\
\ The supplier has seen this account, but not in the last 6 months. (Verified Mapping = 8)\n * `900`: The supplier\
\ has seen this account in the last 6 months. (Verified Mapping = 9)\n * `999`: The supplier has the highest confidence\
\ that this account is valid. (Verified Mapping = 10)\n"
numberOfTries:
type: number
format: double
description: Number of tries allowed.
numberOfAttemptsLeft:
type: number
format: double
description: Number of remaining attempts.
required:
- verified
- type
- hasEnoughFunds
- verificationDate
title: FinancialInstitutionAccountVerification
TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaAccountBalanceAccount:
type: object
properties:
providerId:
type: string
description: Payment provider ID.
paymentProvider:
$ref: '#/components/schemas/PaymentProvider-2'
nameOnAccount:
type: string
description: Account owner name.
country:
$ref: '#/components/schemas/TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaAccountBalanceAccountCountry'
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US,
CA, UK, DE, and AU are supported.
name:
type: string
description: A description to identify an specific account (e.g. "Test checking account")
type:
type: number
format: double
description: See Financial Institution Account Type Values.
profile:
type: number
format: double
description: See Financial Institution Account Profile Values
accountNumber:
type: string
minLength: 1
description: Bank Account Number or VAN if `virtualAccountRoutingPair` is equal to `true`.
iban:
type: string
description: IBAN (International Bank Account Number) is an internationally agreed system of identifying bank accounts
across national borders
verified:
type: boolean
description: Indicates if the account is verified or not.
verification:
$ref: '#/components/schemas/FinancialInstitutionAccountVerification'
source:
type: number
format: double
routingNumber:
type: string
minLength: 1
description: Bank Routing Number.
token:
type: string
minLength: 1
description: The Account Token.
accountNumberLastFour:
type: string
description: The last 4 digits of the real account number.
virtualAccountRoutingPair:
type: boolean
description: Indicates if account is using virtual/tokenized account and routing numbers (VANs/TANs) or not.
taxId:
type: string
description: (Only Brazilian Accounts) Personal or business taxpayer identifier.
title: TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaAccountBalanceAccount
TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaAccountBalance:
type: object
properties:
account:
$ref: '#/components/schemas/TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaAccountBalanceAccount'
available:
type: string
minLength: 1
description: Funds currently available for withdrawal or spending (after pending transactions). Returns a decimal
numeric string.
currency:
type: string
minLength: 1
amount:
type: string
minLength: 1
required:
- account
- currency
title: TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaAccountBalance
Account_Data_get-transactions-account-balance_Response_200:
type: object
properties:
accountBalance:
$ref: '#/components/schemas/TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaAccountBalance'
required:
- accountBalance
title: Account Data_get-transactions-account-balance_Response_200
TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaErrorsItems:
type: object
properties:
domain:
type: string
minLength: 1
code:
type: number
format: double
location:
type: string
minLength: 1
message:
type: string
minLength: 1
occurredAt:
type: number
format: double
required:
- domain
- code
- location
- message
- occurredAt
title: TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaErrorsItems
Get-transactions-account-balanceRequestBadRequestError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdPaymentPaymentProviderAccountBalanceGetResponsesContentApplicationJsonSchemaErrorsItems'
required:
- errors
title: Get-transactions-account-balanceRequestBadRequestError
TransactionsTransactionIdPaymentPaymentProviderUserGetParametersExpandSchemaItems:
type: string
enum:
- customer.segmentedName
- names
- contact
- account.paymentProvider.routinginfo
- account.paymentProvider.address
title: TransactionsTransactionIdPaymentPaymentProviderUserGetParametersExpandSchemaItems
SegmentedName:
type: object
properties:
title:
type: string
description: The title of a given full name.
firstName:
type: string
description: The first name of a given full name.
middleName:
type: array
items:
type: string
description: The list of middle names of a given full name.
lastName:
type: string
description: The last name of a given full name.
suffix:
type: string
description: The suffix of a given full name.
description: The segmented version of a given name.
title: SegmentedName
FIUser:
type: object
properties:
fingerprint:
type: string
description: Internal use only.
paymentProvider:
$ref: '#/components/schemas/PaymentProvider-2'
name:
type: array
items:
description: Any type
description: Array of User Name's associated with the Bank Account.
address:
type: array
items:
$ref: '#/components/schemas/Address-3'
description: Array of Addresses associated with the Bank Account. See Address Object.
phone:
type: array
items:
description: Any type
description: Array of Phone Numbers associated with the Bank Account.
email:
type: array
items:
description: Any type
description: Array of Email Addresses associated with the Bank Account.
createdAt:
type: integer
description: Timestamp representing the time the User Object was created.
updatedAt:
type: integer
description: Timestamp representing the time the User Object was last updated.
segmentedName:
$ref: '#/components/schemas/SegmentedName'
description: Financial Institution User
title: FIUser
TransactionsTransactionIdPaymentPaymentProviderUserGetResponsesContentApplicationJsonSchemaErrorsItems:
type: object
properties:
domain:
type: string
minLength: 1
code:
type: number
format: double
location:
type: string
minLength: 1
message:
type: string
minLength: 1
occurredAt:
type: number
format: double
required:
- domain
- code
- location
- message
- occurredAt
title: TransactionsTransactionIdPaymentPaymentProviderUserGetResponsesContentApplicationJsonSchemaErrorsItems
Get-userRequestBadRequestError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdPaymentPaymentProviderUserGetResponsesContentApplicationJsonSchemaErrorsItems'
required:
- errors
title: Get-userRequestBadRequestError
Account2Country:
type: string
enum:
- US
- CA
- UK
- DE
- AU
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US, CA,
UK, DE, and AU are supported.
title: Account2Country
Account-2:
type: object
properties:
providerId:
type: string
description: Payment provider ID.
paymentProvider:
$ref: '#/components/schemas/PaymentProvider-2'
nameOnAccount:
type: string
description: Account owner name.
country:
$ref: '#/components/schemas/Account2Country'
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US,
CA, UK, DE, and AU are supported.
name:
type: string
description: A description to identify an specific account (e.g. "Test checking account")
type:
type: number
format: double
description: See Financial Institution Account Type Values.
profile:
type: number
format: double
description: See Financial Institution Account Profile Values
accountNumber:
type: string
minLength: 1
description: Bank Account Number or VAN if `virtualAccountRoutingPair` is equal to `true`.
iban:
type: string
description: IBAN (International Bank Account Number) is an internationally agreed system of identifying bank accounts
across national borders
verified:
type: boolean
description: Indicates if the account is verified or not.
verification:
$ref: '#/components/schemas/FinancialInstitutionAccountVerification'
source:
type: number
format: double
routingNumber:
type: string
minLength: 1
description: Bank Routing Number.
token:
type: string
minLength: 1
description: The Account Token.
accountNumberLastFour:
type: string
description: The last 4 digits of the real account number.
virtualAccountRoutingPair:
type: boolean
description: Indicates if account is using virtual/tokenized account and routing numbers (VANs/TANs) or not.
title: Account-2
Account_Data_list-selected-accounts_Response_200:
type: object
properties:
accounts:
type: array
items:
$ref: '#/components/schemas/Account-2'
required:
- accounts
title: Account Data_list-selected-accounts_Response_200
TransactionsTransactionIdPaymentPaymentProviderAccountsGetResponsesContentApplicationJsonSchemaErrorsItems:
type: object
properties:
domain:
type: string
minLength: 1
code:
type: number
format: double
location:
type: string
minLength: 1
message:
type: string
minLength: 1
occurredAt:
type: number
format: double
required:
- domain
- code
- location
- message
- occurredAt
title: TransactionsTransactionIdPaymentPaymentProviderAccountsGetResponsesContentApplicationJsonSchemaErrorsItems
List-selected-accountsRequestBadRequestError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdPaymentPaymentProviderAccountsGetResponsesContentApplicationJsonSchemaErrorsItems'
required:
- errors
title: List-selected-accountsRequestBadRequestError
FeedbackPostRequestBodyContentApplicationJsonSchemaAccount:
type: object
properties:
accountNumber:
type: string
minLength: 6
routingNumber:
type: string
minLength: 6
token:
type: string
description: The token received as return of the Tokenize API.
description: The token is required only when account number and routing number are not sent and vice-versa.
title: FeedbackPostRequestBodyContentApplicationJsonSchemaAccount
FeedbackStatus:
type: string
enum:
- '2'
- '3'
- '4'
- '5'
- '6'
- '7'
- '9'
- '10'
- '13'
description: 'The final status of the payment operation:
* `2`: Authorized
* `3`: Processed
* `4`: Completed
* `5`: Failed
* `6`: Expired
* `7`: Canceled
* `9`: Disputed
* `10`: Reversed
* `13`: Voided'
title: FeedbackStatus
FeedbackCurrency:
type: string
enum:
- USD
description: 3-letter ISO Currency Code. Currently only USD is supported.
title: FeedbackCurrency
Feedback:
type: object
properties:
externalId:
type: string
description: The merchant reference of the payment.
status:
$ref: '#/components/schemas/FeedbackStatus'
description: 'The final status of the payment operation:
* `2`: Authorized
* `3`: Processed
* `4`: Completed
* `5`: Failed
* `6`: Expired
* `7`: Canceled
* `9`: Disputed
* `10`: Reversed
* `13`: Voided'
subStatus:
type: string
description: 'The ACH return code. Example:
* `R01`: Insufficient Fund
* `R04`: Invalid Account Number
* `R16`: Account Frozen'
description:
type: string
description: Unrestricted field to inform any description about the payment.
submissionDate:
type: number
format: double
description: The Unix Timestamp (epoch) in ms of when the payment was sent to ACH.
returnDate:
type: number
format: double
description: The Unix Timestamp (epoch) in ms of when ACH provided a return.
amount:
type: string
minLength: 1
description: The amount of the payment. (10 characters with support for 2 decimal places)
currency:
$ref: '#/components/schemas/FeedbackCurrency'
description: 3-letter ISO Currency Code. Currently only USD is supported.
required:
- status
- subStatus
description: The resulting feedback of an ACH transaction
title: Feedback
Accounts_post-account-feedback_Response_200:
type: object
properties:
message:
type: string
description: Successful message.
title: Accounts_post-account-feedback_Response_200
BaseException:
type: object
properties:
domain:
type: string
code:
type: integer
location:
type: string
message:
type: string
occurredAt:
type: integer
title: BaseException
AccountsTokenizePostRequestBodyContentApplicationJsonSchemaAccount:
type: object
properties:
accountNumber:
type: string
minLength: 6
routingNumber:
type: string
minLength: 6
iban:
type: string
minLength: 15
description: IBAN (International Bank Account Number) is an internationally agreed system of identifying bank accounts
across national borders
nameOnAccount:
type: string
description: The name of the account owner for name verification purposes.
title: AccountsTokenizePostRequestBodyContentApplicationJsonSchemaAccount
AccountsTokenizePostResponsesContentApplicationJsonSchemaType:
type: string
enum:
- '-1'
- '0'
- '1'
- '2'
description: "Financial Institution Account Type:\n * `-1`: Unknown\n * `0`: Other\n * `1`: Checking\n * `2`: Savings\
\ \n"
title: AccountsTokenizePostResponsesContentApplicationJsonSchemaType
AccountsTokenizePostResponsesContentApplicationJsonSchemaProfile:
type: string
enum:
- '-1'
- '0'
- '1'
- '2'
description: "Financial Institution Account Profile:\n * `-1`: Unknown\n * `0`: Other\n * `1`: Personal\n * `2`: Business\
\ \n"
title: AccountsTokenizePostResponsesContentApplicationJsonSchemaProfile
PaymentProviderSubType:
type: string
enum:
- '1000'
- '2000'
- '2001'
description: "Financial Institution Account Type:\n * `1000`: Online Banking\n * `2000`: Manual Entry\n * `2001`: Manual\
\ Entry with Challenge Deposit\n"
title: PaymentProviderSubType
Address:
type: object
properties:
address1:
type: string
minLength: 1
description: Address line 1 (e.g., street or PO Box)
address2:
type: string
description: Address line 2 (e.g., apartment, suite or unit number)
city:
type: string
minLength: 1
description: City, district, town or village
state:
type: string
minLength: 2
description: State, province or region code
zip:
type: string
minLength: 5
description: ZIP or Postal Code
country:
type: string
minLength: 2
description: 2 character [ISO Country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
required:
- country
description: Valid mailing or billing address associated with the customer
title: Address
PaymentProviderCountry:
type: string
enum:
- US
- CA
- UK
- DE
- AU
description: 2-letter ISO country code of the financial institution
title: PaymentProviderCountry
PaymentProvider:
type: object
properties:
paymentProviderId:
type: string
minLength: 1
description: A unique identifier for the Payment Provider.
type:
type: number
format: double
name:
type: string
minLength: 1
description: Name of the payment provider
instantPayoutAvailable:
type: boolean
description: Whether payment provider supports instant payout.
subType:
$ref: '#/components/schemas/PaymentProviderSubType'
description: "Financial Institution Account Type:\n * `1000`: Online Banking\n * `2000`: Manual Entry\n * `2001`:\
\ Manual Entry with Challenge Deposit\n"
swift:
type: string
address:
$ref: '#/components/schemas/Address'
country:
$ref: '#/components/schemas/PaymentProviderCountry'
description: 2-letter ISO country code of the financial institution
instantPayment:
type: boolean
required:
- name
description: Details of the Financial institution
title: PaymentProvider
AccountsTokenizePostResponsesContentApplicationJsonSchemaCountry:
type: string
enum:
- US
- CA
- UK
- DE
- AU
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US, CA,
UK, DE, and AU are supported.
title: AccountsTokenizePostResponsesContentApplicationJsonSchemaCountry
Accounts_post-accounts-tokenize_-verifyAccount_Response_200:
type: object
properties:
nameOnAccount:
type: string
minLength: 1
description: Account owner name.
name:
type: string
minLength: 1
description: Account name.
type:
$ref: '#/components/schemas/AccountsTokenizePostResponsesContentApplicationJsonSchemaType'
description: "Financial Institution Account Type:\n * `-1`: Unknown\n * `0`: Other\n * `1`: Checking\n * `2`: Savings\
\ \n"
profile:
$ref: '#/components/schemas/AccountsTokenizePostResponsesContentApplicationJsonSchemaProfile'
description: "Financial Institution Account Profile:\n * `-1`: Unknown\n * `0`: Other\n * `1`: Personal\n * `2`:\
\ Business \n"
verification:
$ref: '#/components/schemas/FinancialInstitutionAccountVerification'
accountNumber:
type: string
minLength: 1
maxLength: 4
description: Financial institution account number
routingNumber:
type: string
minLength: 1
maxLength: 17
description: Bank Routing Number provided by the selected account.
iban:
type: string
minLength: 1
description: IBAN (International Bank Account Number) is an internationally agreed system of identifying bank accounts
across national borders
token:
type: string
minLength: 1
description: Account token for the returned account. This can be used to identify duplicate bank accounts in your
system.
accountId:
type: string
providerId:
type: string
paymentProvider:
$ref: '#/components/schemas/PaymentProvider'
verified:
type: boolean
description: If true, the account is verified.
country:
$ref: '#/components/schemas/AccountsTokenizePostResponsesContentApplicationJsonSchemaCountry'
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US,
CA, UK, DE, and AU are supported.
required:
- name
- type
- profile
- verification
- accountNumber
- token
- verified
description: Financial Institution account
title: Accounts_post-accounts-tokenize?-verifyAccount_Response_200
Post-accounts-tokenize_-verifyAccountRequestBadRequestError:
type: object
properties:
message:
type: string
title: Post-accounts-tokenize?-verifyAccountRequestBadRequestError
AccountsVerifyPostRequestBodyContentApplicationJsonSchemaAccount:
type: object
properties:
accountNumber:
type: string
minLength: 6
routingNumber:
type: string
minLength: 6
iban:
type: string
minLength: 15
description: IBAN (International Bank Account Number) is an internationally agreed system of identifying bank accounts
across national borders
nameOnAccount:
type: string
description: The name of the account owner for name verification purposes.
title: AccountsVerifyPostRequestBodyContentApplicationJsonSchemaAccount
FinancialInstitutionAccountType:
type: string
enum:
- '-1'
- '0'
- '1'
- '2'
description: "Financial Institution Account Type:\n * `-1`: Unknown\n * `0`: Other\n * `1`: Checking\n * `2`: Savings\
\ \n"
title: FinancialInstitutionAccountType
FinancialInstitutionAccountProfile:
type: string
enum:
- '-1'
- '0'
- '1'
- '2'
description: "Financial Institution Account Profile:\n * `-1`: Unknown\n * `0`: Other\n * `1`: Personal\n * `2`: Business\
\ \n"
title: FinancialInstitutionAccountProfile
FinancialInstitutionAccountCountry:
type: string
enum:
- US
- CA
- UK
- DE
- AU
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US, CA,
UK, DE, and AU are supported.
title: FinancialInstitutionAccountCountry
FinancialInstitutionAccount:
type: object
properties:
nameOnAccount:
type: string
minLength: 1
description: Account owner name.
name:
type: string
minLength: 1
description: Account name.
type:
$ref: '#/components/schemas/FinancialInstitutionAccountType'
description: "Financial Institution Account Type:\n * `-1`: Unknown\n * `0`: Other\n * `1`: Checking\n * `2`: Savings\
\ \n"
profile:
$ref: '#/components/schemas/FinancialInstitutionAccountProfile'
description: "Financial Institution Account Profile:\n * `-1`: Unknown\n * `0`: Other\n * `1`: Personal\n * `2`:\
\ Business \n"
verification:
$ref: '#/components/schemas/FinancialInstitutionAccountVerification'
accountNumber:
type: string
minLength: 1
maxLength: 4
description: Last 4 digits of the bank account selected
routingNumber:
type: string
minLength: 1
maxLength: 17
description: Bank Routing Number provided by the selected account.
iban:
type: string
minLength: 1
description: IBAN (International Bank Account Number) is an internationally agreed system of identifying bank accounts
across national borders
token:
type: string
minLength: 1
description: Account token for the returned account. This can be used to identify duplicate bank accounts in your
system.
accountId:
type: string
providerId:
type: string
paymentProvider:
$ref: '#/components/schemas/PaymentProvider'
verified:
type: boolean
description: If true, the account is verified.
country:
$ref: '#/components/schemas/FinancialInstitutionAccountCountry'
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US,
CA, UK, DE, and AU are supported.
required:
- name
- type
- profile
- verification
- accountNumber
- token
- verified
description: Financial Institution account
title: FinancialInstitutionAccount
Get-accounts-verifyRequestBadRequestError:
type: object
properties:
message:
type: string
title: Get-accounts-verifyRequestBadRequestError
CountriesGetParametersCountry:
type: string
enum:
- US
- CA
- UK
- DE
- AU
title: CountriesGetParametersCountry
PaymentType:
type: string
enum:
- instant
- deferred
- recurring
- disbursement
- verification
- retrieval
description: "Payment Type:\n * `instant`: Instant payment. The debit instruction is automatically initiated with that\
\ day''s batch after consumer authorization.\n * `deferred`: Deferred payment. Payment is authorized but the capture\
\ operation must be called to initiate the debit. You can start to initiate multiple captures that are less than or\
\ equal to the original transaction authorization amount.\n * `recurring`: Recurring payment. Same as deferred but\
\ associated to a payment agreement between consumer and merchant that defines how much and when the capture can be\
\ started.\n * `disbursement`: Disbursement payment. This payment type can only be used for disbursements.\n * `verification`:\
\ This payment type is used to verify the customer financial institution account as the payments will be done outside\
\ of the Trustly system.\n * `retrieval`: Data retrieval. This payment type is used to retrieve account and user\
\ information from Trustly without an associated payment request. This payment type is not enabled by default. Contact\
\ Trustly if you need this feature."
title: PaymentType
PaymentProviderSubtype:
type: string
enum:
- '1000'
- '2000'
- '2001'
description: "Payment Provider Subtype:\n * `1000`: EasyOnline\n * `2000`: MEC\n * `2001`: MCD"
title: PaymentProviderSubtype
Country:
type: object
properties:
numericCode:
type: integer
description: Number Country numeric code defined in ISO 3166-1
alpha2Code:
type: string
description: Country alpha2 code defined in ISO 3166-1
alpha3Code:
type: string
description: Country alpha3 code defined in ISO 3166-1
name:
type: string
description: Country name
currencies:
type: array
items:
type: string
description: Array of currencies supported by country
paymentTypes:
type: array
items:
$ref: '#/components/schemas/PaymentType'
description: Array of payment types supported by country
paymentProviderSubtypes:
type: array
items:
$ref: '#/components/schemas/PaymentProviderSubtype'
description: 'Array of Payment Provider Subtypes values supported by country '
enabled:
type: boolean
description: Indicates if the country is currently supported
title: Country
Countries_get-countries_Response_200:
type: object
properties:
countries:
type: array
items:
$ref: '#/components/schemas/Country'
title: Countries_get-countries_Response_200
Get-countriesRequestBadRequestError:
type: object
properties:
message:
type: string
title: Get-countriesRequestBadRequestError
CustomerCustomData:
type: object
properties: {}
description: Object for sending merchant-specific custom data.
title: CustomerCustomData
DriverLicense:
type: object
properties:
number:
type: string
description: Driver License number.
state:
type: string
description: 2 character ISO State code.
required:
- number
- state
title: DriverLicense
Customer:
type: object
properties:
name:
type: string
minLength: 1
description: Full name of the Customer
taxId:
type: string
description: Customer tax ID (e.g. SSN [US], SIN [CA]). *May be required depending on industry and location.*
address:
$ref: '#/components/schemas/Address'
phone:
type: string
description: Customer phone number.
email:
type: string
minLength: 1
description: Customer email address.
dateOfBirth:
type: string
description: Customer date of birth.
createdAt:
type: integer
description: The record created date and time as a UNIX timestamp.
updatedAt:
type: integer
description: The record created date and time as a UNIX timestamp.
customerId:
type: string
description: A unique Trustly customer identifier.
externalId:
type: string
minLength: 1
description: A unique merchant customer identifier.
merchantId:
type: string
minLength: 1
description: A unique Trustly merchant identifier.
enrollDate:
type: integer
description: Date of the user's first transaction in your system, regardless of payment method used as a UNIX timestamp.
vip:
type: string
description: Range that determines how low-risk the customer represents to the merchant
currency:
type: string
description: Customer currency.
balance:
type: string
description: Customer account balance (not associated with a financial institution account).
organizationNumber:
type: string
description: Organization number for business accounts
externalTier:
type: string
description: It should describe the customer''s rank to the merchant (e.g. Gold, Diamond, 4 stars, etc.)
personId:
type: string
description: Unique customer identity throughout different banks.
customData:
$ref: '#/components/schemas/CustomerCustomData'
description: Object for sending merchant-specific custom data.
driverLicense:
$ref: '#/components/schemas/DriverLicense'
nationalId:
type: string
description: Customer National ID
required:
- name
- address
- phone
- email
description: The Trustly customer object, containing identification details and contact information.
title: Customer
Customers_post-customers_Response_200:
type: object
properties:
customer:
$ref: '#/components/schemas/Customer'
title: Customers_post-customers_Response_200
Customers_get-customers-customerId_Response_200:
type: object
properties:
customer:
$ref: '#/components/schemas/Customer'
title: Customers_get-customers-customerId_Response_200
Customers_get-customers_Response_200:
type: object
properties:
customers:
type: array
items:
$ref: '#/components/schemas/Customer'
title: Customers_get-customers_Response_200
Customers_post-customers-customerId_Response_200:
type: object
properties:
customer:
$ref: '#/components/schemas/Customer'
title: Customers_post-customers-customerId_Response_200
TransactionTransactionType:
type: string
enum:
- '0'
- '1'
- '2'
- '3'
- '4'
- '5'
- '6'
- '7'
- '8'
- '10'
description: Type of transaction record. See [Transaction Types](/integrate/api-fundamentals/status-codes-and-type-definitions#transaction-types)
title: TransactionTransactionType
PaymentPaymentType:
type: string
enum:
- '1'
- '2'
- '3'
- '4'
- '5'
- '6'
description: "Financial Institution Account Type:\n * `1`: Instant -\tInstant payment. The debit instruction is automatically\
\ initiated with that day's batch after consumer authorization.\n * `2`: Deferred - Deferred payment. Payment is authorized\
\ but the capture operation must be called to initiate the debit. You can start to initiate multiple captures that\
\ are less than or equal to the original transaction authorization amount.\n * `3`: Recurring - Recurring payment.\
\ Same as deferred but associated to a payment agreement between consumer and merchant that defines how much and when\
\ the capture can be started.\n * `4`: Disbursement - Disbursement payment. This payment type can only be used for\
\ disbursements.\n * `5`: Verification - This payment type is used to verify the customer financial institution account\
\ as the payments will be done outside of the Trustly system.\n * `6`: Retrieval\tData retrieval. This payment type\
\ is used to retrieve account and user information from Trustly without an associated payment request. This payment\
\ type is not enabled by default. Contact Trustly if you need this feature."
title: PaymentPaymentType
PaymentMerchant:
type: object
properties:
merchantId:
type: string
description: Unique Trustly Merchant ID.
name:
type: string
description: Merchants name.
title: PaymentMerchant
VerificationStatus:
type: string
enum:
- '1'
- '2'
- '3'
- '4'
description: "Verification Status:\n * `1`: Automatic - Payment verification followed Trustly internal rules.\n *\
\ `2`: ToVerify\t- Payment transaction is held (status = OnHold) for further investigation and approval by the merchant.\n\
\ * `3`: Verified - Payment was verified and approved by the merchant or Trustly (see Verification Mode).\n * `4`:\
\ Refused - Payment was denied by the merchant or Trustly after verification.\n"
title: VerificationStatus
VerificationMode:
type: string
enum:
- '1'
- '2'
- '3'
- '4'
description: "Verification Mode:\n * `1`: VerifiedByMerchant\n * `2`: ApprovedByMerchant\n * `3`: VerifiedByTrustly\n\
\ * `4`: AmountAuthorizedByMerchant\n"
title: VerificationMode
Verification:
type: object
properties:
status:
$ref: '#/components/schemas/VerificationStatus'
description: "Verification Status:\n * `1`: Automatic - Payment verification followed Trustly internal rules.\n\
\ * `2`: ToVerify\t- Payment transaction is held (status = OnHold) for further investigation and approval by\
\ the merchant.\n * `3`: Verified - Payment was verified and approved by the merchant or Trustly (see Verification\
\ Mode).\n * `4`: Refused - Payment was denied by the merchant or Trustly after verification.\n"
mode:
$ref: '#/components/schemas/VerificationMode'
description: "Verification Mode:\n * `1`: VerifiedByMerchant\n * `2`: ApprovedByMerchant\n * `3`: VerifiedByTrustly\n\
\ * `4`: AmountAuthorizedByMerchant\n"
verifyCustomer:
type: boolean
description: If true, the Customer information (name and zip code) was verified against information provided by
the User's bank.
title: Verification
AccountCountry:
type: string
enum:
- US
- CA
- UK
- DE
- AU
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US, CA,
UK, DE, and AU are supported.
title: AccountCountry
Account:
type: object
properties:
providerId:
type: string
description: Payment provider ID.
paymentProvider:
$ref: '#/components/schemas/PaymentProvider'
country:
$ref: '#/components/schemas/AccountCountry'
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US,
CA, UK, DE, and AU are supported.
name:
type: string
description: A description to identify a specific account (e.g. Test checking account)
type:
type: number
format: double
description: See Financial Institution Account Type Values.
profile:
type: number
format: double
description: See Financial Institution Account Profile Values
accountNumber:
type: string
minLength: 1
description: Bank Account Number or VAN if `virtualAccountRoutingPair` is equal to `true`.
iban:
type: string
description: IBAN (International Bank Account Number) is an internationally agreed system of identifying bank accounts
across national borders
verified:
type: boolean
description: Indicates if the account is verified or not.
verification:
$ref: '#/components/schemas/FinancialInstitutionAccountVerification'
source:
type: number
format: double
routingNumber:
type: string
minLength: 1
description: Bank Routing Number
token:
type: string
minLength: 1
description: The Account Token
accountNumberLastFour:
type: string
description: The last 4 digits of the real account number.
virtualAccountRoutingPair:
type: boolean
description: Indicates if account is using virtual/tokenized account and routing numbers (VANs/TANs) or not.
title: Account
PaymentCurrency:
type: string
enum:
- USD
description: 3-letter ISO Currency Code. Currently only USD is supported.
title: PaymentCurrency
PaymentAuth:
type: object
properties:
token:
type: string
description: Authorization token.
status:
type: integer
description: See Authorization Status Values.
message:
type: string
description: Authorization message.
title: PaymentAuth
RecurrenceFrequencyUnitType:
type: string
enum:
- Day
- Week
- Month
- Year
description: Frequency Unit Type
title: RecurrenceFrequencyUnitType
Recurrence:
type: object
properties:
startDate:
type: string
format: date-time
description: Recurring payment start date as a UNIX timestamp.
endDate:
type: string
format: date-time
description: Recurring payment end date as a UNIX timestamp.
nextOccurrence:
type: string
format: date-time
description: When the next capture will be issued if using automatic captures as a UNIX timestamp.
recurringAmount:
type: string
maxLength: 10
description: Recurring payment amount. (maximum of 10 characters with support for 2 decimal places)
debtSettlement:
type: string
maxLength: 10
description: Any debt amount settlement done outside of the Trustly like discounts or when consumers pays one recurring
debt using another payment method like traditional checks or credit cards. (maximum of 10 characters with support
for 2 decimal places)
frequency:
type: integer
default: 1
description: 'How many payments per frequencyUnit. Defaults to 1. Example: To define 2 recurring payments every
3 months set: frequency=2, frequencyUnit=3 and frequencyUnitType=3.'
frequencyUnit:
type: number
format: double
description: Defines with frequencyUnitType the interval of the frequency of payments.
frequencyUnitType:
$ref: '#/components/schemas/RecurrenceFrequencyUnitType'
description: Frequency Unit Type
automaticCapture:
type: boolean
description: If true, payment captures are issued automatically.
recurrenceId:
type: string
description: Recurring payment options
title: Recurrence
PaymentSystem:
type: string
enum:
- '-1'
- '1'
- '2'
description: "Financial Institution Account Type:\n * `-1`: None\n * `1`: PayWithMyBank\n * `2`: TrustlyAB"
title: PaymentSystem
PaymentCountry:
type: string
enum:
- US
- CA
- UK
- DE
- AU
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US, CA,
UK, DE, and AU are supported.
title: PaymentCountry
Payment:
type: object
properties:
paymentId:
type: string
minLength: 1
description: A unique payment identifier generated by Trustly (15 character max).
paymentType:
$ref: '#/components/schemas/PaymentPaymentType'
description: "Financial Institution Account Type:\n * `1`: Instant -\tInstant payment. The debit instruction is\
\ automatically initiated with that day's batch after consumer authorization.\n * `2`: Deferred - Deferred payment.\
\ Payment is authorized but the capture operation must be called to initiate the debit. You can start to initiate\
\ multiple captures that are less than or equal to the original transaction authorization amount.\n * `3`: Recurring\
\ - Recurring payment. Same as deferred but associated to a payment agreement between consumer and merchant that\
\ defines how much and when the capture can be started.\n * `4`: Disbursement - Disbursement payment. This payment\
\ type can only be used for disbursements.\n * `5`: Verification - This payment type is used to verify the customer\
\ financial institution account as the payments will be done outside of the Trustly system.\n * `6`: Retrieval\t\
Data retrieval. This payment type is used to retrieve account and user information from Trustly without an associated\
\ payment request. This payment type is not enabled by default. Contact Trustly if you need this feature."
merchant:
$ref: '#/components/schemas/PaymentMerchant'
merchantReference:
type: string
minLength: 1
description: 'An external reference from the merchant. Ex: Order identifier from merchant e-commerce application.'
merchantId:
type: string
minLength: 1
description: Your Trustly Merchant Id. It will be provided to you.
fingerprint:
type: string
minLength: 1
description: Internal use only
verification:
$ref: '#/components/schemas/Verification'
account:
$ref: '#/components/schemas/Account'
description:
type: string
minLength: 1
description: A summary description of the order.
returnUrl:
type: string
minLength: 1
description: Return URL provided with the bank authorization.
cancelUrl:
type: string
minLength: 1
description: Cancel URL provided with the bank authorization.
currency:
$ref: '#/components/schemas/PaymentCurrency'
description: 3-letter ISO Currency Code. Currently only USD is supported.
amount:
type: string
minLength: 1
description: "\tThe total amount of the order, including tax and shipping. If transactionType is Recurring, this\
\ is the Setup Fee Amount."
paymentProvider:
$ref: '#/components/schemas/PaymentProvider'
allowedPaymentProviderType:
type: array
items:
type: integer
auth:
$ref: '#/components/schemas/PaymentAuth'
authorization:
type: string
minLength: 1
description: Authorization token.
authorizationStatus:
type: number
format: double
description: Status of the related bank authorization. See Transaction Status Values.
authorizationStatusMessage:
type: string
minLength: 1
description: Status message of the related bank authorization.
pending:
type: string
minLength: 1
description: The total amount that is still pending completion. (10 characters with support for 2 decimal places)
paid:
type: string
minLength: 1
description: The total amount that was already paid. (10 characters with support for 2 decimal places)
refunded:
type: string
minLength: 1
description: The total amount that was refunded. (10 characters with support for 2 decimal places)
reversed:
type: string
minLength: 1
description: The total amount that was reversed. (10 characters with support for 2 decimal places)
balance:
type: string
minLength: 1
description: The balance of the amount paid, minus the amount reversed and/or refunded. (10 characters with support
for 2 decimal places)
createdAt:
type: integer
description: The date and time the transaction was created as a UNIX timestamp.
updatedAt:
type: integer
description: The date and time the transaction was last updated as a UNIX timestamp.
recordVersion:
type: number
format: double
description: The current record version.
paymentFlow:
type: number
format: double
description: internal use only
customer:
$ref: '#/components/schemas/Customer'
address:
$ref: '#/components/schemas/Address'
recurrence:
$ref: '#/components/schemas/Recurrence'
system:
$ref: '#/components/schemas/PaymentSystem'
description: "Financial Institution Account Type:\n * `-1`: None\n * `1`: PayWithMyBank\n * `2`: TrustlyAB"
country:
$ref: '#/components/schemas/PaymentCountry'
description: 2-character ISO code of the country for the bank account that was selected. Currently only the US,
CA, UK, DE, and AU are supported.
paymentProviderSubtype:
$ref: '#/components/schemas/PaymentProviderSubtype'
required:
- paymentId
- paymentType
- merchant
- merchantReference
- merchantId
- fingerprint
- verification
- account
- currency
- amount
- paymentProvider
- allowedPaymentProviderType
- auth
- authorization
- authorizationStatus
- authorizationStatusMessage
- pending
- paid
- refunded
- reversed
- balance
- createdAt
- updatedAt
- recordVersion
- paymentFlow
description: A Trustly Payment
title: Payment
TransactionCurrency:
type: string
enum:
- USD
description: 3-letter ISO Currency Code. Currently only USD is supported.
title: TransactionCurrency
PaymentProviderTransactionPaymentProcessor:
type: object
properties:
paymentProcessorId:
type: string
type:
type: integer
name:
type: string
shortName:
type: string
url:
type: string
active:
type: string
title: PaymentProviderTransactionPaymentProcessor
PaymentProviderTransaction:
type: object
properties:
paymentProviderTransactionId:
type: string
description: Unique payment provider transaction identifier.
status:
type: string
description: See Payment Provider Transaction Status Codes.
statusMessage:
type: string
description: Payment provider transaction status message.
signature:
type: string
statusDescription:
type: string
paymentProcessor:
$ref: '#/components/schemas/PaymentProviderTransactionPaymentProcessor'
thirdPartyDeclineCode:
type: string
clearingHouse:
type: string
instantSettle:
type: boolean
description: Whether instant settlement was used for transaction.
description: Payment Provider Transaction
title: PaymentProviderTransaction
TransactionStatus:
type: string
enum:
- '0'
- '1'
- '2'
- '3'
- '4'
- '5'
- '6'
- '7'
- '8'
- '10'
- '11'
- '12'
- '13'
- '14'
description: Status code of the Payment Provider Transaction record. See [Transaction Types](/integrate/api-fundamentals/status-codes-and-type-definitions#transaction-types)
title: TransactionStatus
Transaction:
type: object
properties:
transactionId:
type: string
minLength: 1
description: A unique transaction identifier generated by Trustly (15 character max).
transactionType:
$ref: '#/components/schemas/TransactionTransactionType'
description: Type of transaction record. See [Transaction Types](/integrate/api-fundamentals/status-codes-and-type-definitions#transaction-types)
payment:
$ref: '#/components/schemas/Payment'
currency:
$ref: '#/components/schemas/TransactionCurrency'
description: 3-letter ISO Currency Code. Currently only USD is supported.
amount:
type: string
minLength: 1
description: The amount of the transaction. (10 characters with support for 2 decimal places)
pending:
type: string
minLength: 1
description: The total amount that is still pending completion. (10 characters with support for 2 decimal places)
paid:
type: string
minLength: 1
description: The total amount that was already paid. (10 characters with support for 2 decimal places)
refunded:
type: string
minLength: 1
description: The total amount that was refunded. (10 characters with support for 2 decimal places)
reversed:
type: string
minLength: 1
description: The total amount that was reversed. (10 characters with support for 2 decimal places)
balance:
type: string
minLength: 1
description: The balance of the amount paid, minus the amount reversed and/or refunded. (10 characters with support
for 2 decimal places)
paymentProviderTransaction:
$ref: '#/components/schemas/PaymentProviderTransaction'
status:
$ref: '#/components/schemas/TransactionStatus'
description: Status code of the Payment Provider Transaction record. See [Transaction Types](/integrate/api-fundamentals/status-codes-and-type-definitions#transaction-types)
statusMessage:
type: string
minLength: 1
description: A descriptive status message. (120 characters)
ip:
type: string
minLength: 1
description: The client IP address in IPv4 or IPv6 format.
createdAt:
type: integer
description: The date and time the transaction was created as a UNIX timestamp.
processedAt:
type: integer
description: The date and time the transaction was processed as a UNIX timestamp.
completedAt:
type: integer
description: The date and time the transaction was completed as a UNIX timestamp.
updatedAt:
type: integer
description: The date and time the transaction was last updated as a UNIX timestamp.
ppTrxId:
type: string
minLength: 1
description: internal use only
merchantReference:
type: string
minLength: 1
description: Merchants internal reference id for the transaction.
expiredAt:
type: integer
description: The date and time the preauthorization will expire as a UNIX timestamp.
recordVersion:
type: number
format: double
description: The current record version.
originalTransactionId:
type: string
fee:
type: string
timeZone:
type: string
representmentScheduledAt:
type: number
format: double
paymentProcessorType:
type: string
statusCode:
type: string
preAuthorized:
type: boolean
required:
- transactionId
- transactionType
- payment
- currency
- amount
- pending
- paid
- refunded
- reversed
- balance
- paymentProviderTransaction
- status
- statusMessage
- ip
- createdAt
- processedAt
- completedAt
- updatedAt
- merchantReference
- recordVersion
description: A Trustly transaction object
title: Transaction
TransactionsTransactionIdUserGetParametersExpandSchemaItems:
type: string
enum:
- segmentedName
title: TransactionsTransactionIdUserGetParametersExpandSchemaItems
StateCode:
type: string
minLength: 1
description: 2 character ISO State code.
title: StateCode
Address2Country:
type: string
enum:
- US
description: 2 character ISO Country code. Currently only the US is supported.
title: Address2Country
Address-2:
type: object
properties:
address1:
type: string
minLength: 1
description: Address Line 1.
address2:
type: string
description: Address Line 2.
city:
type: string
minLength: 1
description: Address City.
state:
$ref: '#/components/schemas/StateCode'
zip:
type: string
minLength: 1
description: 5 character US Zip Code.
country:
$ref: '#/components/schemas/Address2Country'
description: 2 character ISO Country code. Currently only the US is supported.
required:
- country
title: Address-2
DriverLicense-2:
type: object
properties:
number:
type: string
minLength: 1
description: The driver's license number. Even though this field is called 'number', it may contain non-numeric
characters if the country allows that.
state:
$ref: '#/components/schemas/StateCode'
description: A driver's license.
title: DriverLicense-2
User:
type: object
properties:
name:
type: string
description: The full name of the user
address:
type: array
items:
$ref: '#/components/schemas/Address-2'
description: Array of addresses associated with the user.
phone:
type: array
items:
type: string
description: Array of phone numbers associated with the user.
email:
type: array
items:
type: string
description: Array of e-mail addresses associated with the user.
dateOfBirth:
type: string
description: The date of birth of the user in the format YYYY-MM-DD
taxId:
type: string
description: The user's government issued tax ID e.g. SSN (US) or SIN (CA)
deceased:
type: boolean
description: If `true`, then the user is deceased.
driverLicense:
$ref: '#/components/schemas/DriverLicense-2'
eligible:
type: boolean
description: Indicates if the user has got a successful result in all verifications and is eligible.
createdAt:
type: integer
description: Timestamp representing the time the User Object was created.
updatedAt:
type: integer
description: Timestamp representing the time the User Object was last updated.
segmentedName:
$ref: '#/components/schemas/SegmentedName'
description: Trustly User
title: User
TransactionsTransactionIdUserGetResponsesContentApplicationJsonSchemaErrorsItems:
type: object
properties:
domain:
type: string
minLength: 1
code:
type: number
format: double
location:
type: string
minLength: 1
message:
type: string
minLength: 1
occurredAt:
type: number
format: double
required:
- domain
- code
- location
- message
- occurredAt
title: TransactionsTransactionIdUserGetResponsesContentApplicationJsonSchemaErrorsItems
Get-trustly-id-user-dataRequestBadRequestError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdUserGetResponsesContentApplicationJsonSchemaErrorsItems'
required:
- errors
title: Get-trustly-id-user-dataRequestBadRequestError
TransactionsTransactionIdUserDetailGetParametersExpandSchemaItems:
type: string
enum:
- verification
title: TransactionsTransactionIdUserDetailGetParametersExpandSchemaItems
UserVerificationResultCode:
type: string
enum:
- '1'
- '2'
- '3'
description: 'A code indicating the final outcome of the verification. May be:
* `1`: the verification was rejected.
* `2`: the verification was inconclusive.
* `3`: the verification was approved.'
title: UserVerificationResultCode
UserVerificationErrorCode:
type: string
enum:
- '-1'
- '1'
- '2'
- '3'
- '4'
- '5'
- '6'
description: 'An error code indicating why the user verification has failed. May be:
* `-1`: no error. the verification was successful.
* `1`: there was an internal, unspecified error (should not happen).
* `2`: the user is below the minimum age.
* `3`: some of the attributes did not meet the minimum verification criteria.
* `4`: some mandatory attributes are not available.
* `5`: the user was identified as a person who is deceased.
* `6`: entries were matched during the screening process'
title: UserVerificationErrorCode
UserVerificationReason:
type: object
properties:
code:
$ref: '#/components/schemas/UserVerificationErrorCode'
reason:
type: string
description: Descriptive text, in English, on why the user verification failed.
description: An object describing why an user verification has succeeded or failed.
title: UserVerificationReason
ScreeningResultScreeningType:
type: string
enum:
- '1'
- '2'
- '3'
description: 'Type of screening being performed. May be:
* `1`: Watchlist Screening.
* `2`: Adverse Media Screening.
* `3`: PEP Screening.'
title: ScreeningResultScreeningType
WatchlistScreeningResultGender:
type: string
enum:
- male
- female
description: Gender of the user.
title: WatchlistScreeningResultGender
WatchlistScreeningResult:
type: object
properties:
screeningType:
$ref: '#/components/schemas/ScreeningResultScreeningType'
score:
type: string
title: float
description: Match score indicating the strength of a match.
name:
type: string
description: Name of the user.
aliases:
type: array
items:
type: string
description: List of known aliases.
dateOfBirth:
type: string
format: date
description: Date of birth.
nationality:
type: string
description: Nationality.
source:
type: string
description: Source of the information.
sourceRegion:
type: string
description: Region of the source.
remarks:
type: string
description: Additional remarks.
caution:
type: string
description: Caution notes.
url:
type: string
format: uri
description: Source's URL.
address:
type: string
description: Full street address of the user with city and country.
gender:
$ref: '#/components/schemas/WatchlistScreeningResultGender'
description: Gender of the user.
designationDate:
type: string
format: date
description: Designation date.
trustedEntity:
type: string
description: The name of the entity that provided the watchlist match.
description: Screening information for Watchlist Screening.
title: WatchlistScreeningResult
AdversityMediaScreeningResult:
type: object
properties:
screeningType:
$ref: '#/components/schemas/ScreeningResultScreeningType'
score:
type: string
title: float
description: Match score indicating the strength of a match.
name:
type: string
description: Name of the user.
text:
type: string
description: Text description.
url:
type: string
description: Source's URL.
title:
type: string
description: The adverse media title.
date:
type: string
format: date
description: The adverse media date.
trustedEntity:
type: string
description: The name of the entity that provided the adverse media match.
description: Screening information for Adversity Media Screening.
title: AdversityMediaScreeningResult
PEPScreeningResult:
type: object
properties:
screeningType:
$ref: '#/components/schemas/ScreeningResultScreeningType'
score:
type: string
title: float
description: Match score indicating the strength of a match.
name:
type: string
description: Name of the user.
dateOfBirth:
type: string
format: date
description: Date of birth.
contry:
type: string
description: Country.
professionalHistory:
type: array
items:
type: string
trustedEntity:
type: string
description: The name of the entity that provided the PEP match.
description: Screening information for PEP Screening.
title: PEPScreeningResult
ScreeningResultItems:
oneOf:
- $ref: '#/components/schemas/WatchlistScreeningResult'
- $ref: '#/components/schemas/AdversityMediaScreeningResult'
- $ref: '#/components/schemas/PEPScreeningResult'
title: ScreeningResultItems
ScreeningResult:
type: array
items:
$ref: '#/components/schemas/ScreeningResultItems'
title: ScreeningResult
UserVerificationResult:
type: object
properties:
result:
$ref: '#/components/schemas/UserVerificationResultCode'
reasons:
type: array
items:
$ref: '#/components/schemas/UserVerificationReason'
screeningResult:
type: array
items:
$ref: '#/components/schemas/ScreeningResult'
description: Details on the user verification.
title: UserVerificationResult
AttributeVerificationDetailName:
type: string
enum:
- taxId
- name
- address
- phone
- dateOfBirth
- email
- driverLicense
- deceased
description: Which attribute does this entry refer to.
title: AttributeVerificationDetailName
AttributeVerificationDetailSource:
type: object
properties:
name:
type: string
description: The name of the entity where the attribute value was fetched from.
type:
type: integer
description: 'Indicates the type of the entity that provided this piece of data. It can be:
* `1` the data came from a financial institution.
* `2` the data came from the user.
* `4` the data came from an external provider.
* `5` the data came from the merchant.'
title: AttributeVerificationDetailSource
AttributeVerificationMethod:
type: integer
description: 'Indicates which type of verification was performed. It can be:
* `1` means electronic identity verification.
* `2` meaning it is manual document verification.
* `3` meaning it is OCR verification.
* `4` meaning it is Trusted Entity.'
title: AttributeVerificationMethod
AttributeVerificationResult:
type: integer
description: 'Indicates the result of the individual attribute verification. It can be:
* `1` meaning the attribute did not match the expected value.
* `2` meaning the result was inconclusive.
* `3` meaning attribute did match the expected attribute.'
title: AttributeVerificationResult
AttributeVerification:
type: object
properties:
trustedEntity:
type: string
description: The name of the entity that verified the attribute.
verificationType:
type: integer
description: 'Indicates the type of the entity that verified this piece of data. It can be:
* `1` verified by a financial institution.
* `2` verified by user input.
* `3` verified by the Trustly internal database.
* `4` verified by an external provider.'
verificationMethod:
$ref: '#/components/schemas/AttributeVerificationMethod'
result:
$ref: '#/components/schemas/AttributeVerificationResult'
verifiedAt:
type: integer
format: int64
description: Unix Timestamp in milliseconds (since the epoch) when the verification took place.
title: AttributeVerification
AttributeVerificationDetail:
type: object
properties:
name:
$ref: '#/components/schemas/AttributeVerificationDetailName'
description: Which attribute does this entry refer to.
source:
$ref: '#/components/schemas/AttributeVerificationDetailSource'
createdAt:
type: integer
format: int64
description: Unix Timestamp in milliseconds (since the epoch) when the attribute was fetched from an external source
and associated with the user.
link:
type: string
description: Link to user attribute using JSON pointer syntax.
verification:
type: array
items:
$ref: '#/components/schemas/AttributeVerification'
description: Attribute details as part of a Trustly ID user verification details
title: AttributeVerificationDetail
UserVerificationDetailDetail:
type: object
properties:
verification:
type: array
items:
$ref: '#/components/schemas/UserVerificationResult'
attribute:
type: array
items:
$ref: '#/components/schemas/AttributeVerificationDetail'
title: UserVerificationDetailDetail
UserVerificationDetail:
type: object
properties:
detail:
$ref: '#/components/schemas/UserVerificationDetailDetail'
title: UserVerificationDetail
TransactionsTransactionIdUserDetailGetResponsesContentApplicationJsonSchemaErrorsItems:
type: object
properties:
domain:
type: string
minLength: 1
code:
type: number
format: double
location:
type: string
minLength: 1
message:
type: string
minLength: 1
occurredAt:
type: number
format: double
required:
- domain
- code
- location
- message
- occurredAt
title: TransactionsTransactionIdUserDetailGetResponsesContentApplicationJsonSchemaErrorsItems
Get-trustly-id-user-detailsRequestBadRequestError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/TransactionsTransactionIdUserDetailGetResponsesContentApplicationJsonSchemaErrorsItems'
required:
- errors
title: Get-trustly-id-user-detailsRequestBadRequestError
Post-transaction-feedbackRequestUnauthorizedError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/BaseException'
required:
- errors
title: Post-transaction-feedbackRequestUnauthorizedError
CustomerLookupResponseErrorsListItems:
type: object
properties:
code:
type: integer
message:
type: string
location:
type: string
domain:
type: string
occurredAt:
type: integer
title: CustomerLookupResponseErrorsListItems
CustomerLookupResponse:
type: object
properties:
isInTrustlyNetwork:
type: boolean
description: True if a transaction has ever been made with any of the provided identifiers.
errorsList:
type: array
items:
$ref: '#/components/schemas/CustomerLookupResponseErrorsListItems'
description: Present only on error responses.
title: CustomerLookupResponse
Get-customer-lookupRequestUnauthorizedError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/BaseException'
required:
- errors
title: Get-customer-lookupRequestUnauthorizedError
Payment_Providers_get-paymentProviders_Response_200:
type: object
properties:
paymentProviders:
type: array
items:
$ref: '#/components/schemas/PaymentProvider'
startIndex:
type: number
format: double
itemsPerPage:
type: number
format: double
title: Payment Providers_get-paymentProviders_Response_200
Payments_list-payments_Response_200:
type: object
properties:
payments:
type: array
items:
$ref: '#/components/schemas/Payment'
startIndex:
type: number
format: double
itemsPerPage:
type: number
format: double
required:
- payments
- startIndex
- itemsPerPage
title: Payments_list-payments_Response_200
? TransactionsTransactionIdCapturePostRequestBodyContentApplicationXWwwFormUrlencodedSchemaMetadataRemittanceWithdrawalMethod
: type: string
enum:
- BankDeposit
- Cash
- DebitCard
- DigitalWallet
- HomeDelivery
description: The method by which the recipient will receive the funds.
title: TransactionsTransactionIdCapturePostRequestBodyContentApplicationXWwwFormUrlencodedSchemaMetadataRemittanceWithdrawalMethod
EstablishPostRequestBodyContentApplicationJsonSchemaCurrency:
type: string
enum:
- USD
- CAD
description: 3-letter ISO Currency Code.
title: EstablishPostRequestBodyContentApplicationJsonSchemaCurrency
EstablishPostRequestBodyContentApplicationJsonSchemaPaymentType:
type: string
enum:
- Retrieval
- Deferred
- Disbursement
- Instant
- Recurring
- Verification
description: "Specifies the type of transaction to create. Possible values are Instant, Deferred, Disbursement, Recurring,\
\ Verification, and Retrieval. Default is Retrieval.\n\n **Note:** If your application is configured for \"Money Transfer\"\
\ and utilizes the \"Instant\" `paymentType` several properties under `customer`, `beneficiary` and `beneficiaryAccount`\
\ will be required. \n> See [Send money](/integrate/send-money) for more details."
title: EstablishPostRequestBodyContentApplicationJsonSchemaPaymentType
EstablishPostRequestBodyContentApplicationJsonSchemaAccount:
type: object
properties:
routingNumber:
type: string
minLength: 1
description: Bank Routing Number
accountNumber:
type: string
minLength: 1
description: Bank Account Number
type:
type: string
description: Financial Institution Account Type
description: Account information. Required if paymentType is Verification and a transactionId is not included.
title: EstablishPostRequestBodyContentApplicationJsonSchemaAccount
EstablishPostRequestBodyContentApplicationJsonSchemaBeneficiary:
type: object
properties:
name:
type: string
minLength: 1
description: Full name of the Customer
taxId:
type: string
description: Customer tax ID (e.g. SSN [US], SIN [CA]). *May be required depending on industry and location.*
address:
$ref: '#/components/schemas/Address'
phone:
type: string
description: Customer phone number.
email:
type: string
minLength: 1
description: Customer email address.
dateOfBirth:
type: string
description: Customer date of birth.
createdAt:
type: integer
description: The record created date and time as a UNIX timestamp.
updatedAt:
type: integer
description: The record created date and time as a UNIX timestamp.
description: 'The ultimate beneficiary of this payment. Required when using `paymentType: Instant` for [Money Transfer](/integrate/send-money)'
title: EstablishPostRequestBodyContentApplicationJsonSchemaBeneficiary
EstablishPostRequestBodyContentApplicationJsonSchemaBeneficiaryAccount:
type: object
properties:
accountNumber:
type: number
format: double
iban:
type: string
pattern: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$
description: International Bank Account Number (IBAN)
paymentProvider:
$ref: '#/components/schemas/PaymentProvider'
description: 'Financial institution account associated with the ultimate beneficiary of a transaction. Required when
using `paymentType: Instant` for [Money Transfer](/integrate/send-money)'
title: EstablishPostRequestBodyContentApplicationJsonSchemaBeneficiaryAccount
EstablishPostRequestBodyContentApplicationJsonSchemaMetadataFinishButtonLabelType:
type: string
enum:
- pay
- deposit
- withdraw
description: Modify the final button label of the Trustly UI. The default label is "Continue", by passing a supported
alternative in this property the button label can be changed to "Pay Now", "Deposit" or "Withdraw".
title: EstablishPostRequestBodyContentApplicationJsonSchemaMetadataFinishButtonLabelType
EstablishPostRequestBodyContentApplicationJsonSchemaMetadataIntegrationContext:
type: string
enum:
- InAppBrowser
- InAppBrowserNotify
- ExternalBrowser
description: Configuration required for mobile app compatibility with OAuth bank login flows. More details can be found
in the [OAuth and Mobile apps guide](doc:oauth-guide).
title: EstablishPostRequestBodyContentApplicationJsonSchemaMetadataIntegrationContext
EstablishPostRequestBodyContentApplicationJsonSchemaMetadataClc:
type: object
properties:
propertyId:
type: number
format: double
description: ID number for property or location
machineId:
type: number
format: double
description: ID number specific to an associated Electronic Wagering System
qrTimestamp:
type: string
format: date-time
description: Timestamp of QR code generation
playerNumber:
type: number
format: double
description: Player tracking number
description: Properties relating to Trustly In-Person configuration. Required for Trustly In-Person apps.
title: EstablishPostRequestBodyContentApplicationJsonSchemaMetadataClc
EstablishPostRequestBodyContentApplicationJsonSchemaMetadata:
type: object
properties:
lang:
type: string
description: Display language for text in the Trustly UI using the [ISO 639 Language Code](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes)
format (e.g. `de_DE` or `fr_CA`). Defaults to `en_US` if not provided.
finishButtonLabelType:
$ref: '#/components/schemas/EstablishPostRequestBodyContentApplicationJsonSchemaMetadataFinishButtonLabelType'
description: Modify the final button label of the Trustly UI. The default label is "Continue", by passing a supported
alternative in this property the button label can be changed to "Pay Now", "Deposit" or "Withdraw".
integrationContext:
$ref: '#/components/schemas/EstablishPostRequestBodyContentApplicationJsonSchemaMetadataIntegrationContext'
description: Configuration required for mobile app compatibility with OAuth bank login flows. More details can be
found in the [OAuth and Mobile apps guide](doc:oauth-guide).
urlScheme:
type: string
description: The deep link url associated with your mobile application. When users are directed to an external bank
login or bank application on success or failure they will be redirected to this url. More details can be found
in the [OAuth and Mobile apps guide](doc:oauth-guide).
clc:
$ref: '#/components/schemas/EstablishPostRequestBodyContentApplicationJsonSchemaMetadataClc'
description: Properties relating to Trustly In-Person configuration. Required for Trustly In-Person apps.
description: Provide additional use case-specific properties in this object.
title: EstablishPostRequestBodyContentApplicationJsonSchemaMetadata
EstablishDataCurrency:
type: string
enum:
- USD
description: 3-letter ISO Currency Code. Currently only USD is supported.
title: EstablishDataCurrency
EstablishDataKycType:
type: string
enum:
- OnlineBanking
description: Specifies the KYC (Know Your Customer) type as number. The possible value is 1 (OnlineBanking). This field
is optional and can only be used by merchants configured for [Trustly ID](/integrate/retrieve-data/trustly-id).
title: EstablishDataKycType
Attribute:
type: object
properties:
name:
type: string
value:
type: string
title: Attribute
TrustlyABRequest:
type: object
properties:
successURL:
type: string
failURL:
type: string
uRLTarget:
type: string
callbackURL:
type: string
notificationURL:
type: string
title: TrustlyABRequest
EstablishData:
type: object
properties:
merchantId:
type: string
description: Your Merchant ID.
paymentType:
type: number
format: double
description: The Payment Type of the transaction to create. Currently only Disbursement, Deferred, and Instant are
supported.
returnUrl:
type: string
description: Return URL to use when the transaction is completed.
cancelUrl:
type: string
description: Cancel URL to use if the user cancels the transaction.
notificationUrl:
type: string
description: Notification URL to use for notifications associated with this transaction. This overrides the notification
URL configured at the merchant level.
data:
type: string
accessId:
type: string
description: Your client application access id. It will be provided to you.
requestSignature:
type: string
description: Request Signature that can be validated to verify the response authenticity.
transactionId:
type: string
description: Transaction ID retrieved from Trustly.
merchantReference:
type: string
description: 'An external reference from the merchant. Ex: Order identifier from merchant e-commerce application.'
description:
type: string
description: Merchant order description
currency:
$ref: '#/components/schemas/EstablishDataCurrency'
description: 3-letter ISO Currency Code. Currently only USD is supported.
kycType:
$ref: '#/components/schemas/EstablishDataKycType'
description: Specifies the KYC (Know Your Customer) type as number. The possible value is 1 (OnlineBanking). This
field is optional and can only be used by merchants configured for [Trustly ID](/integrate/retrieve-data/trustly-id).
amount:
type: string
description: The amount of the transaction. This represents the maximum amount of the transactions that can be processed
with the Authorization. If the amount is 0.00, there will be no upper bound on the transaction. (10 characters
with support for 2 decimal places)
verification:
$ref: '#/components/schemas/Verification'
customer:
$ref: '#/components/schemas/Customer'
account:
$ref: '#/components/schemas/Account'
metadata:
$ref: '#/components/schemas/Attribute'
trustlyABRequest:
$ref: '#/components/schemas/TrustlyABRequest'
url:
type: string
minLength: 1
required:
- url
description: '`establishData` is required to establish a new user authorization or to launch the Trustly UI for any
other reason'
title: EstablishData
Transactions_list-transactions_Response_200:
type: object
properties:
transactions:
type: array
items:
$ref: '#/components/schemas/Transaction'
title: Transactions_list-transactions_Response_200
? TransactionsTransactionIdCapturePreAuthPostRequestBodyContentApplicationXWwwFormUrlencodedSchemaMetadataRemittanceWithdrawalMethod
: type: string
enum:
- BankDeposit
- Cash
- DebitCard
- DigitalWallet
- HomeDelivery
description: The method by which the recipient will receive the funds.
title: TransactionsTransactionIdCapturePreAuthPostRequestBodyContentApplicationXWwwFormUrlencodedSchemaMetadataRemittanceWithdrawalMethod
TransactionsTransactionIdRefreshPostResponsesContentApplicationJsonSchemaRefresh:
type: object
properties:
processId:
type: string
minLength: 1
required:
- processId
title: TransactionsTransactionIdRefreshPostResponsesContentApplicationJsonSchemaRefresh
Transactions_post-transactions-refresh_Response_200:
type: object
properties:
refresh:
$ref: '#/components/schemas/TransactionsTransactionIdRefreshPostResponsesContentApplicationJsonSchemaRefresh'
required:
- refresh
title: Transactions_post-transactions-refresh_Response_200
VerifyCustomerMatchResult:
type: string
enum:
- '-1'
- '0'
- '1'
- '2'
description: 'The result of the comparison:
* `-1`: Inconclusive
* `0`: NoMatch
* `1`: PartialMatch
* `2`: Match'
title: VerifyCustomerMatchResult
VerifyCustomerMatchSource:
type: string
enum:
- '1'
- '2'
- '3'
- '4'
description: 'The data source used for comparison:
* `1`: Profile
* `2`: SelectedAccount
* `3`: OtherAccounts
* `4`: TrustlyUser'
title: VerifyCustomerMatchSource
VerifyCustomerMatch:
type: object
properties:
attribute:
type: string
description: The customer attribute that was compared. For example, customer.name or customer.address.zip.
result:
$ref: '#/components/schemas/VerifyCustomerMatchResult'
description: 'The result of the comparison:
* `-1`: Inconclusive
* `0`: NoMatch
* `1`: PartialMatch
* `2`: Match'
source:
$ref: '#/components/schemas/VerifyCustomerMatchSource'
description: 'The data source used for comparison:
* `1`: Profile
* `2`: SelectedAccount
* `3`: OtherAccounts
* `4`: TrustlyUser'
title: VerifyCustomerMatch
Verify_Customer_get-verify-customer_Response_200:
type: object
properties:
matches:
type: array
items:
$ref: '#/components/schemas/VerifyCustomerMatch'
title: Verify Customer_get-verify-customer_Response_200
Get-verify-customerRequestBadRequestError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/BaseException'
required:
- errors
title: Get-verify-customerRequestBadRequestError
Get-verify-customerRequestUnauthorizedError:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/BaseException'
required:
- errors
title: Get-verify-customerRequestUnauthorizedError
EventAuthorize:
type: object
properties:
createdAt:
type: string
format: int64
description: The timestamp when the event was created, represented as a Unix timestamp in milliseconds.
eventId:
type: string
description: Unique identifier for the event.
eventType:
type: string
description: The type of event that triggered the webhook.
merchantId:
type: string
description: The unique identifier of the merchant.
message:
type: string
description: A message describing the event.
objectId:
type: string
description: Unique identifier for the object associated with the event, such as a transaction.
objectType:
type: string
description: The type of object associated with the event (e.g., Transaction).
paymentType:
type: string
description: Type of payment, denoted by a numeric code.
status:
type: string
description: Status code representing the current state of the transaction.
statusMessage:
type: string
description: A message describing the current status of the transaction.
timeZone:
type: string
description: The timezone of the event, formatted in IANA timezone database format.
transactionType:
type: string
description: Type of transaction, denoted by a numeric code.
splitToken:
type: string
description: Encrypted token generated during user authorization. Note, token may include url escape characters
which must be encoded or the request will result in an error. See [Split Token](doc:reference-split-token) for
more info.
description: A generic event object that includes common properties for all webhook events. This can be extended for
specific event types.
title: EventAuthorize
EventCompletedPaymentProviderTransaction:
type: object
properties:
status:
type: string
statusMessage:
type: string
title: EventCompletedPaymentProviderTransaction
EventCompleted:
type: object
properties:
createdAt:
type: string
format: int64
description: The timestamp when the event was created, represented as a Unix timestamp in milliseconds.
eventId:
type: string
description: Unique identifier for the event.
eventType:
type: string
description: The type of event that triggered the webhook.
merchantId:
type: string
description: The unique identifier of the merchant.
message:
type: string
description: A message describing the event.
objectId:
type: string
description: Unique identifier for the object associated with the event, such as a transaction.
objectType:
type: string
description: The type of object associated with the event (e.g., Transaction).
paymentType:
type: string
description: Type of payment, denoted by a numeric code.
status:
type: string
description: Status code representing the current state of the transaction.
statusMessage:
type: string
description: A message describing the current status of the transaction.
timeZone:
type: string
description: The timezone of the event, formatted in IANA timezone database format.
transactionType:
type: string
description: Type of transaction, denoted by a numeric code.
paymentProviderTransaction:
$ref: '#/components/schemas/EventCompletedPaymentProviderTransaction'
description: A transaction has been successfully completed.
title: EventCompleted
EventDataReady:
type: object
properties:
createdAt:
type: string
format: int64
description: The timestamp when the event was created, represented as a Unix timestamp in milliseconds.
eventId:
type: string
description: Unique identifier for the event.
eventType:
type: string
description: The type of event that triggered the webhook.
merchantId:
type: string
description: The unique identifier of the merchant.
message:
type: string
description: A message describing the event.
objectId:
type: string
description: Unique identifier for the object associated with the event, such as a transaction.
objectType:
type: string
description: The type of object associated with the event (e.g., Transaction).
paymentType:
type: string
description: Type of payment, denoted by a numeric code.
status:
type: string
description: Status code representing the current state of the transaction.
statusMessage:
type: string
description: A message describing the current status of the transaction.
timeZone:
type: string
description: The timezone of the event, formatted in IANA timezone database format.
transactionType:
type: string
description: Type of transaction, denoted by a numeric code.
description: The 'DataReady' event indicates that the required transaction data is available and ready for processing.
title: EventDataReady
EventEstablishPaymentProviderTransaction:
type: object
properties:
status:
type: string
statusMessage:
type: string
title: EventEstablishPaymentProviderTransaction
EventEstablish:
type: object
properties:
createdAt:
type: string
format: int64
description: The timestamp when the event was created, represented as a Unix timestamp in milliseconds.
eventId:
type: string
description: Unique identifier for the event.
eventType:
type: string
description: The type of event that triggered the webhook.
merchantId:
type: string
description: The unique identifier of the merchant.
message:
type: string
description: A message describing the event.
objectId:
type: string
description: Unique identifier for the object associated with the event, such as a transaction.
objectType:
type: string
description: The type of object associated with the event (e.g., Transaction).
paymentType:
type: string
description: Type of payment, denoted by a numeric code.
status:
type: string
description: Status code representing the current state of the transaction.
statusMessage:
type: string
description: A message describing the current status of the transaction.
timeZone:
type: string
description: The timezone of the event, formatted in IANA timezone database format.
transactionType:
type: string
description: Type of transaction, denoted by a numeric code.
merchantReference:
type: string
paymentProviderTransaction:
$ref: '#/components/schemas/EventEstablishPaymentProviderTransaction'
description: The 'Establish' event is triggered when a new transaction has been created. This event may occur when a
user activates the Trustly UI or when a transaction is created via an API call.
title: EventEstablish
EventExpire:
type: object
properties:
createdAt:
type: string
format: int64
description: The timestamp when the event was created, represented as a Unix timestamp in milliseconds.
eventId:
type: string
description: Unique identifier for the event.
eventType:
type: string
description: The type of event that triggered the webhook.
merchantId:
type: string
description: The unique identifier of the merchant.
message:
type: string
description: A message describing the event.
objectId:
type: string
description: Unique identifier for the object associated with the event, such as a transaction.
objectType:
type: string
description: The type of object associated with the event (e.g., Transaction).
paymentType:
type: string
description: Type of payment, denoted by a numeric code.
status:
type: string
description: Status code representing the current state of the transaction.
statusMessage:
type: string
description: A message describing the current status of the transaction.
timeZone:
type: string
description: The timezone of the event, formatted in IANA timezone database format.
transactionType:
type: string
description: Type of transaction, denoted by a numeric code.
paymentProviderTransaction.status:
type: string
description: Status code representing the current state of the transaction.
paymentProviderTransaction.statusMessage:
type: string
description: A message describing the current status of the transaction.
description: A generic event object that includes common properties for all webhook events. This can be extended for
specific event types.
title: EventExpire
EventFailedPaymentProviderTransaction:
type: object
properties:
status:
type: string
statusMessage:
type: string
title: EventFailedPaymentProviderTransaction
EventFailed:
type: object
properties:
createdAt:
type: string
format: int64
description: The timestamp when the event was created, represented as a Unix timestamp in milliseconds.
eventId:
type: string
description: Unique identifier for the event.
eventType:
type: string
description: The type of event that triggered the webhook.
merchantId:
type: string
description: The unique identifier of the merchant.
message:
type: string
description: A message describing the event.
objectId:
type: string
description: Unique identifier for the object associated with the event, such as a transaction.
objectType:
type: string
description: The type of object associated with the event (e.g., Transaction).
paymentType:
type: string
description: Type of payment, denoted by a numeric code.
status:
type: string
description: Status code representing the current state of the transaction.
statusMessage:
type: string
description: A message describing the current status of the transaction.
timeZone:
type: string
description: The timezone of the event, formatted in IANA timezone database format.
transactionType:
type: string
description: Type of transaction, denoted by a numeric code.
paymentProviderTransaction:
$ref: '#/components/schemas/EventFailedPaymentProviderTransaction'
description: A transaction has failed.
title: EventFailed
EventRefreshPaymentProviderTransaction:
type: object
properties:
status:
type: string
statusMessage:
type: string
title: EventRefreshPaymentProviderTransaction
EventRefresh:
type: object
properties:
createdAt:
type: string
format: int64
description: The timestamp when the event was created, represented as a Unix timestamp in milliseconds.
eventId:
type: string
description: Unique identifier for the event.
eventType:
type: string
description: The type of event that triggered the webhook.
merchantId:
type: string
description: The unique identifier of the merchant.
message:
type: string
description: A message describing the event.
objectId:
type: string
description: Unique identifier for the object associated with the event, such as a transaction.
objectType:
type: string
description: The type of object associated with the event (e.g., Transaction).
paymentType:
type: string
description: Type of payment, denoted by a numeric code.
status:
type: string
description: Status code representing the current state of the transaction.
statusMessage:
type: string
description: A message describing the current status of the transaction.
timeZone:
type: string
description: The timezone of the event, formatted in IANA timezone database format.
transactionType:
type: string
description: Type of transaction, denoted by a numeric code.
paymentProviderTransaction:
$ref: '#/components/schemas/EventRefreshPaymentProviderTransaction'
hardRefresh:
type: boolean
refreshPurpose:
type: string
success:
type: boolean
description: This event occurs when an attempt to refresh account data is made
title: EventRefresh
EventUpdate:
type: object
properties:
createdAt:
type: string
format: int64
description: The timestamp when the event was created, represented as a Unix timestamp in milliseconds.
eventId:
type: string
description: Unique identifier for the event.
eventType:
type: string
description: The type of event that triggered the webhook.
merchantId:
type: string
description: The unique identifier of the merchant.
message:
type: string
description: A message describing the event.
objectId:
type: string
description: Unique identifier for the object associated with the event, such as a transaction.
objectType:
type: string
description: The type of object associated with the event (e.g., Transaction).
paymentType:
type: string
description: Type of payment, denoted by a numeric code.
status:
type: string
description: Status code representing the current state of the transaction.
statusMessage:
type: string
description: A message describing the current status of the transaction.
timeZone:
type: string
description: The timezone of the event, formatted in IANA timezone database format.
transactionType:
type: string
description: Type of transaction, denoted by a numeric code.
fiName:
type: string
description: A generic event object that includes common properties for all webhook events. This can be extended for
specific event types.
title: EventUpdate
EventVerifyCustomer:
type: object
properties:
createdAt:
type: string
format: int64
description: The timestamp when the event was created, represented as a Unix timestamp in milliseconds.
eventId:
type: string
description: Unique identifier for the event.
eventType:
type: string
description: The type of event that triggered the webhook.
merchantId:
type: string
description: The unique identifier of the merchant.
message:
type: string
description: A message describing the event.
objectId:
type: string
description: Unique identifier for the object associated with the event, such as a transaction.
objectType:
type: string
description: The type of object associated with the event (e.g., Transaction).
paymentType:
type: string
description: Type of payment, denoted by a numeric code.
status:
type: string
description: Status code representing the current state of the transaction.
statusMessage:
type: string
description: A message describing the current status of the transaction.
timeZone:
type: string
description: The timezone of the event, formatted in IANA timezone database format.
transactionType:
type: string
description: Type of transaction, denoted by a numeric code.
customer.name:
type: string
description: The `VerifyCustomer` event provides the result of the identity verification check performed against the
data from the bank.
title: EventVerifyCustomer
securitySchemes:
HTTPBasic:
type: http
scheme: basic
description: ''
externalDocs:
description: Trustly North America API reference
url: https://amer.developers.trustly.com/api-reference/api