Create an outgoing payment
After a quote is accepted and the authorized client obtains the requisite grant from the authorization server of the sender’s ASE Account servicing entity , the client can create an outgoing payment resource against the sender’s wallet address.
These code snippets create an outgoing payment to a given wallet address. The amount of the outgoing payment is based on the amounts in the associated quote.
Before you begin
We recommend creating a wallet account on the test wallet. Creating an account allows you to test your client against the Open Payments APIs by using an ILP-enabled wallet funded with play money.
Create an outgoing payment resource
Prerequisites
- Node 20 or higher
- A package manager such as NPM or PNPM
-
Open Payments SDK
- TSX Additional configuration
- Add
"type": "module"
topackage.json
. - Add the following to
tsconfig.json
{"compilerOptions": {"target": "ES2022","module": "ES2022"}} - Import
createAuthenticatedClient
from the Open Payments SDK.Import dependencies
Copied!import { createAuthenticatedClient } from "@interledger/open-payments";
- Create an authenticated Open Payments client by providing the following properties:
walletAddressURL
: your Open Payments-enabled wallet address that your client will use to authenticate itself to one or more authorization servers.privateKey
: the EdDSA-Ed25519 key or preferably the absolute or relative file path to the key that’s bound to your wallet address. A public key signed with this private key must be made available as a public JWK document at{walletAddressUrl}/jwks.json
url.keyId
: the identifier of the private key and the corresponding public key.Initialize Open Payments client
Copied!const client = await createAuthenticatedClient({ walletAddressUrl: WALLET_ADDRESS, privateKey: PRIVATE_KEY_PATH, keyId: KEY_ID, });
Get started
Import dependencies
import { createAuthenticatedClient } from "@interledger/open-payments";
Copied! Initialize Open Payments client
const client = await createAuthenticatedClient({
walletAddressUrl: WALLET_ADDRESS,
privateKey: PRIVATE_KEY_PATH,
keyId: KEY_ID,
});
Copied! Create outgoing payment
const outgoingPayment = await client.outgoingPayment.create(
{
url: new URL(WALLET_ADDRESS).origin,
accessToken: OUTGOING_PAYMENT_ACCESS_TOKEN,
},
{
walletAddress: WALLET_ADDRESS,
quoteId: QUOTE_URL,
},
);
Copied! Output
console.log("OUTGOING_PAYMENT_URL = ", outgoingPayment.id);
Copied! Run tsx path/to/directory/index.ts
.
Prerequisites
- Node 20 or higher
- A package manager such as NPM or PNPM
-
Open Payments SDK
Additional configuration
Add "type": "module"
to package.json
Get started
Import dependencies
import { createAuthenticatedClient } from "@interledger/open-payments";
Copied! Initialize Open Payments client
const client = await createAuthenticatedClient({
walletAddressUrl: WALLET_ADDRESS,
privateKey: PRIVATE_KEY_PATH,
keyId: KEY_ID,
});
Copied! Create outgoing payment
const outgoingPayment = await client.outgoingPayment.create(
{
url: new URL(WALLET_ADDRESS).origin,
accessToken: OUTGOING_PAYMENT_ACCESS_TOKEN,
},
{
walletAddress: WALLET_ADDRESS,
quoteId: QUOTE_URL,
},
);
Copied! Output
console.log("OUTGOING_PAYMENT_URL = ", outgoingPayment.id);
Copied! Run node path/to/directory/index.js
.