Skip to main content

IPN Notifications

GLODIPAY delivers real-time payment results to your server via Instant Payment Notification (IPN) — an HTTP POST to the notificationUrl you provided when creating the transaction.

Method: POST
Content-Type: application/json

Retry policy: If your server does not respond with {"returnCode":"100"} within 30 seconds, GLODIPAY will retry delivery. Your handler should be idempotent — the same notification may be delivered more than once.

What triggers an IPN: Any transition to a terminal or significant state: successful, failed, error, refund_successful, refund_failed, void_successful, etc.


Payload Fields

FieldTypeRequiredDescription
merchantIdStringMMerchant's ID
transactionIdStringMGLODIPAY transaction ID (ULID)
transactionNumberStringMGLODIPAY human-readable transaction number
refStringMMerchant's orderRef
currencyStringMISO 4217 currency code
amountFloatMInvoice amount
paidAmountFloatOAmount actually charged to the buyer (including buyer fees)
settlementAmountFloatOAmount to be settled to the merchant
estimationSettlementAtISO 8601 datetimeOEstimated settlement datetime
feesJSONOFee breakdown. See fees object below
statusStringMTransaction status. See Status Values
statusCodeNumberMNumeric status code. See Status Codes
metadataJSONOKey-value pairs from the original checkout session
transactionDocumentsJSONOSupporting documents from the original session
paymentMethodDetailsJSONOPayment method used. See paymentMethodDetails object below
messageStringOHuman-readable status message
descriptorStringOTransaction descriptor
transactionCreatedAtISO 8601 datetimeMTransaction creation time in GLODIPAY system
originalTransactionCreatedAtISO 8601 datetimeMTransaction creation time at the PSP
signatureStringMRSA-MD5 signature — verify with RSA Public Key. See Signature

fees Object

FieldTypeDescription
buyerFloatBuyer-facing fee amount
sellerFloatMerchant fee amount
rollingFloatRolling reserve amount
operateFloatTotal operating fees (processor + GLODIPAY + partner)
estimationRollingReleaseAtISO 8601 datetimeEstimated rolling reserve release datetime

paymentMethodDetails Object

FieldTypeDescription
displayNameStringPayment method label shown to the buyer
groupStringPayment method group type
familyStringPayment method family type
typeStringPayment method type (e.g. card, wallet)
{type}JSONOptional. Payment method-specific details. The key equals the type value. Currently only present for card payments when card details are available. See card object below

card Object (paymentMethodDetails.card)

FieldDescription
nameCardholder name
firstSixDigitsFirst 6 digits of the card number (BIN)
lastFourDigitsLast 4 digits of the card number
expiryMonthExpiry month (MM)
expiryYearExpiry year (YY)
typeCard brand (visa, mastercard, amex, jcb, etc.)
issuerIssuing bank name (provider-dependent)
issuerCountryCodeISO 3166-1 alpha-2 country code of the issuing bank (provider-dependent)
fundingCard funding type: credit, debit, or prepaid (provider-dependent)
authorizationCodeAuthorization code from the issuer (provider-dependent)
clientIPCustomer IP address at the time of payment (provider-dependent)
checksAVS/CVC verification results object (provider-dependent)
threeDSecure3D Secure authentication details object (provider-dependent)

checks object fields (when present):

FieldDescription
addressLine1CheckAVS address line 1 check result
addressPostalCodeCheckAVS postal code check result
cvcCheckCVC/CVV check result

threeDSecure object fields (when present):

FieldDescription
authFlowAuthentication flow used
eciElectronic Commerce Indicator
result3DS authentication result
version3DS protocol version

Example IPN Payload (Successful Card Payment)

{
"merchantId": "1100000123",
"transactionId": "01jza90dy6w82dfrrqvadn5vs4",
"transactionNumber": "2604-1713100800",
"ref": "ORDER-001",
"currency": "USD",
"amount": 100.00,
"paidAmount": 105.00,
"settlementAmount": 95.00,
"estimationSettlementAt": "2026-04-16T00:00:00+00:00",
"fees": {
"buyer": 5.00,
"seller": 5.00,
"rolling": 2.00,
"operate": 3.00,
"estimationRollingReleaseAt": "2026-05-14T00:00:00+00:00"
},
"status": "successful",
"statusCode": 6,
"paymentMethodDetails": {
"displayName": "Credit / Debit Card",
"group": "card",
"family": "card",
"type": "card",
"card": {
"name": "John Doe",
"firstSixDigits": "411111",
"lastFourDigits": "1111",
"expiryMonth": "01",
"expiryYear": "30",
"type": "visa",
"issuer": "Example Bank",
"issuerCountryCode": "US",
"funding": "credit",
"authorizationCode": "ABC123"
}
},
"metadata": { "orderId": "12345" },
"message": null,
"descriptor": "GLODIPAY*ORDER-001",
"transactionCreatedAt": "2026-04-14T10:00:00+00:00",
"originalTransactionCreatedAt": "2026-04-14T10:00:01+00:00",
"signature": "base64-encoded-rsa-signature"
}

Acknowledgement Response

Your server must respond with the following JSON within 30 seconds. Any other response or a timeout is treated as a delivery failure and GLODIPAY will retry.

{
"returnCode": "100",
"description": "Received"
}
FieldTypeRequiredDescription
returnCodeStringMMust be "100" to acknowledge receipt
descriptionString(max:1500)OOptional description

Refund IPN

Refund notifications use the same notificationUrl as the original transaction. The payload format differs — see Refund API for the refund-specific IPN payload fields.

Bookmarks

No bookmarks yet.
Hover over a heading and click to save a section.