Skip to main content

Step 3. Get Notification to reflect transactions in your CRM

As soon as Customer initiates a deposit, Cashier will send a Notification Webhook to Merchant system.

Optionally, Merchant is able to receive a real-time notifications regarding transactions status changes via Notification API. For that purposes Merchant has to implement Notification API on their end.

Cashier uses Notification endpoint to notify Merchants about a result of payment processing.

When the Notification is sent to the Merchant’s URL, Cashier expects the Merchant’s server to respond with Status code 200 – OK. After that, the Notification is considered as successfully sent.

URL: Merchant API Notification URL

Merchant will provide it as soon as they prepare the endpoint described below.

HTTP Method: POST

Headers:

  • Content-type: application/json
  • Authorization: Deposit Page JWT bearer token.

Request fields:

NameTypeSize/FormatMandatoryDescription
customerIdstringonly digitstrueCustomer unique identifier.
transactionIdstringFormat: UUIDtrueTransaction unique identifier.
currencystringISO currency code: wikitrueOriginal transaction currency of deposit requested by merchant.
amountintIn minor units: wikitrueOriginal transaction amount requested by Merchant.
amountUSDintIn minor units: wikitrueUSD equivalent of Original Amount.
statusstringenumtrueTransaction status. Possible values: PENDING, SUCCESS, FAILED, AUTHORIZED
errorsArray of JSON objectsExample: errors: [ { {'code' : "INVALID", 'message': "Invalid transaction"}, {'code' : "INVALID2", 'message': "Invalid transaction2"}falseFailed reasons. Only for failed transactions.
brandNamestringLatin chars with no spacestrueMerchant name provided as part of credentials.
transactionDatestringDATETIME Example: "2020-09-25 07:17:39.821057"falseTransaction date.
paymentTypestringenumfalsePossible values: CREDIT_CARD, APM
processorNamestringfalsePayment Provider Company name. PSP/APM name defined by Cashier.
processorPaymentMethodstringExample: IDeal, QiwifalsePayment Provider name. PSP/APM name defined by Merchant
cardTypestringExample: Visa, MasterCardfalseCard type such as "Visa" or "Mastercard".
cсTypestringExample: debit, creditfalseCard type, such as credit, debit, corporate.
cсLevelstringExample: GOLD, PLATINUMfalseCard type such as "GOLD" or "PLATINUM".
cardBinstringMax (6)falseFirst 6 digits of Credit Card.
cardLast4DigitsstringMax (4)falseLast 4 digits of Credit Card.
cardExpMonthstringMax (2)falseCredit Card Expiry Month.
cardExpYearstringMax (4)falseCredit Card Expiry Year.
bankNamestringfalseCustomer’s bank name.
accountIDstringfalseMerchant ID of merchant in Cashier System. Provided by Cashier Customer Support Team.
externalTransactionIdstringfalsePSP/APM's transaction ID number.
transactionTypestringenumfalsePossible values: deposit, refund.
ipstringIPv4 | IPv6falseCustomer's IP Address.
sourcestringenumfalseSource of the transaction. Possible values: "MOBILE_WEB", "MOBILE_APP", "WEB".
depositCurrencyToUSDMarketRatenumericWith 4 places in decimal partfalseMarket rate between deposit currency and USD.
depositCurrencyToEUROMarketRatenumericWith 4 places in decimal partfalseMarket rate between deposit currency and EUR.
convertedCurrencyToEUROMarketRatenumericWith 4 places in decimal partfalseMarket rate between converted currency and EUR.
convertedCurrencyToUSDMarketRatenumericWith 4 places in decimal partfalseMarket rate between converted currency and USD.
convertedCurrencystring(3)Currency ISO codefalseCurrency of deposit accepted by Payment provider.
convertedAmountintIn minor unitsfalseConverted amount of the deposit in converted currency (including configured markUp/Down) to be send to Provider.
marketRatenumericWith 4 places in decimal partfalseMarket rate between converted currency and original deposit currency.
markUpDownintfalseMerchant’s markUp/Down impacts exchange rate from Original to Converted currency.
exchangeRatenumericWith 4 places in decimal partfalseFinal exchange rate used to convert from original to converted currency Example: Market rate: 1.0 MarkUpDown: 105% ExchangeRate will be 1.05.
public_titlestringfalseDisplayed name of APM payment method.
user_agentstringfalseBrowser of the Customer.
bin_countrystring(2)ISO2 Country codefalseCustomer’s card bank country.
receivedAmountintIn minor unitsfalseAmount , actually paid by the customer in converted currency.
depositedAmountintIn minor unitsfalseFinal amount which will be deposited to the customer’s account in Original deposit currency.
variable1stringfalseCustom variable forwarded from Deposit page to Merchant system via Notifications Webhooks.
variable2stringfalseCustom variable forwarded from Deposit page to Merchant system via Notifications Webhooks.
variable3stringfalseCustom variable forwarded from Deposit page to Merchant system via Notifications Webhooks
relatedTransactionIdstringFormat: UUIDfalseParent original deposit transaction identifier. Applicable for refunds.
originTransactionIdstringfalseMerchant’s internal transaction ID. Applicable for refunds.

SUCCESS Deposit. Notification body example:

{
"transactionId": "f7c26f04-39e6-4ad7-b5a2-a5e28e4a4071",
"relatedTransactionId": null,
"amount": 10000,
"currency": "USD",
"amountUSD": 10000,
"status": "SUCCESS",
"errors": [],
"transactionDate": "2025-02-11T10:03:24.844036+00:00",
"transactionType": "deposit",
"externalTransactionId": "67ab206d07598",
"originTransactionId": null,
"brandName": "Phantom360",
"customerID": "4",
"accountID": "94e0c2d3-bfc6-4188-8bad-9351a6008a5c",
"ip": "2a09:bac0:1000:645::84:8e",
"fakeIp": null,
"source": "WEB",
"paymentType": "CREDIT_CARD",
"processorName": "PHANTOM_2D",
"processorPaymentMethod": "Credit Card",
"midType": null,
"cardType": "MASTERCARD",
"cardBin": "507860",
"cardLast4Digits": "3448",
"cardExpMonth": "12",
"cardExpYear": "2036",
"bankName": "BANCO BNP PARIBAS BRASIL S.A.",
"ccType": "credit",
"ccLevel": null,
"convertedAmount": 10000,
"convertedCurrency": "USD",
"marketRate": 1,
"markUpDown": 100,
"exchangeRate": 1,
"depositCurrencyToUSDMarketRate": 1,
"depositCurrencyToEUROMarketRate": 0.9692,
"convertedCurrencyToUSDMarketRate": 1,
"convertedCurrencyToEUROMarketRate": 0.9692,
"publicTitle": null,
"userAgent": "Chrome 133.0 - desktop",
"binCountry": "BR",
"variable1": null,
"variable2": null,
"variable3": null,
"receivedAmount": 10000,
"depositedAmount": 10000
}

SUCCESS Refund. Notification body example:

{
"transactionId": "9540d2c1-3f79-4e24-9d39-250f9385389f",
"relatedTransactionId": "65839fd4-946b-4097-b4f5-240d3c9c7acb",
"amount": 1288,
"currency": "USD",
"amountUSD": 1288,
"status": "SUCCESS",
"errors": [],
"transactionDate": "2025-04-10T08:36:03.291840+00:00",
"transactionType": "refund",
"externalTransactionId": "payment_cb01f9e7630c10af159d2622851ceb68",
"originTransactionId": null,
"brandName": "brand",
"customerID": "185309",
"accountID": "21e84c6c-5e5d-4686-b9d0-3426e99181b1",
"ip": "2a09:bac0:1000:645::84:59",
"fakeIp": null,
"source": "WEB",
"paymentType": "CREDIT_CARD",
"processorName": "Phantom",
"processorPaymentMethod": "Credit Card",
"midType": null,
"cardType": "MASTERCARD",
"cardBin": "424242",
"cardLast4Digits": "4242",
"cardExpMonth": "11",
"cardExpYear": "2032",
"bankName": "STOCK COMMERCIAL BANK",
"ccType": "debit",
"ccLevel": null,
"convertedAmount": 1000,
"convertedCurrency": "GBP",
"marketRate": 0.7766,
"markUpDown": 100,
"exchangeRate": 0.7766,
"sca": null,
"depositCurrencyToUSDMarketRate": 1,
"depositCurrencyToEUROMarketRate": 0.9069,
"convertedCurrencyToUSDMarketRate": 1.2877,
"convertedCurrencyToEUROMarketRate": 1.1678,
"publicTitle": null,
"userAgent": null,
"binCountry": null,
"variable1": null,
"variable2": null,
"variable3": null,
"receivedAmount": null,
"receivedCurrency": null,
"depositedAmount": null,
"depositedCurrency": null
}

Notification retry policy

If the Notification is not successfully sent (do not receive HTTP 200 back), the Cashier database records the status of the transaction notification as In Retry, and the Cashier attempts to resend the notification every 60, 120, 300, 3600, 14400, 43200 seconds. If the Notification fails to send the notification in each retry attempt, Cashier stops attempting to resend the notification.