Request OTP before saving a user's card
curl --request POST \
--url https://api.nomba.com/v1/checkout/user-card/auth \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"orderReference": "c4307d58-2513-41d8-b7f7-dfecd5f9fdbe",
"phoneNumber": "08012345678"
}
'import requests
url = "https://api.nomba.com/v1/checkout/user-card/auth"
payload = {
"orderReference": "c4307d58-2513-41d8-b7f7-dfecd5f9fdbe",
"phoneNumber": "08012345678"
}
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({
orderReference: 'c4307d58-2513-41d8-b7f7-dfecd5f9fdbe',
phoneNumber: '08012345678'
})
};
fetch('https://api.nomba.com/v1/checkout/user-card/auth', 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://api.nomba.com/v1/checkout/user-card/auth",
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([
'orderReference' => 'c4307d58-2513-41d8-b7f7-dfecd5f9fdbe',
'phoneNumber' => '08012345678'
]),
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://api.nomba.com/v1/checkout/user-card/auth"
payload := strings.NewReader("{\n \"orderReference\": \"c4307d58-2513-41d8-b7f7-dfecd5f9fdbe\",\n \"phoneNumber\": \"08012345678\"\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://api.nomba.com/v1/checkout/user-card/auth")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"orderReference\": \"c4307d58-2513-41d8-b7f7-dfecd5f9fdbe\",\n \"phoneNumber\": \"08012345678\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nomba.com/v1/checkout/user-card/auth")
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 \"orderReference\": \"c4307d58-2513-41d8-b7f7-dfecd5f9fdbe\",\n \"phoneNumber\": \"08012345678\"\n}"
response = http.request(request)
puts response.read_body{
"code": "00",
"description": "Success",
"data": {
"success": "true",
"message": "success"
}
}{
"code": "400",
"description": "Request failed."
}{
"code": "401",
"description": "Unauthorized"
}{
"code": "403",
"description": "Forbidden"
}{
"code": "404",
"description": "Record not found"
}{
"code": "429",
"description": "Too many requests"
}{
"code": "500",
"description": "Server error"
}Charge
Request OTP before saving a user's card
Use this endpoint to request an OTP to be sent to be sent to the users phone number to authenticate the user before saving the card. This endpoint is called after payment is successful, and the user requested to save their card for later.
POST
/
v1
/
checkout
/
user-card
/
auth
Request OTP before saving a user's card
curl --request POST \
--url https://api.nomba.com/v1/checkout/user-card/auth \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"orderReference": "c4307d58-2513-41d8-b7f7-dfecd5f9fdbe",
"phoneNumber": "08012345678"
}
'import requests
url = "https://api.nomba.com/v1/checkout/user-card/auth"
payload = {
"orderReference": "c4307d58-2513-41d8-b7f7-dfecd5f9fdbe",
"phoneNumber": "08012345678"
}
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({
orderReference: 'c4307d58-2513-41d8-b7f7-dfecd5f9fdbe',
phoneNumber: '08012345678'
})
};
fetch('https://api.nomba.com/v1/checkout/user-card/auth', 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://api.nomba.com/v1/checkout/user-card/auth",
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([
'orderReference' => 'c4307d58-2513-41d8-b7f7-dfecd5f9fdbe',
'phoneNumber' => '08012345678'
]),
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://api.nomba.com/v1/checkout/user-card/auth"
payload := strings.NewReader("{\n \"orderReference\": \"c4307d58-2513-41d8-b7f7-dfecd5f9fdbe\",\n \"phoneNumber\": \"08012345678\"\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://api.nomba.com/v1/checkout/user-card/auth")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"orderReference\": \"c4307d58-2513-41d8-b7f7-dfecd5f9fdbe\",\n \"phoneNumber\": \"08012345678\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nomba.com/v1/checkout/user-card/auth")
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 \"orderReference\": \"c4307d58-2513-41d8-b7f7-dfecd5f9fdbe\",\n \"phoneNumber\": \"08012345678\"\n}"
response = http.request(request)
puts response.read_body{
"code": "00",
"description": "Success",
"data": {
"success": "true",
"message": "success"
}
}{
"code": "400",
"description": "Request failed."
}{
"code": "401",
"description": "Unauthorized"
}{
"code": "403",
"description": "Forbidden"
}{
"code": "404",
"description": "Record not found"
}{
"code": "429",
"description": "Too many requests"
}{
"code": "500",
"description": "Server error"
}For a complete guide on response codes and transaction statuses, see Response Codes.
Authorizations
Nomba authenticates API calls with OAuth2 HTTP bearer tokens. There are two methods of authentication; Client-Credentials method and PKCE (Proof Key for Code Exchange) method. Both methods return an access token. Send it in the Authorization header: Authorization: Bearer <access_token>.
Body
application/json
Request OTP before saving a user's card