Skip to main content
POST
/
v1
/
payments
/
{paymentId}
/
verify
Verify payment
curl --request POST \
  --url https://dev.api-gateway.archefusion.com/v1/payments/{paymentId}/verify \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "transactionId": 123456789
}
'
import requests

url = "https://dev.api-gateway.archefusion.com/v1/payments/{paymentId}/verify"

payload = { "transactionId": 123456789 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({transactionId: 123456789})
};

fetch('https://dev.api-gateway.archefusion.com/v1/payments/{paymentId}/verify', 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://dev.api-gateway.archefusion.com/v1/payments/{paymentId}/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'transactionId' => 123456789
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://dev.api-gateway.archefusion.com/v1/payments/{paymentId}/verify"

payload := strings.NewReader("{\n \"transactionId\": 123456789\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://dev.api-gateway.archefusion.com/v1/payments/{paymentId}/verify")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"transactionId\": 123456789\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://dev.api-gateway.archefusion.com/v1/payments/{paymentId}/verify")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"transactionId\": 123456789\n}"

response = http.request(request)
puts response.read_body
{
  "status": true,
  "statusCode": 200,
  "message": "Payment already succeeded",
  "data": {
    "id": "9ead7f67-7392-454c-ba15-e112a318a96c",
    "type": "payment.succeeded",
    "createdAt": "2026-06-25T09:07:29.318Z",
    "merchantNumber": "ARC-2026-000006",
    "data": {
      "paymentId": "14b9dfda-c366-4386-988e-8ce3719d27c9",
      "merchantOrderId": "order-1782121386",
      "status": "SUCCESS",
      "executionStatus": "succeeded",
      "currency": "NGN",
      "amount": 1000,
      "gatewayReference": "14b9dfda-c366-4386-988e-8ce3719d27c9"
    }
  }
}
{
"success": false,
"statusCode": 401,
"message": "Invalid API key",
"data": null
}
{
"success": false,
"statusCode": 404,
"message": "Payment not found",
"data": null
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

paymentId
string
required

This represents the payment ID. You can retrieve it from the paymentId field in the initiate payment response, or from the redirect URL after the customer completes payment.

Body

application/json
transactionId
string

This represents the transaction ID. It is an optional field and it is mainly used by gateways that return a provider transaction ID.

Example:

123456789

Response

Success

status
boolean
Example:

true

statusCode
integer
Example:

200

message
string
Example:

"Payment already succeeded"

data
object