Understanding and Using PayString
What is PayString?
PayString is an open universal payment identifier that makes it easier for people to send and receive money in any currency across any payment network.
Who uses PayString?
Any business that sends and receives money can use PayString to give each of their customers a simple and human-readable ID that works across any payment network and makes payments easier with greater network reach. PayString is an open standard, so anyone can build implementations and extensions on top of PayString.See companies that use PayString
How is PayString compliant with international payment regulations?
Rather than prescribing a single solution, PayString is flexible and composable by design, which empowers transaction participants to implement their own policies. PayString provides a simple extension that helps businesses satisfy Travel Rule record-keeping required in jurisdictions globally, including both current FinCEN rules and FATF guidance, via native integration with the TRISA protocol. PayString can also be used to improve other compliance solutions for both users and services.Learn more about PayString and TRISA for Travel Rule
How can I get started with PayString?
Who developed this website?
The content on this website content was developed by Ripple, an early adopter of PayString, in collaboration with the Open Payments Coalition.
What payment networks does PayString support?
PayString supports any payment network or payment processor. Companies may add any payment network or payment processor to a PayString header to send and receive money.
How is PayString different from payment networks and processors?
PayString is an open standard for payment identifiers. This means that PayString is a naming convention for any payment ID — like a bank account number or a crypto address. Any payment network or payment processor can support PayString as an identifier.
What is Verifiable PayString?
In the default version of PayString, a receiver trusts their PayString provider to not swap the mapping between PayString to payment address. While this trust is sufficient with custodial wallets, it may not be appropriate in some circumstances, such as with a non-custodial wallet.
PayString for Wallets removes this layer of trust by cryptographically signing response messages with digital identity keys. As a result, PayString providers cannot swap out payment addresses without the sender or receiver finding out.
Is Verifiable PayString secure?
Yes, it is. Default PayString uses tried-and-true security technologies that secure all internet services. PayString for Wallets adds another layer of security by including digital identity keys that cryptographically sign response messages, so participants in PayString transactions do not need to trust any counterparty.
What does Verifiable PayString allow me to do?
Verifiable PayString adds several digital signature fields so you can link a PayString to one or more external digital identities, prove control of the payment rail address, and provide non-repudiable messaging.
Development and Implementation
How do I implement PayString?
PayString is a free-to-use, fully open standard with an open source implementation. Any company can start using PayString by integrating a PayString server into their existing infrastructure using the reference implementation on GitHub. The RippleX Dev Kit is the easiest way to enable “send to PayString” on your app.
What tech is PayString built on?
PayString is a web-based protocol built on a simple HTTP API secured by the standard web security stack, including TLS.
How does PayString handle security?
PayString leverages tried-and-true security technologies that secure all internet services, including e-commerce and digital banking services. Additionally, PayString messages include cryptographic certificates and signatures that ensure participants in PayString transactions do not need to trust any counterparty.
How do I deploy a PayString server?
PayString is designed by devs for devs. You can deploy a PayString server with just a few commands with existing web infrastructure, and then integrate it into an application or account system with just a few lines of code.
When you want to experiment with or deploy a PayString server, you have several options:
Where can I learn more about building with PayString?
For other questions on PayString development and deployment, visit the docs page.
How can I try out a PayString server?
The PayString Sandbox lets you experiment with PayString in a test environment. To use PayString Sandbox, log in with your GitHub account and follow the prompts. You can quickly set up a virtual test server, and then create users with simple PayString addresses that map to addresses on various payment networks.
How does the PayString protocol work?
With PayString, you can use human-readable addresses to transmit value in the currency of your choice. The PayString network allows participants to reach one another through a standardized address. For example, alice$wallet.com maps to the corresponding URL https://wallet.com/alice.
When you make an HTTP GET request that follows the PayString protocol, it resolves to an address on the underlying payment network. PayString is a payment-network-agnostic protocol, capable of sending payments to any payment network.
What is the PayString reference implementation?
The Open Payments Coalition provides a reference implementation of the PayString protocol. Anyone may use this reference implementation or make changes to it. Other implementations can be created, as long as they follow the PayString protocol.
The reference implementation uses TypeScript, a Node.js HTTP server, and a Postgres database. By default, the server hosts the PayString Protocol implementation, or Public API, on port 8080. It also hosts a second RESTful API on port 8081 for CRUD operations of PayStrings and associated addresses.
What are the requirements to run a PayString server?
To run a PayString server in a production environment, you should give each component of the stack a vCPU and 500 MB of RAM, and ensure there are at least two High-Availability replicas for each component.
Here's how the requirements would break down:
- 1 vCPU + 500 MB RAM per nginx replica (2x)
- 1 vCPU + 500 MB RAM per PayString Node.js server replica (2x)
- 1 vCPU + 500 MB RAM per Postgres replica (2x)