3

I am new to flutterwave integrations. I am developing a website and testing the Escrow Payments feature. I have created an account and all the other stuff with api, secret key and well as details and upoads etc. It all seem to be looking good in my development environment using the api key from ravesandbox. I am totally confused on how Settling an Escrow payment and Refunding an Escrow payment works. It says in the documentation "When the funds are in escrow and you would like to settle the seller for the funds you would need to call our settlement endpoint."

Test endpoint: https://ravesandboxapi.flutterwave.com/v2/gpx/transactions/escrow/settle and then it gave a sample request

{
    "id": "348813", // this is the txid value returned in the v2/verify response.
    "secret_key": "FLWSECK-*************************-X" // your merchant secret key.
}

Something Similar too with Refunding an Escrow payment. How exactly does this work? Does it go somewhere in my site or...?

Osuji Kingsley
  • 371
  • 3
  • 18

3 Answers3

3

I would assume you are building a marketplace platform, from the description this is what I can gather. Rave allows you to handle payments in your marketplace using two features split payments and Escrow (for consumer protection).

When using split payments the assumption is that you want Rave to handle automatic settlements to sellers on your platform, so for example when a seller has collected N10,000 via your platform and it's due to be settled tomorrow, Rave automatically settles into the account you've provided for the seller. You can read more on split payments here.

Escrow payments allow you to provide consumer protection and works best when using the scenario I described above with split payments. Assume the transactions from the merchant above were flagged as escrow transactions, this is the scenario that would play out.

Merchant x has collected 4 transactions worth N10,000 because you set them in escrow, they would not be settled on the due date as expected. Each transaction would now be settled when you call the settlement API.

Let's break it down using a sample transaction from the 4 transactions. Assume 1 f the 4 transactions were done by customer A - N2000 on the 4th of May 2019, this means the transaction was initially due to be settled to the seller on the 5th of May 2019 (T+1 settlements), but you placed the transaction in escrow, till your assumed buyer confirmation flow is completed, and seller meets all conditions to receive the payment. Assume the date this confirmation happens is on the 10th of May this means you call the settlement API on this date, the transaction leaves escrow and Rave automatically settles the fund into the Sellers account the next day.

This is how the Escrow service works on Rave, let me know if this clarifies things for you.

  • Yeah that is how I understand it. The API call is what I am confused about. Where exactly is the call made. Is it on the dashboard..or how does the code go?```https://ravesandboxapi.flutterwave.com/v2/gpx/transactions/escrow/settle``` .How does it come together to make a call? After confirming consumer receipt of goods. The process to make the call so the merchant gets his fund is particularly what I am confused about. I don't suppose I have to search the url above in a browser – Osuji Kingsley May 07 '19 at 14:50
  • From my explanation above you call the API when your system is ready to settle the merchant, this API call would allow the transaction to get settled the next day by our system. – temiloluwa adesina May 09 '19 at 06:25
  • `https://ravesandboxapi.flutterwave.com/v2/gpx/transactions/escrow/settle` now returns 404 :( – Dawoodjee Dec 20 '21 at 22:10
0

Flutterwave docs dont do a good job telling us that this is a POST method, not GET.

const options = {
    method: 'POST',
    headers: {
               'Content-Type': 'application/json',
    },
    body: JSON.stringify(data),
};
    
let data = {
    "id": txid,
    "secret_key": "your-secret-key"
};

fetch('https://api.ravepay.co/v2/gpx/transactions/escrow/settle', options)
   .then(response => response.json())
   .then(response => console.log(response))
   .catch(err => console.error(err))
Dawoodjee
  • 439
  • 5
  • 16
0

For anyone seeing this past 2022, it seems Flutterwave has quietly removed support for v2 escrows (currently they work only in test mode but not in prod). There is no mention of escrow support in v3 of Flutterwave's api so it's safe to assume it won't be supported going forward