Package-level declarations

YAXI Open Banking wire DTOs (services, tickets, credentials, dialogs, responses, errors).

Types

Link copied to clipboard

Account access exceeded the user's consent. Only the non-interactive transactions refresh path raises this error; the interactive transactions flow does not.

Link copied to clipboard

Payment account exposed by a service connection.

Link copied to clipboard

Per-account container holding zero or more typed balances.

Link copied to clipboard

Field of an Account that can be referenced in filters or requested from the service.

Link copied to clipboard

Predicate applied to accounts when invoking the accounts service.

Link copied to clipboard

Identifier of an account, used when referencing creditor or debtor accounts in payment-related requests.

Link copied to clipboard

Reference to an account by IBAN, with an optional ISO 4217 currency code for multi-currency accounts.

Link copied to clipboard

Authenticated result of a successful accounts service call.

Link copied to clipboard
data class AccountsServiceRequest(val credentials: Credentials, val session: Session? = null, val recurringConsents: Boolean = false, val fields: List<AccountField<*>>, val filter: AccountFilter? = null)

Request body for the interactive accounts service.

Link copied to clipboard
Link copied to clipboard

Type of an Account (mostly aligned with ISO 20022 ExternalCashAccountType1Code).

Link copied to clipboard
data class Amount(val amount: BigDecimal, val currency: String)

Monetary amount paired with an ISO 4217 currency code.

Link copied to clipboard

Wrapper around an authenticated YAXI service response carried as a JWT.

Link copied to clipboard
class AuthenticatedDecodeError(message: String, cause: Throwable? = null) : RuntimeException

Thrown when a JWT-bearing response cannot be decoded, the JWT is structurally malformed, its body is not valid JSON, the data claim is missing, or the claim's value does not match the expected typed payload shape.

Link copied to clipboard

Single account balance reported by the balances service.

Link copied to clipboard

Top-level payload returned by the balances service.

Link copied to clipboard

Authenticated result of a successful balances service call.

Link copied to clipboard
data class BalancesServiceRequest(val credentials: Credentials, val session: Session? = null, val recurringConsents: Boolean = false, val accounts: List<AccountReference>)

Request body for the interactive balances service.

Link copied to clipboard

Kind of balance reported for an account.

Link copied to clipboard

Bank transaction code attached to a Transaction.

Link copied to clipboard

Per-transaction batch metadata: count of grouped transactions plus their individual details where the provider supplied them.

Link copied to clipboard

Per-entry details for a transaction inside a batch. Same fields as Transaction minus the booking dates and status (those are carried by the parent transaction).

Link copied to clipboard

The user canceled the flow (rejecting an SCA prompt or letting it time out). Ask whether the user wants to start again.

Link copied to clipboard

Who bears the charges for a transfer.

Link copied to clipboard

Authenticated result of a successful collect-payment service call.

Link copied to clipboard
data class CollectPaymentServiceRequest(val credentials: Credentials, val session: Session? = null, val recurringConsents: Boolean = false, val account: DebtorAccountReference? = null)

Request body for the interactive collect-payment service.

Link copied to clipboard

Opaque context returned alongside a Confirmation dialog, a Redirect, or a RedirectHandle. Pass it back to one of the confirm* methods on RoutexClient to continue the flow.

Link copied to clipboard

Opaque connection data returned by a successful interactive service call.

Link copied to clipboard

Optional extra fields a search may request the server to populate on each returned ConnectionInfo.

Link copied to clipboard

Identifier of a specific service connection (bank or other provider integration).

Link copied to clipboard

Metadata describing a single service connection (bank or other provider integration).

Link copied to clipboard

Type of connections to consider when searching.

Link copied to clipboard

The recurring consent attached to the call's ConnectionData has expired. The YAXI service emits this only when the call carried Credentials.connectionData (or, for RoutexRefreshClient, a stored ConnectionData). Restart the flow without ConnectionData so the user can renew consent.

Link copied to clipboard
typealias CountryCode = String

ISO 3166-1 ALPHA-2 country code.

Link copied to clipboard
data class Credentials @JvmOverloads constructor(val connectionId: ConnectionId, val userId: String? = null, val password: String? = null, val connectionData: ConnectionData? = null)

User credentials for a given service connection.

Link copied to clipboard

Requirements for user identifier and password a connection accepts.

Link copied to clipboard
data class CreditorAddress(val townName: String, val country: CountryCode)

Postal address of a creditor.

Link copied to clipboard

Reference to a debtor account for the collect-payment service.

Link copied to clipboard
object DecimalSerializer : KSerializer<BigDecimal>

Serializes a BigDecimal as a plain JSON string ("-12.34", "1200.00"; never scientific notation), preserving the original number of fractional digits.

Link copied to clipboard
data class Dialog

User dialog returned by an interactive service call.

Link copied to clipboard

Context of a user dialog, distinguishing what the dialog is asking the user about.

Link copied to clipboard

Data defining the interactive part of a Dialog.

Link copied to clipboard

Single option inside a DialogInput.Selection.

Link copied to clipboard
class EncryptedIbanReference(val bytes: ByteArray, val currency: String? = null) : DebtorAccountReference

Reference to a debtor account by encrypted-IBAN ciphertext, for the collect-payment service. Opaque on the client; the ciphertext is produced by the caller's backend with its API secret following the Opaque Data protocol so the frontend never sees the underlying IBAN.

Link copied to clipboard

Currency conversion attached to a Transaction.

Link copied to clipboard
data class Fee

Fee attached to a transaction, transfer detail, or batch entry.

Link copied to clipboard

Fallback error carrying the raw HTTP status and response body. Returned by RoutexErrorDispatcher.dispatch when no typed error variant matches; typically when the YAXI service introduces a new error variant ahead of an updated SDK. Display a generic technical-error message; report internally if it recurs.

Link copied to clipboard

Image data for a dialog.

Link copied to clipboard

Opaque context returned alongside a Selection or Field dialog input. Pass it back to one of the respond* methods on RoutexClient together with the user-supplied response to continue the flow.

Link copied to clipboard

Type of an input field. May be used for showing hints or dedicated keyboard layouts and for applying input restrictions or validation.

Link copied to clipboard
@RequiresOptIn(level = RequiresOptIn.Level.ERROR, message = "This is an internal Routex API. External use is unsupported.")
annotation class InternalRoutexApi

Marks declarations that are internal in the Routex client API. Their signatures and semantics may change between releases without warnings and without providing migration aids; external use is unsupported.

Link copied to clipboard

The service call requires user interaction to complete.

Link copied to clipboard

The bank rejected the supplied user identifier, password, or TAN input. Show userMessage if present and let the user re-enter their credentials.

Link copied to clipboard
class InvalidTicketError(message: String, cause: Throwable? = null) : RuntimeException

Thrown when a raw JWT string is not a valid Routex ticket (bad structure, missing claims, or a service claim that does not match the typed Ticket subclass).

Link copied to clipboard

Date-or-date-time value as used by the transfer service's requestedExecutionDate.

Link copied to clipboard
data class NonInteractiveAccountsRequest(val connectionData: ConnectionData, val session: Session? = null, val fields: List<AccountField<*>>, val filter: AccountFilter? = null)

Request body for the non-interactive accounts endpoint.

Link copied to clipboard
data class NonInteractiveBalancesRequest(val connectionData: ConnectionData, val session: Session? = null, val accounts: List<AccountReference>)

Request body for the non-interactive balances endpoint.

Link copied to clipboard
data class NonInteractiveResponse<T>(val result: T, val session: Session? = null, val connectionData: ConnectionData? = null)

Envelope for non-interactive service responses returned by RoutexRefreshClient.

Link copied to clipboard
data class NonInteractiveTransactionsRequest(val connectionData: ConnectionData, val session: Session? = null)

Request body for the non-interactive transactions endpoint.

Link copied to clipboard
data object NotFound : RoutexError

The requested resource was not found. On transactions this typically means the supplied AccountReference is unknown to the bank: verify the reference. info and trace also raise this.

Link copied to clipboard
data class Party

Counterparty (creditor or debtor) referenced by a Transaction.

Link copied to clipboard

Reason why a payment failed.

Link copied to clipboard

The bank rejected the payment (for example, an exceeded transfer limit). Show userMessage if present; code carries a machine-readable reason. Specific to collectPayment.

Link copied to clipboard

Payload returned by the collect-payment service.

Link copied to clipboard

Payment product used when initiating a transfer.

Link copied to clipboard

Progress status of a payment initiated via a service.

Link copied to clipboard

Requested time period falls outside what the bank supports. Show userMessage if present. The transactions flow raises this.

Link copied to clipboard

The bank reported a technical failure (often maintenance). For payment-style services this does not guarantee the operation failed: the transaction may still have executed. Tell the user a technical error occurred and to retry later.

Link copied to clipboard

Transient condition on the provider side.

Link copied to clipboard

User redirect.

Link copied to clipboard

Incomplete user redirect.

Link copied to clipboard
sealed class Response<T>

Response from a YAXI Open Banking service.

Link copied to clipboard

Base class for all typed errors returned by the YAXI Open Banking services.

Link copied to clipboard

Decodes wire-form error responses from the YAXI service into typed RoutexError subclasses. Falls back to NotFound for HTTP 404 and to HttpResponse for any status whose body the dispatcher cannot recognize as a known variant.

Link copied to clipboard
interface RoutexResult<out T>

Authenticated result wrapper carried in the JWT body's data claim of every service response.

Link copied to clipboard

Predicate applied when searching for service connections.

Link copied to clipboard

Level of secrecy for an input field.

Link copied to clipboard

The bank blocked the service for this user. Common causes: the user must accept new terms, change their password, or the account itself is blocked. Show userMessage if present; otherwise pick a generic message based on code.

Link copied to clipboard

Reason why a service is blocked for the user.

Link copied to clipboard

Opaque session token returned by a YAXI Open Banking service call.

Link copied to clipboard

Services an account can be filtered by for potential support.

Link copied to clipboard
sealed class Ticket

A Routex service ticket. The raw string is a JWT whose data.service claim names the specific service it authenticates; the subclasses pin that service at the type level so the Kotlin compiler rejects passing an Accounts ticket to balances() and vice versa.

Link copied to clipboard

The routex service rejected the Ticket. When code is TicketErrorCode.EXPIRED, the user took too long to finish the flow: issue a fresh ticket and start over. Any other code indicates a configuration error in the calling application (wrong key, environment mismatch, ticket / service mismatch).

Link copied to clipboard

Reason why a ticket was rejected.

Link copied to clipboard
class TraceId

Trace identifier returned by the YAXI Open Banking service for the most recent request, used by support to correlate a client-side failure with server-side traces.

Link copied to clipboard

Single transaction returned by the transactions service. Most fields are optional; provider coverage varies and a typical Transaction populates a small subset. The required fields are status and amount.

Link copied to clipboard

Authenticated result of a successful transactions service call.

Link copied to clipboard
data class TransactionsServiceRequest(val credentials: Credentials, val session: Session? = null, val recurringConsents: Boolean = false)

Request body for the interactive transactions service.

Link copied to clipboard
Link copied to clipboard

Payload returned by the transfer service.

Link copied to clipboard
data class TransferDetails @JvmOverloads constructor(val amount: Amount, val creditorAccount: AccountIdentifier, val creditorName: String, val endToEndIdentification: String? = null, val creditorAgentBic: String? = null, val creditorAddress: CreditorAddress? = null, val remittance: String? = null, val chargeBearer: ChargeBearer? = null)

Details of a single credit transfer inside a TransferServiceRequest.

Link copied to clipboard

Authenticated result of a successful transfer service call.

Link copied to clipboard
data class TransferServiceRequest(val credentials: Credentials, val session: Session? = null, val recurringConsents: Boolean = false, val product: PaymentProduct, val debtorAccount: AccountReference? = null, val debtorName: String? = null, val requestedExecutionDate: IsoDateTimeOrDate? = null, val details: List<TransferDetails>)

Request body for the interactive transfer service.

Link copied to clipboard

The bank refused the recurring consent attached to the call's ConnectionData. The YAXI service raises this only when the call carries Credentials.connectionData. Restart the flow without Credentials.connectionData so the user can grant a fresh consent.

Link copied to clipboard

The bank or another upstream returned a response YAXI could not process. For payment-style services this does not guarantee the operation failed: the transaction may still have executed. Show userMessage if present, then consider prompting the user to share a diagnostics archive with YAXI.

Link copied to clipboard

A value passed to the call was malformed (for example, an invalid IBAN). The error field explains what was wrong. This error targets the application developer: validate inputs before submitting them, especially when they came from the user.

Link copied to clipboard

The bank cannot perform the requested operation for this combination of inputs. Examples: an instant payment was requested but the bank only supports the standard variant, or the connection does not support the chosen service. See Instant by default. Show userMessage if present.

Link copied to clipboard

Reason why a payment product is not supported for a given request.

Properties

Link copied to clipboard

URL-safe base64 codec for JWT-style segments: encodes without trailing = and decodes with-or-without padding.

Link copied to clipboard

Project-wide JSON codec for YAXI Routex types.

Functions

Link copied to clipboard
fun BigDecimal.toBigNumBigDecimal(): BigDecimal

Convert a java.math.BigDecimal to the multiplatform BigDecimal used in Amount, Balance, and other monetary fields.

Link copied to clipboard
fun BigDecimal.toJavaBigDecimal(): BigDecimal

Convert this multiplatform BigDecimal to a java.math.BigDecimal, preserving the original number of fractional digits.