Card Payments
Cards are one of the most popular ways to make payments online with a large global reach. SeerBit supports the most popular card types with a simple implentation.
Before you begin
Ensure you have your public key. You can find this on the SeerBit Merchant dashboard under accounts > api keys. If you don’t have an account with us yet, you can create a test account now
Card Payment Process
- Customers enters card details on merchant website.
- SeerBit checks that the details provided are valid (e.g the expiry date entered is not in the past)
- Authentication : Some cards may prompt the card holder to enter a pin or a one time password sent to the card holder's phone or email to authenticate the transaction.
- Authorization : The bank checks for sufficient funds on the card holder's account. if successful the amount is held in the customers account and released to the merchant on capture
- Capture : The money moves from the card holder's account (issuing bank) to the merchant account immediately after authorization
Note: By default, all card payments are captured immediately after authorization unless a capture delay or manual capture has been setup by the merchant. Read on how to setup a pre-authorized payment
How it works
- Collect the customers details (Fullname, Email and Mobile Number) and Card details.
- Make a request to the payment service with the payment/initiates endpoint.
- Based on the cardholders card type the seerBit selects an auth method.
Initializing a Card Payment
For the full specification, see our API Reference
Request Sample
The code snippet below shows an example response for creating a subscription
1curl --location 'https://seerbitapi.com/api/v2/payments/initiates' \
2--header 'Content-Type: application/json' \
3--header 'Authorization: Bearer YOUR_ENCRYPTION_KEY' \
4--data-raw '{
5
6 "publicKey":"YOUR_PUBLIC_KEY",
7 "amount":"100.00",
8 "fee":"10",
9 "fullName":"John Doe",
10 "mobileNumber":"08032000001",
11 "currency":"NGN",
12 "country":"NG",
13 "paymentReference":"LKJHGFDR123UI23992JN23R",
14 "email":"johndoe@gmail.com",
15 "productId":"Foods",
16 "productDescription":"RASPBERRY",
17 "clientAppCode":"kpp64",
18 "redirectUrl":"",
19 "paymentType":"CARD",
20 "channelType":"Mastercard",
21 "deviceType":"Apple Laptop",
22 "sourceIP":"127.0.0.1:3456",
23 "cardNumber":"12345678900929",
24 "cvv":"123",
25 "expiryMonth":"12",
26 "expiryYear":"26",
27 "pin":"0000",
28 "retry":"false"
29}'
1var request = require('request');
2var options = {
3 'method': 'POST',
4 'url': 'https://seerbitapi.com/api/v2/payments/initiates',
5 'headers': {
6 'Content-Type': 'application/json',
7 'Authorization': 'Bearer YOUR_ENCRYPTION_KEY'
8 },
9 body: JSON.stringify({
10 "publicKey": "YOUR_PUBLIC_KEY",
11 "amount": "100.00",
12 "fee": "10",
13 "fullName": "John Doe",
14 "mobileNumber": "08032000001",
15 "currency": "NGN",
16 "country": "NG",
17 "paymentReference": "LKJHGFDR123UI23992JN23R",
18 "email": "johndoe@gmail.com",
19 "productId": "Foods",
20 "productDescription": "RASPBERRY",
21 "clientAppCode": "kpp64",
22 "redirectUrl": "",
23 "paymentType": "CARD",
24 "channelType": "Mastercard",
25 "deviceType": "Apple Laptop",
26 "sourceIP": "127.0.0.1:3456",
27 "cardNumber": "12345678900929",
28 "cvv": "123",
29 "expiryMonth": "12",
30 "expiryYear": "26",
31 "pin": "0000",
32 "retry": "false"
33 })
34
35};
36request(options, function (error, response) {
37 if (error) throw new Error(error);
38 console.log(response.body);
39});
1<?php
2
3$curl = curl_init();
4
5curl_setopt_array($curl, array(
6 CURLOPT_URL => 'https://seerbitapi.com/api/v2/payments/initiates',
7 CURLOPT_RETURNTRANSFER => true,
8 CURLOPT_ENCODING => '',
9 CURLOPT_MAXREDIRS => 10,
10 CURLOPT_TIMEOUT => 0,
11 CURLOPT_FOLLOWLOCATION => true,
12 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
13 CURLOPT_CUSTOMREQUEST => 'POST',
14 CURLOPT_POSTFIELDS =>'{
15
16 "publicKey":"YOUR_PUBLIC_KEY",
17 "amount":"100.00",
18 "fee":"10",
19 "fullName":"John Doe",
20 "mobileNumber":"08032000001",
21 "currency":"NGN",
22 "country":"NG",
23 "paymentReference":"LKJHGFDR123UI23992JN23R",
24 "email":"johndoe@gmail.com",
25 "productId":"Foods",
26 "productDescription":"RASPBERRY",
27 "clientAppCode":"kpp64",
28 "redirectUrl":"",
29 "paymentType":"CARD",
30 "channelType":"Mastercard",
31 "deviceType":"Apple Laptop",
32 "sourceIP":"127.0.0.1:3456",
33 "cardNumber":"12345678900929",
34 "cvv":"123",
35 "expiryMonth":"12",
36 "expiryYear":"26",
37 "pin":"0000",
38 "retry":"false"
39
40}',
41 CURLOPT_HTTPHEADER => array(
42 'Content-Type: application/json',
43 'Authorization: Bearer YOUR_ENCRYPTION_KEY'
44 ),
45));
46
47$response = curl_exec($curl);
48
49curl_close($curl);
50echo $response;
Response Sample
The code snippet below shows an example request for generating a payment link to complete a payment
1{
2 "status": "SUCCESS",
3 "data": {
4 "code": "S20",
5 "payments": {
6 "paymentReference": "LKJHGFDR123UI23992JN23R",
7 "linkingReference": "F468778061587905955047"
8 },
9 "message": "Kindly enter OTP"
10 }
11}
Scenario 1 (Verve Card Type)
- The customers gets prompted to enter card pin.
- After the customer enters the card pin, call the payment service again using payment/initiates endpoint.
- An OTP (one time password) is sent to the cardholders registered phone number or email to validate the transaction.
- To Validate the transaction Call the Validate OTP payments/otp endpoint with the customers OTP and Pass the transactions linking reference in the request body.
Request with PIN
The code snipper below shows the sample request after passing the PIN
1curl --location 'https://seerbitapi.com/api/v2/payments/initiates' \
2--header 'Content-Type: application/json' \
3--header 'Authorization: Bearer YOUR_ENCRYPTION_KEY' \
4--data '{
5 "transaction":
6 {
7 "linkingreference":"F468778061587905955047",
8 "otp":"496865"
9 }
10}'
1var request = require('request');
2var options = {
3 'method': 'POST',
4 'url': 'https://seerbitapi.com/api/v2/payments/initiates',
5 'headers': {
6 'Content-Type': 'application/json',
7 'Authorization': 'Bearer YOUR_ENCRYPTION_KEY'
8 },
9 body: JSON.stringify({
10 "transaction": {
11 "linkingreference": "F468778061587905955047",
12 "otp": "496865"
13 }
14 })
15
16};
17request(options, function (error, response) {
18 if (error) throw new Error(error);
19 console.log(response.body);
20});
1<?php
2
3$curl = curl_init();
4
5curl_setopt_array($curl, array(
6 CURLOPT_URL => 'https://seerbitapi.com/api/v2/payments/initiates',
7 CURLOPT_RETURNTRANSFER => true,
8 CURLOPT_ENCODING => '',
9 CURLOPT_MAXREDIRS => 10,
10 CURLOPT_TIMEOUT => 0,
11 CURLOPT_FOLLOWLOCATION => true,
12 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
13 CURLOPT_CUSTOMREQUEST => 'POST',
14 CURLOPT_POSTFIELDS =>'{
15 "transaction":
16 {
17 "linkingreference":"F468778061587905955047",
18 "otp":"496865"
19 }
20 }',
21 CURLOPT_HTTPHEADER => array(
22 'Content-Type: application/json',
23 'Authorization: Bearer YOUR_ENCRYPTION_KEY'
24 ),
25));
26
27$response = curl_exec($curl);
28
29curl_close($curl);
30echo $response;
Response Sample
The code snippet below shows an example response after entering the OTP
1{
2 "status": "SUCCESS",
3 "data": {
4 "code": "00",
5 "payments": {
6 "reference": "LKJHGFDR123UI23992JN23R",
7 "linkingreference": "F468778061587905955047"
8 },
9 "message": "Successful"
10 }
11}
Scenario 2 (Master Card and Visa Card Type)
- The occurs for 3D secure card transactions.
- After the payment has been initiated, the card holder gets prompted to complete the payment on the card's bank page.
- For a successful initial call, code S20 will be returned with a redirect link in the redirectUrl field, merchant is expected to redirect to the link. Because of this merchant is expected to always pass the redirectUrl link that SeerBit should come back to after the payment is completed on 3Ds site.
Response Sample
The code snippet below shows an example request for generating a payment link to complete a payment
1{
2 "status": "SUCCESS",
3 "data": {
4 "code": "S20",
5 "payments": {
6 "paymentReference": "LKJHGFDR123UI23992JN23R",
7 "linkingReference": "F468778061587905955047",
8 "redirectUrl": "https://seerbitapigateway.com/seerbit/card-dispatch sredref=F468778061587905955047"
9 },
10 "message": "Transaction is pending"
11 }
12}
Scenario 3
- The customers gets prompted to enter card pin.
Response Sample
The code snippet below shows an example request for generating a payment link to complete a payment
1{
2 "status": "SUCCESS",
3 "data": {
4 "code": "00",
5 "payments": {
6 "paymentReference": "92SQ2A3BCDE42RFR2AS122221",
7 "linkingReference": "F611305721592735518716"
8 },
9 "message": "Successful"
10 }
11}
Testing your integration
Click on the button below to be redirected to the SeerBit Checkout page and use any of the test cards or test bank account provided below
Card Number
Card Type
Expiry Date
CVC
PIN
12345678900929
Mastercard
12/2026
123
0000
6280511000000095
Verve Card
12/2026
123
0000
Need something else?
If you have any questions or need general help, visit our support page
Signup for developer update
You can unsubscribe at any time. Read our privacy policy.