Sending RFQs
After your customer selects an Offering, the next step is to send a Request for Quote (RFQ) to the PFI in order to initiate the transaction. The Offering provided an estimate, but the Quote will provide a formal offer based on the financial transaction the customer is requesting as well as the payment methods provided.
Create the RFQ​
An RFQ is a structured tbDEX message that specifies the details of the transaction your customer wishes to make. It includes information about the Offering, payment methods, and any required verifiable credentials (VCs).
To create the message, construct an RFQ passing metadata and data:
metadata​
The metadata properties identify the DIDs of the sender (your customer), the recipient (the PFI), and the version of the tbDEX protocol you're using:
data​
The data properties contain the specifics of the transaction, such as the id of the Offering you're requesting the Quote for, payment methods, and credentials:
- offeringId - The unique identifier of the PFI's Offering the customer is interested in
- payin - How the customer intends to pay the PFI
- kind - Type of payment method e.g. BTC_ADDRESS, DEBIT_CARD, MOMO_MPESA
- amount - Total amount of currency the customer wants to pay in exchange for payout currency
- paymentDetails - The exact details of the payment method. As this information is sensitive, the SDK will convert these details into salted hashes
- payout - How the customer wishes to receive the payout from the PFI
- kind - Type of payment method e.g. BTC_ADDRESS, BANK_ACCOUNT, MOMO_MPESA
- paymentDetails - The exact details of the payment method. As this information is sensitive, the SDK will convert these details into salted hashes
- claims - The VCs that satisfy the requirements of the Offer. As this information is sensitive, the SDK will convert these details into salted hashes
Sign the RFQ​
Signing the RFQ ensures its authenticity. You can do so with the customer's Bearer DID:
Send RFQ to PFI​
Use TbdexHttpClient
to send the RFQ to the PFI, with an optional replyTo
property containing a valid URI where new messages from the PFI will be sent:
Callbacks are fully qualified URIs (DID or URL) that can be provided to the PFI via the replyTo
property.
If replyTo
is provided, the PFI will send all new messages of the exchange to the supplied URI.
This URI is scoped to each exchange, allowing you to specify a different URI per exchange if desired.
If replyTo
is not present, you will need to poll the PFI to receive new messages within the exchange.
If no error is thrown, the RFQ has been successfully sent to the PFI and an exchange has been created. This exchange serves as a thread of messages between your application and the PFI regarding this transaction.
The next message written to the exchange will be a Quote from the PFI.
Was this page helpful?
Connect with us on Discord
Submit feedback: Open a GitHub issue
Edit this page: GitHub Repo
Contribute: Contributing Guide