Create Virtual Prepaid Card Endpoint
POST {scheme}://{host}:{port}/virtual-card/api/v1/cards/create |
Request Type is application/json
Authorization: {passport generated bearer token}
Request Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
2 | pin | Numeric | 4 | Yes | This is a default pin configured on the client end for card creation. |
3 | firstName | String | 100 | No | |
4 | lastName | String | 100 | No | |
5 | nameOnCard | String | 100 | No | |
6 | mobileNr | String | 25 | Yes | |
7 | emailAddress | String | 50 | Yes | |
8 | streetAddress | String | 255 | No | |
9 | streetAddressLine2 | String | 255 | No | |
10 | city | String | 255 | Yes | |
11 | state | String | 50 | No | |
12 | postalCode | String | 50 | No | |
13 | countryCode | String | 3 | Yes | |
14 | cardIdentifier | String | 100 | Yes | This is a name to identify each card attached to the same account |
Plain Sample Request
{
“pin”:”1234″,
“firstName”:”Edson”,
“lastName”:”Rock”,
“nameOnCard”:”Adewoye Adeyelr”,
“mobileNr”:”2348055186175″,
“emailAddress”:”adewoyeadeyel@eexptest.com“,
“streetAddress”:”12 vvv Road”,
“streetAddressLine2″:”Off Adden Boulevard”,
“city”:”Lagos”,
“state”:”Lagos”,
“postalCode”:”23401″,
“countryCode”:”NGN”,
“cardIdentifier” : “my-card”
}
Encrypted Sample Request
{
“data”:”T4DZPBE42uzXl61X+3D47lTyB1uXkvgTY/Q2ATx5/A2Qm/8fAlkbJbMtmpGciOCIOimf44BRnntAsX7mn5UwFd6yE+fnVQvWLti+MYKud6ywK5fckw8b0ZrzR5+nvNLEaTA9jFptCBq0nNN1tCk7QzcgajBbad1/pbC8QUf7oYZ1rVqQ/Kghyi0aC5tIyL2h3ul/jiPyjEmb18I0xTSz3w==”
}
Response Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
1 | responseCode | String | |||
2 | responseMessage | String | |||
3 | pan | String | |||
4 | cvv | String | |||
5 | cvv2 | String | |||
6 | pinInfo | String | |||
7 | pinOffset | String | |||
8 | track2 | String | |||
9 | seqNr | numeric |
Sample Success Response
{
“responseCode”:”00″,
“responseMessage”:”Successful”,
“data”:{
“pan”:”5063210000000005255″,
“seqNr”:”001″,
“defaultAccountType”:”20″,
“expiryDate”:”2407″,
“pinOffset”:”7928″,
“cvv”:”829″,
“cvv2″:”801”,
“pinInfo”:”AC47A9D62D435C76″,
“track2″:”5063210000000005255=2407101007928829”,
“customerId”:”PC5063215255-001″
}
}
Sample Failed Response
{
“responseCode”: “W104”,
“responseMessage”: “A card already exists for this customer on this domain”,
“errors”: []
}
Create Virtual Debit Card Endpoint
POST {scheme}://{host}:{port}/virtual-card/api/v1/cards/create/debit |
Request Type is application/json
Authorization: {passport generated bearer token}
Request Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
1 | accountType | Numeric | 2 | Yes | Two digit representation of the Account Type.20 – Current Account10 – Savings Account |
2 | accountId | Numeric | 10 | Yes | |
3 | pin | Numeric | 4 | Yes | This is a default pin configured on the client end for card creation. |
4 | firstName | String | 100 | No | |
5 | lastName | String | 100 | No | |
6 | nameOnCard | String | 100 | No | |
7 | mobileNr | String | 25 | Yes | |
8 | emailAddress | String | 50 | Yes | |
9 | streetAddress | String | 255 | No | |
10 | streetAddressLine2 | String | 255 | No | |
11 | city | String | 255 | Yes | |
12 | state | String | 50 | No | |
13 | postalCode | String | 50 | No | |
14 | countryCode | String | 3 | Yes | |
15 | cardIdentifier | String | 100 | Yes | This is a name to identify each card attached to the same account |
Plain Sample Request
{
“accountType”:”20″,
“accountId”:”1234567890″,
“pin”:”1234″,
“firstName”:”Edson”,
“lastName”:”Rock”,
“nameOnCard”:”Adewoye Adeyelr”,
“mobileNr”:”2348055186175″,
“emailAddress”:”adewoyeadeyel@eexptest.com“,
“streetAddress”:”12 vvv Road”,
“streetAddressLine2″:”Off Adden Boulevard”,
“city”:”Lagos”,
“state”:”Lagos”,
“postalCode”:”23401″,
“countryCode”:”NGN”,
“cardIdentifier” : “my-card”
}
Encrypted Sample Request
{
“data”:”T4DZPBE42uzXl61X+3D47lTyB1uXkvgTY/Q2ATx5/A2Qm/8fAlkbJbMtmpGciOCIOimf44BRnntAsX7mn5UwFd6yE+fnVQvWLti+MYKud6ywK5fckw8b0ZrzR5+nvNLEaTA9jFptCBq0nNN1tCk7QzcgajBbad1/pbC8QUf7oYZ1rVqQ/Kghyi0aC5tIyL2h3ul/jiPyjEmb18I0xTSz3w==”
}
Response Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
1 | responseCode | String | |||
2 | responseMessage | String | |||
3 | pan | String | |||
4 | cvv | String | |||
5 | cvv2 | String | |||
6 | pinInfo | String | |||
7 | pinOffset | String | |||
8 | track2 | String | |||
9 | seqNr | numeric |
Sample Success Response
{
“responseCode”:”00″,
“responseMessage”:”Successful”,
“data”:{
“pan”:”5063210000000005255″,
“seqNr”:”001″,
“defaultAccountType”:”20″,
“expiryDate”:”2407″,
“pinOffset”:”7928″,
“cvv”:”829″,
“cvv2″:”801”,
“pinInfo”:”AC47A9D62D435C76″,
“track2″:”5063210000000005255=2407101007928829”,
“customerId”:”PC5063215255-001″
}
}
Sample Failed Response
{
“responseCode”: “W104”,
“responseMessage”: “A card already exists for this customer on this domain”,
“errors”: []
}
Block Virtual Card Endpoint
POST {scheme}://{host}:{port}/virtual-card/api/v1/cards/block |
Request Type is application/json
Authorization: {passport generated bearer token}
Request Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
1 | mobileNumber | String | 25 | Yes | |
2 | pin | Numeric | 4 | Yes | |
3 | cardIdentifier | String | 100 | Yes | This is a name to identify each card attached to the same account |
Plain Sample Request
{
“pin”:”1234″,
“mobileNumber”:”2348055186175″,
“cardIdentifier” : “my-card”
}
Encrypted Sample Request
{
“data”:”T4DZPBE42uzXl61X+3D47lTyB1uXkvgTY/Q2ATx5/A2Qm/8fAlkbJbMtmpGciO”
}
Sample Success Response
{
“responseCode”: “00”,
“responseMessage”: “Successful”,
“data”: {
“maskedPan”: “506321*********5396”
}
}
Sample Failed Response
{
“responseCode”: “W102”,
“responseMessage”: “Failed to complete request”,
“errors”: [
{
“fieldName”: null,
“code”: “E39”,
“message”: “No Card acceptor ID has been defined for this client.”
}
]
}
Unblock Virtual Card Endpoint
POST {scheme}://{host}:{port}/virtual-card/api/v1/cards/unblock |
Request Type is application/json
Authorization: {passport generated bearer token}
Request Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
1 | mobileNumber | String | 25 | Yes | |
2 | pin | Numeric | 4 | Yes | |
3 | cardIdentifier | String | 100 | Yes | This is a name to identify each card attached to the same account |
Plain Sample Request
{
“pin”:”1234″,
“mobileNumber”:”2348055186175″,
“cardIdentifier” : “my-card”
}
Encrypted Sample Request
{
“data”:”T4DZPBE42uzXl61X+3D47lTyB1uXkvgTY/Q2ATx5/A2Qm/8fAlkbJbMtmpGciOCIO”
}
Sample Success Response
{
“responseCode”: “00”,
“responseMessage”: “Successful”,
“data”: {
“maskedPan”: “506321*********5396”
}
}
Sample Failed Response
{
“responseCode”: “W102”,
“responseMessage”: “Failed to complete request”,
“errors”: [
{
“fieldName”: null,
“code”: “E39”,
“message”: “No Card acceptor ID has been defined for this client.”
}
]
}
Change Card Pin Endpoint – This endpoint must be called after successful card creation to activate the card.
POST {scheme}://{host}:{port}/virtual-card/api/v1/cards/change-pin |
Authorization: {passport generated bearer token}
Request Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
1 | mobileNumber | String | 25 | Yes | |
2 | oldPin | Numeric | 4 | Yes | This is a default pin configured on the client end that was used to create the card. After the successful activation, subsequent call to this endpoint, the user old pin will then be passed. |
3 | newPin | Numeric | 4 | Yes | This is the user’s preferred pin. |
4 | cardIdentifier | String | 100 | Yes | This is a name to identify each card attached to the same account |
Plain Sample Request
{
“newPin”:”1234″,
“oldPin”:”1234″,
“mobileNumber”:”2348055186175″,
“cardIdentifier” : “my-card”
}
Encrypted Sample Request
{
“data”:”T4DZPBE42uzXl61X+3D47lTyB1uXkvgTY/Q2ATx5/A2Qm/8fAlkbJbzcgajBbad1/pbC8QUf7oYZ1rVqQ/Kghyi0aC5tIyL2h3ul/jiPyjEmb18I0xTSz3w==”
}
Sample Success Response
{
“responseCode”: “00”,
“responseMessage”: “Successful”,
“data”: {
“maskedPan”: “506321*********5396”
}
}
Sample Failed Response
{
“responseCode”: “W102”,
“responseMessage”: “Failed to complete request”,
“errors”: [
{
“fieldName”: null,
“code”: “E39”,
“message”: “No Card acceptor ID has been defined for this client.”
}
]
}
Get Card balance Endpoint
POST {scheme}://{host}:{port}/virtual-card/api/v1/cards/card-balance |
Request Type is application/json
Authorization: {passport generated bearer token}
Request Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
1 | mobileNumber | String | 25 | Yes | |
2 | cardIdentifier | String | 100 | Yes | This is a name to identify each card attached to the same account |
Sample Request
{
“mobileNumber” : “2348065186175”,
“cardIdentifier” : “my-card”
}
Sample Success Response
{
“responseCode”: “00”,
“responseMessage”: “Successful”,
“data”:{
“ledgerBalance”:”00″,
“availableBalance”:”0.00″,
“cashLimit”:”0.00″,
“cashNrTransLimit”:”0.00″,
“paymentLimit”:”0.00″,
“paymentNrTransLimit”:”0.00″,
“depositCreditLimit”:”0.00″
}
}
Sample Failed Response
{
“responseCode”: “W102”,
“responseMessage”: “Failed to complete request”,
“errors”: [
{
“fieldName”: null,
“code”: “10400”,
“message”: “Bad request Error 1: pan-> not a valid card number”
}
]
}
Get Account Statement Endpoint
POST {scheme}://{host}:{port}/virtual-card/api/v1/cards/account-statement |
Request Type is application/json
Authorization: {passport generated bearer token}
Request Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
1 | fromDate | String | Yes | ||
2 | toDate | String | Yes | ||
3 | transCount | Integer | Yes | ||
4 | reference | Integer | Yes | ||
5 | forward | Integer | Yes | ||
6 | ordering | Integer | Yes | ||
7 | mobileNumber | String | Yes | ||
8 | cardIdentifier | String | 100 | Yes | This is a name to identify each card attached to the same account |
Sample Request
{
“fromDate” : “03/05/2018”,
“toDate” : “03/05/2018”,
“transCount” : 10,
“reference” : 1,
“forward” : 1,
“ordering” : 1,
“mobileNumber” : “2348065186175”,
“cardIdentifier” : “my-card”
}
Sample Success Response
{
“responseCode”: “00”,
“responseMessage”: “Successful”,
“data”: {
“statementRecords”: [
{
“tranType”: “50”,
“tranAmount”: “-23250”,
“tranLocalDatetime”: “1406497152000”,
“tranPostedDatetime”: “1406497152230”,
“cardAcceptorNameLocation”: “QTBPWCGMO/ayo/999923430 LANG”
},
{
“tranType”: “50”,
“tranAmount”: “-20000”,
“tranLocalDatetime”: “1406497152005”,
“tranPostedDatetime”: “1406497152210”,
“cardAcceptorNameLocation”: “QTBPWCGMO/ayo/999923430 LANG”
}
]
}
}
Sample Failed Response
{
“responseCode”: “W102”,
“responseMessage”: “Failed to complete request”,
“errors”: [
{
“fieldName”: null,
“code”: “10400”,
“message”: “Bad request Error 1: pan-> not a valid card number”
}
]
}
Get Customer Details Endpoint
GET {scheme}://{host}:{port}/virtual-card/api/v1/cards/customer-details |
Request Type is application/json
Authorization: {passport generated bearer token}
Header Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
1 | mobileNumber | String | Yes |
Sample Response
{
“responseCode”: “00”,
“responseMessage”: “Successful”,
“data”: {
“customer”:{
“id”: 1,
“createdAt”: “2021-07-22 13:59:19”,
“updatedAt”: null,
“firstName”:”John”,
“lastName”:”Doe”,
“nameOnCard”:”John Doe”,
“mobileNumber”:”234807564996655″,
“gender”:”Male”,
“email”:”john.doe@interswitchgroup.com”,
“streetAddress”:”7 Ako Awo Street”,
“streetAddressLine2″:”7 Ako Awo Street”
},
“domain”:{
“id”: 1,
“createdAt”: “2021-07-22 13:59:19”,
“updatedAt”: null,
“domainCode”:”FBN”,
“clientId”:”virtual-card”,
“domainName”:”First bank”,
“issuerNr”:”2″,
“currencyCode”:”NGN”,
“cardProgram”:”UAT wallet”,
“channel”:”quicktellermobile”,
“merchantId”:”QTMOBILE1IZTTIS”,
“enabled”:true
},
“cardDetails”: [
{
“cardIdentifier”: “default”,
“maskedPan”: “506321*********0545”,
“status”: “unblocked”
},
{
“cardIdentifier”: “my-card”,
“maskedPan”: “506321*********1733”,
“status”: “unblocked”
}
]
}
}
Get Card Details Endpoint
GET {scheme}://{host}:{port}/virtual-card/api/v1/cards/card-details |
Request Type is application/json
Authorization: {passport generated bearer token}
Header Message description
Field# | Field name | Data type | Max length | Required | Description |
---|---|---|---|---|---|
1 | mobileNumber | String | Yes | ||
2 | cardIdentifier | String | 100 | Yes | This is a name to identify each card attached to the same account |
Sample Response
{
“responseCode”: “00”,
“responseMessage”: “Successful”,
“data”: {
“safeTokenStatus”: “SUCCESSFUL”,
“payPhoneStatus”: “SUCCESSFUL”,
“maskedPan”: “506321*********5396”,
“currencyCode”: “NGN”,
“seqNr”: “001”,
“pan”: “5063210987654345396”,
“cvv”: “333”,
“cvv2”: “233”,
“expiry”: “2501”,
“status”: “unblocked”
}
}