Payment Gateway
Verify a payment
Returns a payment by your reference or its GTW-… id, with its current status.
Use your reference or Paybeta's id (GTW-…). While the payment is still open, Paybeta checks with the processor first, so this is always the current state.
Always verify before you deliver: after your webhook (its signature covers only data.reference), after the customer is redirected back to your site, or after the popup's onSuccess.
status |
Meaning |
|---|---|
pending |
Not paid yet. |
successful |
Paid. amount_paid and paid_at are set. |
failed |
Expired after a declined attempt. See failure_reason. |
expired |
Expired without being paid. |
Send your secret key in the
P-API-KEY header. Keep it on your server, never in an app or browser.Path parameters
-
reference string Required
Your reference, or the payment's
id(GTW-…).Example:ORDER-1001
Responses
- 200Paid
- 404Not found
Request
curl --request GET \ --url 'https://api.paybeta.ng/api/v1/payments/{reference}' \ --header 'Accept: application/json' \ --header 'P-API-KEY: YOUR_SECRET_KEY'curl --request GET \ --url 'https://api.sandbox.paybeta.ng/api/v1/payments/{reference}' \ --header 'Accept: application/json' \ --header 'P-API-KEY: YOUR_SECRET_KEY'
<?php use Illuminate\Support\Facades\Http; $response = Http::withHeaders([ 'Accept' => 'application/json', 'P-API-KEY' => 'YOUR_SECRET_KEY', ])->get('https://api.paybeta.ng/api/v1/payments/{reference}'); $data = $response->json();<?php use Illuminate\Support\Facades\Http; $response = Http::withHeaders([ 'Accept' => 'application/json', 'P-API-KEY' => 'YOUR_SECRET_KEY', ])->get('https://api.sandbox.paybeta.ng/api/v1/payments/{reference}'); $data = $response->json();
const response = await fetch('https://api.paybeta.ng/api/v1/payments/{reference}', { method: 'GET', headers: { "Accept": "application/json", "P-API-KEY": "YOUR_SECRET_KEY", }, }); const data = await response.json();const response = await fetch('https://api.sandbox.paybeta.ng/api/v1/payments/{reference}', { method: 'GET', headers: { "Accept": "application/json", "P-API-KEY": "YOUR_SECRET_KEY", }, }); const data = await response.json();
import requests response = requests.request( "GET", "https://api.paybeta.ng/api/v1/payments/{reference}", headers={ "Accept": "application/json", "P-API-KEY": "YOUR_SECRET_KEY", }, ) data = response.json()import requests response = requests.request( "GET", "https://api.sandbox.paybeta.ng/api/v1/payments/{reference}", headers={ "Accept": "application/json", "P-API-KEY": "YOUR_SECRET_KEY", }, ) data = response.json()
GET /api/v1/payments/{reference} HTTP/1.1 Host: api.paybeta.ng Accept: application/json P-API-KEY: YOUR_SECRET_KEYGET /api/v1/payments/{reference} HTTP/1.1 Host: api.sandbox.paybeta.ng Accept: application/json P-API-KEY: YOUR_SECRET_KEY
import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.paybeta.ng/api/v1/payments/{reference}")) .header("Accept", "application/json") .header("P-API-KEY", "YOUR_SECRET_KEY") .method("GET", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse<String> response = HttpClient.newHttpClient() .send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.sandbox.paybeta.ng/api/v1/payments/{reference}")) .header("Accept", "application/json") .header("P-API-KEY", "YOUR_SECRET_KEY") .method("GET", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse<String> response = HttpClient.newHttpClient() .send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using System.Net.Http; using System.Text; using var client = new HttpClient(); var request = new HttpRequestMessage(new HttpMethod("GET"), "https://api.paybeta.ng/api/v1/payments/{reference}"); request.Headers.TryAddWithoutValidation("Accept", "application/json"); request.Headers.TryAddWithoutValidation("P-API-KEY", "YOUR_SECRET_KEY"); var response = await client.SendAsync(request); var data = await response.Content.ReadAsStringAsync(); Console.WriteLine(data);using System.Net.Http; using System.Text; using var client = new HttpClient(); var request = new HttpRequestMessage(new HttpMethod("GET"), "https://api.sandbox.paybeta.ng/api/v1/payments/{reference}"); request.Headers.TryAddWithoutValidation("Accept", "application/json"); request.Headers.TryAddWithoutValidation("P-API-KEY", "YOUR_SECRET_KEY"); var response = await client.SendAsync(request); var data = await response.Content.ReadAsStringAsync(); Console.WriteLine(data);
package main import ( "fmt" "io" "net/http" ) func main() { req, _ := http.NewRequest("GET", "https://api.paybeta.ng/api/v1/payments/{reference}", nil) req.Header.Set("Accept", "application/json") req.Header.Set("P-API-KEY", "YOUR_SECRET_KEY") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() data, _ := io.ReadAll(res.Body) fmt.Println(string(data)) }package main import ( "fmt" "io" "net/http" ) func main() { req, _ := http.NewRequest("GET", "https://api.sandbox.paybeta.ng/api/v1/payments/{reference}", nil) req.Header.Set("Accept", "application/json") req.Header.Set("P-API-KEY", "YOUR_SECRET_KEY") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() data, _ := io.ReadAll(res.Body) fmt.Println(string(data)) }
require "net/http" require "json" uri = URI("https://api.paybeta.ng/api/v1/payments/{reference}") request = Net::HTTP::Get.new(uri) request["Accept"] = "application/json" request["P-API-KEY"] = "YOUR_SECRET_KEY" response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http| http.request(request) end data = JSON.parse(response.body)require "net/http" require "json" uri = URI("https://api.sandbox.paybeta.ng/api/v1/payments/{reference}") request = Net::HTTP::Get.new(uri) request["Accept"] = "application/json" request["P-API-KEY"] = "YOUR_SECRET_KEY" response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http| http.request(request) end data = JSON.parse(response.body)
import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.RequestBody.Companion.toRequestBody val client = OkHttpClient() val request = Request.Builder() .url("https://api.paybeta.ng/api/v1/payments/{reference}") .method("GET", null) .addHeader("Accept", "application/json") .addHeader("P-API-KEY", "YOUR_SECRET_KEY") .build() client.newCall(request).execute().use { response -> println(response.body?.string()) }import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.RequestBody.Companion.toRequestBody val client = OkHttpClient() val request = Request.Builder() .url("https://api.sandbox.paybeta.ng/api/v1/payments/{reference}") .method("GET", null) .addHeader("Accept", "application/json") .addHeader("P-API-KEY", "YOUR_SECRET_KEY") .build() client.newCall(request).execute().use { response -> println(response.body?.string()) }
import Foundation var request = URLRequest(url: URL(string: "https://api.paybeta.ng/api/v1/payments/{reference}")!) request.httpMethod = "GET" request.setValue("application/json", forHTTPHeaderField: "Accept") request.setValue("YOUR_SECRET_KEY", forHTTPHeaderField: "P-API-KEY") let (data, _) = try await URLSession.shared.data(for: request) print(String(data: data, encoding: .utf8)!)import Foundation var request = URLRequest(url: URL(string: "https://api.sandbox.paybeta.ng/api/v1/payments/{reference}")!) request.httpMethod = "GET" request.setValue("application/json", forHTTPHeaderField: "Accept") request.setValue("YOUR_SECRET_KEY", forHTTPHeaderField: "P-API-KEY") let (data, _) = try await URLSession.shared.data(for: request) print(String(data: data, encoding: .utf8)!)
import 'package:http/http.dart' as http; final response = await http.get( Uri.parse('https://api.paybeta.ng/api/v1/payments/{reference}'), headers: { 'Accept': 'application/json', 'P-API-KEY': 'YOUR_SECRET_KEY', }, ); print(response.body);import 'package:http/http.dart' as http; final response = await http.get( Uri.parse('https://api.sandbox.paybeta.ng/api/v1/payments/{reference}'), headers: { 'Accept': 'application/json', 'P-API-KEY': 'YOUR_SECRET_KEY', }, ); print(response.body);
Response
{
"status": "successful",
"message": "Request processed successfully.",
"data": {
"id": "GTW-K3J7Q2M9X4ZP8L1N5R6T0V2B3C4D",
"reference": "ORDER-1001",
"status": "successful",
"amount": 5000,
"fee": 70,
"pass_charge": false,
"charge_amount": 5000,
"amount_paid": 5000,
"merchant_amount": 4930,
"mode": "test",
"livemode": false,
"currency": "NGN",
"channel": "card",
"description": "Pro plan · monthly",
"customer": {
"email": "ada@example.com",
"name": "Ada Lovelace",
"phone": "08012345678"
},
"metadata": {
"cart_id": 9
},
"recurring": false,
"authorization": null,
"checkout_url": "https://checkout.paybeta.ng/pay/GTW-K3J7Q2M9X4ZP8L1N5R6T0V2B3C4D",
"provider": "squad",
"provider_reference": "PBG261030122646ABCDEF1234",
"failure_reason": null,
"expires_at": "2026-10-30T13:00:00+01:00",
"paid_at": "2026-10-30T12:04:10+01:00",
"created_at": "2026-10-30T12:00:00+01:00"
}
}
{
"status": "failed",
"message": "Payment not found",
"data": null
}