Submit user OTP
curl --request POST \
--url https://api.nomba.com/v1/checkout/user-card \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"orderReference": "c4307d58-2513-41d8-b7f7-dfecd5f9fdbe",
"phoneNumber": "08012345678",
"otp": "1234"
}
'import requests
url = "https://api.nomba.com/v1/checkout/user-card"
payload = {
"orderReference": "c4307d58-2513-41d8-b7f7-dfecd5f9fdbe",
"phoneNumber": "08012345678",
"otp": "1234"
}
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',
otp: '1234'
})
};
fetch('https://api.nomba.com/v1/checkout/user-card', 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",
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',
'otp' => '1234'
]),
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"
payload := strings.NewReader("{\n \"orderReference\": \"c4307d58-2513-41d8-b7f7-dfecd5f9fdbe\",\n \"phoneNumber\": \"08012345678\",\n \"otp\": \"1234\"\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")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"orderReference\": \"c4307d58-2513-41d8-b7f7-dfecd5f9fdbe\",\n \"phoneNumber\": \"08012345678\",\n \"otp\": \"1234\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nomba.com/v1/checkout/user-card")
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 \"otp\": \"1234\"\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
Submit user OTP
Use this endpoint to submit the user OTP send to the user’s mobile number. This will result in the user’s card being saved for later use.
POST
/
v1
/
checkout
/
user-card
Submit user OTP
curl --request POST \
--url https://api.nomba.com/v1/checkout/user-card \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"orderReference": "c4307d58-2513-41d8-b7f7-dfecd5f9fdbe",
"phoneNumber": "08012345678",
"otp": "1234"
}
'import requests
url = "https://api.nomba.com/v1/checkout/user-card"
payload = {
"orderReference": "c4307d58-2513-41d8-b7f7-dfecd5f9fdbe",
"phoneNumber": "08012345678",
"otp": "1234"
}
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',
otp: '1234'
})
};
fetch('https://api.nomba.com/v1/checkout/user-card', 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",
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',
'otp' => '1234'
]),
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"
payload := strings.NewReader("{\n \"orderReference\": \"c4307d58-2513-41d8-b7f7-dfecd5f9fdbe\",\n \"phoneNumber\": \"08012345678\",\n \"otp\": \"1234\"\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")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"orderReference\": \"c4307d58-2513-41d8-b7f7-dfecd5f9fdbe\",\n \"phoneNumber\": \"08012345678\",\n \"otp\": \"1234\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nomba.com/v1/checkout/user-card")
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 \"otp\": \"1234\"\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
Submit User OTP