# Xaman Developer Docs

## v1.0

- [Build on Xaman](https://docs.xaman.dev/readme.md): You focus on building your cool app. We make sure your app & Xaman users can interact. Safely & smoothly.
- [Getting started](https://docs.xaman.dev/concepts/getting-started.md): Xaman allows developers and app users to "meet up".
- [Terminology](https://docs.xaman.dev/concepts/getting-started/terminology.md): Essential terms and concepts to help you better understand and utilize the powerful features of the Xaman Wallet platform.
- [Developer Education](https://docs.xaman.dev/concepts/getting-started/developer-education.md)
- [Authorization & Credentials](https://docs.xaman.dev/concepts/authorization.md): How to authorize when communicating with the Xumm platform depends on your workflow.
- [Payloads (sign requests)](https://docs.xaman.dev/concepts/payloads-sign-requests.md): Xumm Payloads: creating, delivering, and utilizing incomplete XRP Ledger transactions as a Sign Request to end users.
- [Secure Payment Verification](https://docs.xaman.dev/concepts/payloads-sign-requests/verify-transactions.md): Once a payment has been sent and the payload resolved on Xumm, some checks are performed to ensure secure payment verification. This document walks you through verifying a payment transaction on Xumm.
- [Workflow](https://docs.xaman.dev/concepts/payloads-sign-requests/workflow.md): Xumm's workflow is designed to streamline the process of transaction signing and interaction with the XRP Ledger.
- [Lifecycle](https://docs.xaman.dev/concepts/payloads-sign-requests/lifecycle.md): Xumm's transaction lifecycle is a sequence of steps that ensures secure and efficient transaction processing on the XRP Ledger.
- [Sample POS lifecycle](https://docs.xaman.dev/concepts/payloads-sign-requests/lifecycle/sample-pos-lifecycle.md)
- [Payload Delivery](https://docs.xaman.dev/concepts/payloads-sign-requests/delivery.md): Payload delivery in Xumm is a crucial step in the transaction lifecycle. It involves delivering the payload to the user for signing.
- [Deep Linking](https://docs.xaman.dev/concepts/payloads-sign-requests/delivery/deeplink.md): Deep linking in Xumm enables developers to provide a seamless user experience by swiftly guiding users to interact with payloads.
- [QR Scanning](https://docs.xaman.dev/concepts/payloads-sign-requests/delivery/qr-scan.md): QR scanning is an engaging way to have users interact with payloads, especially in physical mediums. It is simple, quick, and versatile.
- [Push](https://docs.xaman.dev/concepts/payloads-sign-requests/delivery/push.md): Delivering Sign Requests using a push notification can be a very convenient way for end users to interact with your application: they don't even have to scan a QR code.
- [xApps](https://docs.xaman.dev/concepts/payloads-sign-requests/delivery/xapp.md): xApps are custom applications that run within the Xumm environment. As a developer working with xApps, delivering payloads is crucial for a seamless user experience.
- [Mobile (iOS/Android)](https://docs.xaman.dev/concepts/payloads-sign-requests/delivery/mobile-ios-android.md): Mobile payload delivery is essential for a seamless experience in mobile applications.
- [Desktop browser](https://docs.xaman.dev/concepts/payloads-sign-requests/delivery/desktop-browser.md): For web applications accessed through desktop browsers, Xumm provides an optimized delivery method.
- [Status updates](https://docs.xaman.dev/concepts/payloads-sign-requests/status-updates.md): Xumm's Payload status updates bridge the gap between your application and the end user by providing real-time feedback on payload interactions.
- [Websocket](https://docs.xaman.dev/concepts/payloads-sign-requests/status-updates/websocket.md): Websockets provide real-time payload updates
- [Webhooks](https://docs.xaman.dev/concepts/payloads-sign-requests/status-updates/webhooks.md): Webhooks are HTTP callbacks that allow you to receive notifications when a Payload (Sign Request) has been resolved (rejected or signed).
- [Signature verification](https://docs.xaman.dev/concepts/payloads-sign-requests/status-updates/webhooks/signature-verification.md): Signature verification is crucial for ensuring the integrity and authenticity of the data received. It involves verifying that the data was sent by Xumm and has not been tampered with.
- [API Call (polling)](https://docs.xaman.dev/concepts/payloads-sign-requests/status-updates/api-call-polling.md): Polling, or repeated API calls, is a common method to fetch updates. However, in Xumm, it's not the recommended approach due to rate limits.
- [Networks](https://docs.xaman.dev/concepts/payloads-sign-requests/networks.md): The Xumm API/SDK is designed to be network-independent, providing flexibility for developers and end users. This means that the end user determines the network on which transactions occur.
- [Payload Return URL](https://docs.xaman.dev/concepts/payloads-sign-requests/payload-return-url.md): After a user signs a payload, a user can return to a URL (your website / app).
- [Tx Explorer(s)](https://docs.xaman.dev/concepts/payloads-sign-requests/tx-explorer-s.md): To easily link to transaction explorers, you can link to the Xumm explorer launchpad and allow users to pick their preferred explorer.
- [Special Transaction Types](https://docs.xaman.dev/concepts/special-transaction-types.md): In Xaman, you can use all XRPL transaction types when sending a JSON transaction payload. However, some special transaction types are unique to Xaman, or require some extra info to use them.
- [SignIn](https://docs.xaman.dev/concepts/special-transaction-types/signin.md): The \`SignIn\` payload is a "Pseudo transaction type": an off ledger transaction specific to Xaman, which can be used to identify a user and obtain a token to push sign requests to the end user.
- [Batch (multiple inner signers)](https://docs.xaman.dev/concepts/special-transaction-types/batch-multiple-inner-signers.md): The Batch feature allows multiple transactions to be packaged together and executed as a single atomic transaction. Create and submit a batch of up to 8 transactions that succeed or fail atomically.
- [PaymentChannelAuthorize](https://docs.xaman.dev/concepts/special-transaction-types/paymentchannelauthorize.md): To authorize a Payment Channel, an off ledger "receipt" must be signed. This is implemented in Xaman through a 'Pseudo Transaction' with TransactionType \`PaymentChannelAuthorize\`.
- ["Pay With Anything"](https://docs.xaman.dev/concepts/pay-with-anything.md): Xaman allows you to easily craft a payload (Sign Request) that will always deliver the currency and amount you want to receive, while allowing the Xaman user to pay with anything (any asset they have)
- [Limitations](https://docs.xaman.dev/concepts/limitations.md)
- [Rate limits](https://docs.xaman.dev/concepts/limitations/rate-limits.md): To prevent excessive load on our platform, the Xumm platform applies rate limits. The limits depend on the type of consumer (regular API, SDK, JWT) and endpoint(s).
- [Transaction types](https://docs.xaman.dev/concepts/limitations/transaction-types.md): Xumm supports a wide range of transaction types to cater to various use cases on the XRPL. Here's what you need to know:
- [Push permission](https://docs.xaman.dev/concepts/limitations/push-permission.md)
- [Implementation checklist](https://docs.xaman.dev/concepts/implementation-checklist.md): This article presents a concise implementation checklist for developers using Xumm. By following these steps, you can ensure a smooth and secure integration whilst optimizing the user experience.
- [Protocol specific checks](https://docs.xaman.dev/concepts/implementation-checklist/protocol-specific-checks.md): The XRP Ledger Protocol has several protocol-related things to check in your app/implementation to make the experience for end users better. Please take these things into account:
- [Payment Request Link](https://docs.xaman.dev/simple-link-qr/payment-request-link.md): To route users to a simple payment request, all you need to use is a URL / QR containing that URL, crafted with the right parameters.
- [TrustSet Link/QR](https://docs.xaman.dev/simple-link-qr/trustset-link-qr.md): If you simply want to offer users a static link / QR code to sign a specific XRPL transaction, you can craft a link (to be offered directly or as contents of a QR code) for users to click / scan.
- [Browser ("Web3")](https://docs.xaman.dev/environments/browser-web3.md): Building a web app? Running as a client side SPA (single page webapp) or server side rendered? React Native / VueJS / VanillaJS / etc.: you can integrate with the Xumm ecosystem using our SDK.
- [CORS (Browser)](https://docs.xaman.dev/environments/browser-web3/cors-browser.md): CORS (Cross-Origin Resource Sharing) is a security feature that restricts a web page from accessing resources from another domain. Xumm allows for CORS calls to JWT endpoints.
- [xApps ("dApps")](https://docs.xaman.dev/environments/xapps-dapps.md): Build your own web app to live in-app, inside Xumm for all Xumm users. Build an xApp. Use your favourite tools & frameworks for the client side code (HTML, CSS, JS, etc.
- [Requirements](https://docs.xaman.dev/environments/xapps-dapps/requirements.md)
- [Develop & Test](https://docs.xaman.dev/environments/xapps-dapps/develop-and-test.md): When building xApps, there are some tools to make building & sharing your xApp easier.
- [CORS (xApp)](https://docs.xaman.dev/environments/xapps-dapps/cors-xapp.md): CORS restricts access to resources on different domains to ensure privacy and security, allowing website owners to control access. As xApps run inside Xumm, allowing CORS is required for xApps.
- [Xumm UI interaction](https://docs.xaman.dev/environments/xapps-dapps/xumm-ui-interaction.md): Using the Xumm SDK in xApps, you can trigger native Xumm interaction & receive events from Xumm in your xApp.
- [Your own backend (Auth)](https://docs.xaman.dev/environments/xapps-dapps/your-own-backend-auth.md): Xumm xApps yield a JWT that can be used to make subsequent calls from the user context to the Xumm API's. You can also use this JWT for your own backend.
- [Style guide](https://docs.xaman.dev/environments/xapps-dapps/style-guide.md): When building xApps, it makes a lot of sense to stick to the design (colour palette, font, etc.) as used by Xumm to offer the best user experience to xApp users.
- [Development & Debugging](https://docs.xaman.dev/environments/xapps-dapps/debugging.md): Debugging your xApp is tricky: it runs on your phone. How to access the logs?
- [xAppBuilder 🏗️](https://docs.xaman.dev/environments/xapps-dapps/xappbuilder.md): Introducing xAppBuilder, an advanced tool specifically designed to streamline the creation and debugging process of xApps for Xumm.
- [Connecting localhost to xAppBuilder](https://docs.xaman.dev/environments/xapps-dapps/xappbuilder/connecting-localhost-to-xappbuilder.md): With xAppBuilder, you can now conveniently connect your localhost for an efficient and real-time development experience. This video provides an overview of connecting your localhost.
- [xAppBuilder FAQ](https://docs.xaman.dev/environments/xapps-dapps/xappbuilder/xappbuilder-faq.md): Frequently Asked Questions
- [Backend (SDK / API)](https://docs.xaman.dev/environments/backend-sdk-api.md): Use your API key and secret obtained from the Xumm Developer Console & off you go. Using our SDK's, or building your own integration on top of our well documented APIs.
- [User identification payloads](https://docs.xaman.dev/environments/backend-sdk-api/user-identification-payloads.md): When building your own backend integration, you can request a user to sign a Sign Request with a "SignIn" transaction type. This is a pseudo transaction type allowing a user to confirm their r-address
- [Native Apps](https://docs.xaman.dev/environments/native-apps.md): When building a native app (iOS / Android / React Native / Capacitor / ...) you can leverage "Sign In with Xumm" and offloading transaction signing to Xumm as well. This uses application deep links.
- [Identity (OAuth2, OpenID)](https://docs.xaman.dev/environments/identity-oauth2-openid.md): The Xumm platform can act as the OAuth2 provider. The Xumm platform supports the OAuth2 / OpenID Connect flow. Authenticate and identify end users using their self custodial XRPL accounts.
- [Test Tools](https://docs.xaman.dev/environments/identity-oauth2-openid/tools.md): Trying to get your OAuth2 / OpenID integration to work? There are a couple of tools to help you test things.
- [Xaman SDK (Intro)](https://docs.xaman.dev/js-ts-sdk/xumm-sdk-intro.md): Developers can use the Xaman SDK to easily integrate with the Xaman platform. This allows for easy & secure end user interaction. With your application & the XRP Ledger.
- [Examples / User stories](https://docs.xaman.dev/js-ts-sdk/examples-user-stories.md)
- [Sign Requests (payloads)](https://docs.xaman.dev/js-ts-sdk/examples-user-stories/sign-requests-payloads.md): A sign request in Xumm is a prompt to approve a transaction or action on the XRP Ledger. This page will show you how you can create a Sign Request, and how you can deliver the request to the end user.
- [Browser](https://docs.xaman.dev/js-ts-sdk/examples-user-stories/sign-requests-payloads/browser.md): A sign request in Xumm is a prompt to approve a transaction or action on the XRP Ledger. This page will show you how you can create a Sign Request, and how you can deliver the request to the end user.
- [xApp](https://docs.xaman.dev/js-ts-sdk/examples-user-stories/sign-requests-payloads/xapp.md): A sign request in Xumm is a prompt to approve a transaction or action on the XRP Ledger. This page will show you how you can create a Sign Request, and how you can deliver the request to the end user.
- [Backend](https://docs.xaman.dev/js-ts-sdk/examples-user-stories/sign-requests-payloads/backend.md): A sign request in Xumm is a prompt to approve a transaction or action on the XRP Ledger. This page will show you how you can create a Sign Request, and how you can deliver the request to the end user.
- [Verify Payload signature](https://docs.xaman.dev/js-ts-sdk/examples-user-stories/verify-oauth2-signature.md): You can fetch the corresponding payload to verify the signature, to make sure it's signed by the account you expected to sign the payload.
- [Simple Sign Request](https://docs.xaman.dev/js-ts-sdk/examples-user-stories/misc-todo.md)
- [SDK (syntax)](https://docs.xaman.dev/js-ts-sdk/sdk-syntax.md): Developers can use the Xumm SDK to easily interact with the Xumm platform. This section contains the technical documentation for the Javascript/TypeScript API (objects, methods, arguments).
- [Xumm.ping()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.ping.md)
- [Xumm.on(event, fn)](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.on-event-fn.md): Events fired by the SDK per environment. For the order of events, see the section per environment after the table with events.
- [Xumm.off(event, fn)](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.off-event-fn.md)
- [Xumm.helpers { … }](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers.md)
- [ping()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers/ping.md): Contact the Xumm platform to check for connectivity and valid auth.
- [getRates( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers/getrates.md): Get aggregated exchange rates vs. XRP for most fiat & crypto assets.
- [getRails()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers/getrails.md): Fetch the available (known) networks and network parameters.
- [getHookHash( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers/gethookhash.md): Get meta information for a known Hook, by specifying the Hook Hash (64 hex chars)
- [getHookHashes()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers/gethookhashes.md): Get the meta information for all known Hooks. Object returned contains Hook hash as key, meta as value.
- [getCuratedAssets()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers/getcuratedassets.md): Get the curated assets (shortlist in Xumm) for Trust Lines
- [getNftokenDetail( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers/getnftokendetail.md): Get NFT Token details. Only available in JWT context. Please fetch your NFT info from other NFT data sources if possible.
- [getKycStatus( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers/getkycstatus.md): Get the KYC status for users, based on a user\_token issued by a successful sign request.
- [verifyUserTokens(\[ … \])](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers/verifyusertokens.md): Verify a user token (or multiple), to see if the token is still valid (not expired, not revoked) and can be used to deliver sign requests to user(s)
- [getTransaction( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.helpers/gettransaction.md): Fetch an XRPL transaction & metadata. Please don't use this method unless absolutely necessary: please set up your own connection to an XRPL node to fetch this information.
- [Xumm.user { … }](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.user.md): Returns information about the signed in user (in case of xApp or Web3 flow).
- [Xumm.environment { … }](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.environment.md)
- [Xumm.payload { … }](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.payload.md)
- [create( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.payload/create.md)
- [createAndSubscribe( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.payload/createandsubscribe.md)
- [cancel( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.payload/cancel.md)
- [subscribe( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.payload/subscribe.md)
- [get( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.payload/get.md)
- [Xumm.xapp { … }](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp.md)
- [ready()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/ready.md): When using the native Xumm loader screen for your xApp (until your xApp is ready, fully hydrated, booted, etc.) you call this method to remove the Xumm loading screen.
- [openSignRequest({ … })](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/opensignrequest.md): Open a Sign Request (payload) created with Xumm.payload.create
- [selectDestination({ … })](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/selectdestination.md): Open the Destination Picker: select/find/scan (QR) an XRPL destination account by r-address, slug or PayString
- [scanQr()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/scanqr.md): Scan a QR code
- [tx({ … })](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/tx.md): Open the Transaction Details panel
- [close({ … })](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/close.md): Close the xApp
- [share({ … })](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/share.md): Use the OS Share-dialog to share text or a URL
- [navigate({ … })](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/navigate.md): Navigate to another xApp (by identifier)
- [openBrowser({ … })](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/openbrowser.md): Open an external URL in the OS default browser
- [on(xAppEvent, fn)](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/on-event-fn.md): Certain events are sent to xApps. These events are usually an asynchronous callback containing data requested by calling one of the xApp UI actions.
- [off(xAppEvent, fn)](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.xapp/off-event-fn.md): Certain events are sent to xApps. These events are usually an asynchronous callback containing data requested by calling one of the xApp UI actions.
- [Xumm.userstore { … }](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.userstore.md): Client side persistent user bound key/value store.
- [list()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.userstore/list.md): List userstore keys
- [get( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.userstore/get.md): Get userstore value (object) by key
- [delete( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.userstore/delete.md): Remove userstore key & value by key
- [set( … , { … } )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.userstore/set-...-....md)
- [Xumm.backendstore { … }](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.backendstore.md)
- [get()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.backendstore/get.md)
- [set({ … })](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.backendstore/set.md)
- [delete()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.backendstore/delete.md)
- [Xumm.push { … }](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.push.md)
- [event( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.push/event.md)
- [notification( … )](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.push/notification.md)
- [Xumm.runtime { … }](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.runtime.md)
- [Xumm.authorize()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.authorize.md)
- [Xumm.logout()](https://docs.xaman.dev/js-ts-sdk/sdk-syntax/xumm.logout.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://docs.xaman.dev/readme.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
