curl --request POST \
--url https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId} \
--header 'Authorization: Bearer <token>' \
--header 'customer-id: <customer-id>'import requests
url = "https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}"
headers = {
"customer-id": "<customer-id>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'customer-id': '<customer-id>', Authorization: 'Bearer <token>'}
};
fetch('https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"customer-id: <customer-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("customer-id", "<customer-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}")
.header("customer-id", "<customer-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["customer-id"] = '<customer-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyConfirm milestone
Buyer approves one milestone; its full amount is released to the seller’s main balance. If the milestone was created with a customerId, the funds are released to that customer’s main balance instead. Requires the escrow to be funded (OPENED) and the caller to be the buyer. The escrow completes automatically when the final milestone is released.
curl --request POST \
--url https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId} \
--header 'Authorization: Bearer <token>' \
--header 'customer-id: <customer-id>'import requests
url = "https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}"
headers = {
"customer-id": "<customer-id>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'customer-id': '<customer-id>', Authorization: 'Bearer <token>'}
};
fetch('https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"customer-id: <customer-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("customer-id", "<customer-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}")
.header("customer-id", "<customer-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/escrow/milestone/confirm/{escrowId}/{milestoneId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["customer-id"] = '<customer-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyAuthorizations
Your secret key as a Bearer token. The key prefix selects the environment: sk_test_... (staging) or sk_live_... (production); a key on the wrong host is refused with 403 Unauthorized Access. Each key is limited to 10 requests per minute (429 beyond that) and, on production, to the IP addresses on your dashboard allowlist when one is configured.
Headers
The merchant customer this request acts on behalf of.
Path Parameters
The escrow's unique identifier.
The milestone's unique identifier.