Card Authorization

StroWallet Card Webhook Integration Guide

When a card authorization is triggered (e.g., POS, ATM or ONLINE transaction), StroWallet sends a Authorization request to your webhook URL with details about the transaction.

Sample Payload Sent to Your Webhook

{
"authorization.request": "6854a984dbaa0f",
"card_Id": "683dcd64a07e55e",
"cardtype": "physical",
"brand": "AfriGo",
"currency": "NGN",
"maskedPan": "564032*****1000",
"merchant": {
"category": "6012",
"name": "DEMO MERCHANT",
"merchantId": "SB10051226LA000",
"city": "TEDE ATISBO L.G",
"state": "OY",
"country": "NG",
"postalCode": "100001"
},
"terminal": {
"rrn": "250000011230",
"stan": "009900146313",
"terminalId": "2200XTY2",
"terminalOperatingEnvironment": "on_premise",
"terminalAttendance": "attended",
"terminalType": "pos",
"panEntryMode": "magnetic_stripe",
"pinEntryMode": "magnetic_stripe",
"cardHolderPresence": true,
"cardPresence": true
},
"merchantAmount": 100,
"channel": "pos",
"type": "purchase",
"date": "2025-06-20T00:12:39+00:00"
}


What You Should Do

When you receive this webhook:

Log or store the payload for auditing.

Check if the card and user balance are valid on your system.

Respond with either approval or decline using a JSON structure (see below).

How to Respond

You must reply with a JSON response like one of the following:

{
"APPROVE": "YES"
}

This tells StroWallet to approve the card transaction.


Decline the Transaction (with reason)

{
"APPROVE": "NO",
"reason": "User has insufficient balance"
}

This tells StroWallet to decline the transaction, and your reason may be shown to the user

Rule Description
APPROVE: YES Must be exact to approve. Any other value will decline.
HTTP Code You must return HTTP 200 even for declines, so StroWallet does not retry.


If the transaction is approved and successful, you will receive a webhook with the event type:
transaction.created

Example payload:

{
"transaction.created": "6854b2e222054f",
"card_Id": "683dcd85646e55e",
"cardtype": "unknown",
"brand": null,
"currency": "NGN",
"maskedPan": null,
"merchant": {
"category": "6012",
"name": "DEMO MERCHANT",
"merchantId": "SB14001226LA000",
"city": "TEDE ATISBO L.G",
"state": "OY",
"country": "NG",
"postalCode": "100001"
},
"terminal": {
"rrn": "250620020102",
"stan": "000000116444",
"terminalId": "2232ZTM1",
"terminalOperatingEnvironment": "on_premise",
"terminalAttendance": "attended",
"terminalType": "pos",
"panEntryMode": "magnetic_stripe",
"pinEntryMode": "magnetic_stripe",
"cardHolderPresence": true,
"cardPresence": true
},
"merchantAmount": 100,
"fee": 20,
"channel": "pos",
"type": "purchase",
"date": "2025-06-20T01:06:20+00:00"
}