Metadata
metadata lets you attach your own key/value reference data to a transaction — order IDs, booking references, customer identifiers, anything your system needs to reconcile the payment later. Echezona stores it and hands it back to you; it doesn't interpret it.
Sending metadata
Pass it as an array of { name, value } pairs in the Initialize request:
{
"isLive": false,
"amount": 500,
"currency": "NGN",
"email": "customer@example.com",
"phone": "08182426598",
"firstName": "John",
"lastName": "Doe",
"transactionId": "TXN123456789",
"callbackUrl": "https://example.com/payment/callback",
"metadata": [
{ "name": "PNR", "value": "1J6DKD" },
{ "name": "CRA", "value": "CRA50663274" }
]
}
Use one name/value pair per field you want to track — don't combine multiple values into a single field, since that makes them harder to read back out individually.
Getting metadata back
Metadata round-trips on Fetch Transaction Status and Get Payment Details.
On Initialize, metadata is a JSON array. In the webhook payload, it arrives as that same array JSON-stringified — i.e. a string you need to JSON.parse, not a native array:
"metadata": "[{\"name\":\"PNR\",\"value\":\"1J6DKD\"},{\"name\":\"CRA\",\"value\":\"CRA50663274\"}]"
Parse it before reading individual fields.