Card Payment

Accept debit and credit 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.

Learn about the available card type and countries

Card Payment Process

  1. Customers enters card details on merchant website.

  2. SeerBit checks that the details provided are valid (e.g the expiry date entered is not in the past)

  3. 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.

  4. 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.

  5. 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

Initiate Card Transaction

How it works

  1. Collect the customers details (Fullname, Email and Mobile Number) and Card details.

  2. Make a request to the payment service with the payment/initiates endpoint.

  3. Based on the cardholders card type the seerBit selects an auth method.

Scenario 1 (Verve card type)

Authentication
Request Body
Response Body
Authentication
curl -X POST
https://seerbitapi.com/api/v2/payments/initiates
-H 'Content-Type: application/json'
-H 'Authorization: Bearer {token}
Request Body
{
"publicKey":"merchantPublicKey",
"amount":"100.00",
"fee":"10",
"fullName":"John Doe",
"mobileNumber":"08032000001",
"currency":"NGN",
"country":"NG",
"paymentReference":"LKJHGFDR123UI23992JN23R",
"email":"[email protected]",
"productId":"Foods",
"productDescription":"RASPBERRY",
"clientAppCode":"kpp64",
"redirectUrl":"",
"paymentType":"CARD",
"channelType":"Mastercard",
"deviceType":"Apple Laptop",
"sourceIP":"127.0.0.1:3456",
"cardNumber":"6280511000000095",
"cvv":"123",
"expiryMonth":"12",
"expiryYear":"26",
"pin":"0000",
"retry":"false",
"invoiceNumber":"1234567890abc123ac"
}
Response Body
{
"status": "SUCCESS",
"data": {
"code": "S20",
"payments": {
"paymentReference": "LKJHGFDR123UI23992JN23R",
"linkingReference": "F468778061587905955047"
},
"message": "Kindly enter OTP"
}
}
  1. The customers gets prompted to enter card pin.

  2. After the customer enters the card pin, call the payment service again using payment/initiates endpoint.

  3. An OTP (one time password) is sent to the cardholders registered phone number or email to validate the transaction.

  4. 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.

Authentication
Request Body
Response Body
Authentication
curl -X POST
https://seerbitapi.com/api/v2/payments/otp
-H 'Content-Type: application/json'
-H 'Authorization: Bearer {token}
Request Body
{
"transaction":
{
"linkingreference":"F468778061587905955047",
"otp":"496865"
}
}
Response Body
{
"status": "SUCCESS",
"data": {
"code": "00",
"payments": {
"reference": "LKJHGFDR123UI23992JN23R",
"linkingreference": "F468778061587905955047"
},
"message": "Successful"
}
}

Scenario 2 (Master Card and Visa Card)

This occurs for 3D secured card transactions

Read More about 3D Secured cards here

Request Body
Response Body
Request Body
{
"publicKey":"merchantPublicKey",
"amount":"100.00",
"fee":"10",
"fullName":"John Doe",
"mobileNumber":"08032000001",
"currency":"NGN",
"country":"NG",
"paymentReference":"LKJHGFDR123UI23992JN23R",
"email":"[email protected]",
"productId":"Foods",
"productDescription":"RASPBERRY",
"clientAppCode":"kpp64",
"redirectUrl":"",
"paymentType":"CARD",
"channelType":"Mastercard",
"deviceType":"Apple Laptop",
"sourceIP":"127.0.0.1:3456",
"cardNumber":"5123450000000008",
"cvv":"100",
"expiryMonth":"05",
"expiryYear":"21",
"retry":"false",
"invoiceNumber":"1234567890abc123ac"
}
Response Body
{
"status": "SUCCESS",
"data": {
"code": "S20",
"payments": {
"paymentReference": "LKJHGFDR123UI23992JN23R",
"linkingReference": "F468778061587905955047",
"redirectUrl": "https://seerbitapigateway.com/seerbit/card-dispatch?sredref=F468778061587905955047"
},
"message": "Transaction is pending"
}
}
  1. After the payment has been initiated, the card holder gets prompted to complete the payment on the card's bank page.

  2. 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.

Scenario 3

This occurs for card types that are non 3D secure

Authentication
Request Body
Response Body
Authentication
curl -X POST
https://seerbitapi.com/api/v2/payments/charge
-H 'Content-Type: application/json'
-H 'Authorization: Bearer {token}
Request Body
{
"publicKey":"merchant public key",
"amount":"1.00",
"fullName":"john doe",
"mobileNumber":"08033456599",
"currency":"NGN",
"country":"NG",
"paymentReference":"92SQ2A3BCDE42RFR2AS122221",
"email":"[email protected]",
"productId":"Foods",
"productDescription":"RASPBERRY",
"cardNumber":"5123450000000008",
"cvv":"100",
"expiryMonth":"05",
"expiryYear":"21",
"pin":"1234"
}
Response Body
{
"status": "SUCCESS",
"data": {
"code": "00",
"payments": {
"paymentReference": "92SQ2A3BCDE42RFR2AS122221",
"linkingReference": "F611305721592735518716"
},
"message": "Successful"
}
}

Parameter Fields

Parameter

Description

Type

publicKey

This is available after sign-up

dash board -> settings -> api keys.

String

Required

fullName

customer name

String

Optional

amount

amount to be paid

String

Required

fee

charge on transaction, customer or merchant to bear whom to bear this can be set on the dashboard by merchant

String

Optional

mobileNumber

customer phone number

String

Optional

currency

Currency to perform transaction

String

Required

country

Country the customer is performing transaction

String

Required

paymentReference

Unique payment reference/identifier, To be supplied by the Merchant

String

Required

email

Customer email address

String

Required

productId

Unique identification number of product, To be supplied by Merchant

String

Optional

productDescription

Narration of the transaction

String

Optional

clientAppCode

Extra Data

String

Optional

paymentType

This specifies the payment option used {CARD, ACCOUNT, TRANSFER}

String

Required

channelType

Type of card {mastercard, verve, visa}

String

Required

deviceType

Costumer's device

String

Optional

sourceIP

Customer IP Address

String

Optional

cardNumber

Customer's card number

String

Required

cvv

Three digit behind customer's card

String

Required

expiryMonth

Card expiration month

String

Required

expiryYear

Card expiration year

String

Required

pin

Card pin to authorise debit

String

Optional

retry

This should be passed as true for retrying a transaction with same reference. Note only Failed Transactions can be retried.

Boolean

Required

invoiceNumber

Unique identifier for invoice Transactions to the locate branch payment was made

String

Optional

message

Response message from SeerBit

code

Response code from SeerBit

linkingReference

SeerBit transaction unique identifier