Skip to content
GitHub

Create an Outgoing Payment

POST
/outgoing-payments

An outgoing payment is a sub-resource of a wallet address. It represents a payment from the wallet address.

Once created, it is already authorized and SHOULD be processed immediately. If payment fails, the Account Servicing Entity must mark the outgoing payment as failed.

Authorizations

Parameters

Header Parameters

Signature-Input
required

The Signature-Input field is a Dictionary structured field containing the metadata for one or more message signatures generated from components within the HTTP message. Each member describes a single message signature. The member’s key is the label that uniquely identifies the message signature within the context of the HTTP message. The member’s value is the serialization of the covered components Inner List plus all signature metadata parameters identified by the label. The following components MUST be included: - “@method” - “@target-uri” - “authorization”. When the message contains a request body, the covered components MUST also include the following: - “content-digest” The keyid parameter of the signature MUST be set to the kid value of the JWK. See ietf-httpbis-message-signatures for more details.

The Signature-Input field is a Dictionary structured field containing the metadata for one or more message signatures generated from components within the HTTP message. Each member describes a single message signature. The member's key is the label that uniquely identifies the message signature within the context of the HTTP message. The member's value is the serialization of the covered components Inner List plus all signature metadata parameters identified by the label. The following components MUST be included: - "@method" - "@target-uri" - "authorization". When the message contains a request body, the covered components MUST also include the following: - "content-digest" The keyid parameter of the signature MUST be set to the kid value of the JWK. See [ietf-httpbis-message-signatures](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-message-signatures#section-4.1) for more details.

Signature
required

The signature generated based on the Signature-Input, using the signing algorithm specified in the “alg” field of the JWK.

The signature generated based on the Signature-Input, using the signing algorithm specified in the "alg" field of the JWK.

Request Body required

A subset of the outgoing payments schema is accepted as input to create a new outgoing payment.

The debitAmount must use the same assetCode and assetScale as the wallet address.

Either provide a quoteId to create an outgoing payment based on a quote or provide incomingPayment and debitAmount to create an outgoing payment directly from an incoming payment.

One of:
object
walletAddress
required

URL of a wallet address hosted by a Rafiki instance.

string format: uri
quoteId
required

The URL of the quote defining this payment’s amounts.

string format: uri
metadata

Additional metadata associated with the outgoing payment. (Optional)

object
key
additional properties
any
Examples
{
"walletAddress": "https://ilp.rafiki.money/alice/",
"quoteId": "https://ilp.rafiki.money/quotes/ab03296b-0c8b-4776-b94e-7ee27d868d4d",
"metadata": {
"externalRef": "INV2022-02-0137"
}
}

Responses

201

Outgoing Payment Created

An outgoing payment resource represents a payment that will be, is currently being, or has previously been, sent from the wallet address.

object
id
required

The URL identifying the outgoing payment.

string format: uri
walletAddress
required

The URL of the wallet address from which this payment is sent.

string format: uri
quoteId

The URL of the quote defining this payment’s amounts.

string format: uri
failed

Describes whether the payment failed to send its full amount.

boolean
receiver
required

The URL of the incoming payment that is being paid.

string format: uri
/^(https|http)://(.+)/incoming-payments/(.+)$/
receiveAmount
required

The total amount that should be received by the receiver when this outgoing payment has been paid.

object
value
required

The value is an unsigned 64-bit integer amount, represented as a string.

string format: uint64
assetCode
required

The assetCode is a code that indicates the underlying asset. This SHOULD be an ISO4217 currency code.

string
assetScale
required

The scale of amounts denoted in the corresponding asset code.

integer
<= 255
debitAmount
required

The total amount that should be deducted from the sender’s account when this outgoing payment has been paid.

object
value
required

The value is an unsigned 64-bit integer amount, represented as a string.

string format: uint64
assetCode
required

The assetCode is a code that indicates the underlying asset. This SHOULD be an ISO4217 currency code.

string
assetScale
required

The scale of amounts denoted in the corresponding asset code.

integer
<= 255
sentAmount
required

The total amount that has been sent under this outgoing payment.

object
value
required

The value is an unsigned 64-bit integer amount, represented as a string.

string format: uint64
assetCode
required

The assetCode is a code that indicates the underlying asset. This SHOULD be an ISO4217 currency code.

string
assetScale
required

The scale of amounts denoted in the corresponding asset code.

integer
<= 255
metadata

Additional metadata associated with the outgoing payment. (Optional)

object
createdAt
required

The date and time when the outgoing payment was created.

string format: date-time
updatedAt
required

The date and time when the outgoing payment was updated.

string format: date-time
Examples
{
"id": "https://ilp.rafiki.money/outgoing-payments/8c68d3cc-0a0f-4216-98b4-4fa44a6c88cf",
"walletAddress": "https://ilp.rafiki.money/alice/",
"failed": false,
"receiver": "https://ilp.rafiki.money/bob/incoming-payments/48884225-b393-4872-90de-1b737e2491c2",
"debitAmount": {
"value": "2600",
"assetCode": "USD",
"assetScale": 2
},
"receiveAmount": {
"value": "2500",
"assetCode": "USD",
"assetScale": 2
},
"sentAmount": {
"value": "0",
"assetCode": "USD",
"assetScale": 2
},
"metadata": {
"description": "Thank you for the shoes."
},
"createdAt": "2022-03-12T23:20:50.52Z",
"updatedAt": "2022-04-01T10:24:36.11Z"
}

401

Authorization required

Headers

WWW-Authenticate
string

The address of the authorization server for grant requests in the format `GNAP as_uri=<URI>`

403

Forbidden