Notify member
key(string) — Which event to tell the member about. See Notification keys.transactionUuid(string) — The transaction the event is about. Absent when the event concerns the dispute as a whole.amount(object) — Present when the event concerns an amount.effectiveTimestamp(string) — Unix seconds. When the event took effect.extraParams(object) — Additional values for your message, keyed by name.
Casap sends the key and its values, never message text. You choose the wording and the language.
An action that failed on our side produces no notification. You are only told about events that actually took effect.
An agent can also mark an individual action as one not to tell the member about. Casap stays silent on those and so does this list: no entry is sent at all, rather than an entry you are expected to ignore.
Two further fields carry what you need to write the message itself. finalDecision is present on the three FINAL_DECISION_* keys. informationRequest is present on NOTIFICATION_KEY_MORE_INFO_REQUESTED.
finalDecision
reasonKey(string) — Why the decision went that way, as a stable key, for exampleinsufficientEvidence. Falls back to the decision type when nothing more specific was recorded.otherReason(string) — What the agent typed when the reason is a free text one. Absent otherwise.customMessage(string) — A note the agent wrote for this decision alone.provisionalCreditIssued(boolean) — Whether the member was holding a provisional credit when the decision was made.provisionalCreditReversal(object) — What happens to that credit. Absent when nothing is being taken back.merchantCredit(object) — What the merchant refunded, when they refunded anything.
As everywhere else in this list, the reason travels as a key and you choose the wording. otherReason and customMessage are the exception: an agent typed them, so no key can express them, and they arrive as written.
Sub-reasons. Some reasons are recorded with a second, narrower key. A denial for a merchant issue, for example, also records which merchant issue. When one applies it arrives as subReasonKey alongside reasonKey, and it is absent for reasons that have no sub-reason. Treat it the same way: a key you write your own wording for.
reasonKey |
subReasonKey values |
|---|---|
merchantIssues |
cashExchange, merchandiseDelivered, storeCredit, receivedService, previouslyAuthorizedMerchant, cancellationDateLaterThanTransactionDate |
authorizedTransaction |
cardInPossession, tokenPinUsed, matchIpAddress, cardOrPinShared, cardInPossessionChipAndPin, tokenOnly, matchingMemberInfo, deliveredToMemberAddress, dispensaryMerchant |
afterDeadline |
after60Days, chargebackWindow |
visaRules |
notTravelOrTransportation, travelOrTransportation |
merchantBankDenial |
merchantDidNotViolate, merchantProvidedProof |
A denial can also carry values the message needs to be specific, when the reason calls for them. Each is absent when it does not apply.
merchantCreditDate(string) — Unix seconds. The merchant refunded, in full or in part.partialMerchantCredit(object) — The merchant refunded only part of the amount.cancellationDate(string) — Unix seconds. The member cancelled and the date matters to the reason.transactionPostedDate(string) — Unix seconds. The reason turns on when the charge posted.checkCorrectionDate(string) — Unix seconds. A check was corrected.correctAmount(object) — The charge was for the wrong amount and this is the right one.atm(object) — An ATM reason. Carriesnumberandlocation.dispensaryName(string) — The sub-reason isdispensaryMerchant.daysToRespond(number) — The member is being given a window to reply.
provisionalCreditReversal carries:
timing(string) —REVERSAL_TIMING_IMMEDIATEorREVERSAL_TIMING_SCHEDULED. Branch on this rather than on the date.reversalTimestamp(string) — Unix seconds. Zero when the date is not known yet.amount(object) — How much is taken back.
informationRequest
requestedItemKey(string) — The kind of item requested, for examplePoliceReport. Absent when the agent typed the request themselves.requestedItems(array of string) — What the agent typed, when they wrote the request themselves. Absent whenrequestedItemKeyis set.deadlineTimestamp(string) — Unix seconds. When the member's answer is due. Zero when the request carries no deadline.
This supersedes the requestedItemKey entry in extraParams, which is still sent so anything already reading it keeps working. Prefer informationRequest: it is the only place a free text request says what was actually asked for, and the only place the deadline appears on the notification.
Worked examples for each key are in Notification keys.