openapi: 3.0.3 info: title: Mastercard Ethoca Alerts for Merchants and Merchant Partners description: >- Ethoca Alerts" is a collaborative tool that brings merchants (and merchant partners), acquirers, and issuers together to share fraud and dispute data, which enables a faster dispute resolution process that reduces the need for chargebacks altogether. version: 1.0.0 contact: name: API Support url: https://developer.mastercard.com/support email: apisupport@mastercard.com servers: - url: https://api.ethocaweb.com/ethoca/alerts/merchants description: Production server (uses live data) - url: https://sandbox.api.ethocaweb.com/ethoca/alerts/merchants description: Sandbox server (testing environment) tags: - name: Alert Outcomes description: >- Actions which Partners/Merchants can take on the provided alert and submit the feedback after processing them. paths: /outcomes: post: tags: - Alert Outcomes summary: >- ( Merchant / Partner ) Submit an outcome to an alert. Multiple alert outcomes (up to 25 ) can be provided. (MVP or later) description: |- Allows submission of outcomes to one or more alerts.

Important Notes: 1. When providing your outcome and refund flag, ensure that you **respond to the alert within 24 hours** with a final state outcome to optimize your chance of stopping the chargeback. The first final state outcome you provide for an Alert is the outcome that will be sent to the issuer.

2. In_progress and shipper_contacted are considered in-transit outcomes. In best practice, do not leave an alert with a transit outcome for longer than 24 hours. operationId: submitOutcome requestBody: $ref: '#/components/requestBodies/Outcomes' responses: '200': $ref: '#/components/responses/OutcomeAcknowledgement' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' components: schemas: Errors: required: - Error type: object properties: Error: type: array description: List of error objects items: $ref: '#/components/schemas/Error' description: Errors object Error: type: object properties: Source: maxLength: 100 minLength: 0 type: string description: Source of the error example: Service ReasonCode: maxLength: 100 minLength: 0 type: string description: Unique code identifying the error case example: RESULT_CODE Description: maxLength: 1000 minLength: 0 type: string description: Short description of the error example: Short description of the error Recoverable: type: boolean description: >- Indicates whether this error will always be returned for this request or retrying could change the outcome example: false default: false Details: maxLength: 1000 minLength: 0 type: string description: Optional detailed description of the issue example: Detailed description of the error description: Error object ErrorResponse: required: - Errors type: object properties: Errors: $ref: '#/components/schemas/Errors' description: Error Response object Outcomes: type: object properties: outcomes: type: array items: $ref: '#/components/schemas/AlertsOutcome' description: Outcome indicating the action taken on the alert AlertsOutcome: type: object required: - alertId - outcome - refundStatus - refund - amountStopped properties: alertId: $ref: '#/components/schemas/AlertId' outcome: $ref: '#/components/schemas/Outcome' refundStatus: $ref: '#/components/schemas/RefundStatus' refund: $ref: '#/components/schemas/Refund' amountStopped: $ref: '#/components/schemas/AmountStopped' comments: $ref: '#/components/schemas/Comments' actionTimestamp: $ref: '#/components/schemas/ActionTimestamp' Outcome: type: string maxLength: 30 minLength: 5 description: |- The outcome of the alert.This MUST always be provided. Confirmed Fraud Outcomes: - STOPPED: the order was stopped - PARTIALLY_STOPPED: part of the order was stopped - PREVIOUSLY_CANCELLED: the transaction was already canceled - MISSED: too late, the order has shipped / service consumed - NOT_FOUND: the order could not be found - ACCOUNT_SUSPENDED: the account has been suspended - OTHER: anything else not covered above Customer Dispute Outcomes - RESOLVED: case resolved with the customer - RESOLVED_PREVIOUSLY_REFUNDED: refund already processed - UNRESOLVED_DISPUTE: Merchant disagrees with reason for dispute - NOT_FOUND: Alert could not be found in the system - OTHER: Any other outcome as described in the comments Allowed values for outcome: - STOPPED - PARTIALLY_STOPPED - PREVIOUSLY_CANCELLED - MISSED - NOT_FOUND - ACCOUNT_SUSPENDED - TOO_LATE - OTHER - RESOLVED - RESOLVED_PREVIOUSLY_REFUNDED - UNRESOLVED_DISPUTE Note: Confirmed Fraud Outcome missed corresponds to the Ethoca Alerts Web Portal outcome Too Late Customer Dispute Outcome previously_refunded corresponds to the Ethoca Alerts Web Portal outcome Resolved-Previously Refunded example: RESOLVED AlertId: type: string minLength: 25 maxLength: 25 description: Ethoca generated unique identifier for the alert. example: A4IM9K2MIYL9F2BPF9TWUIXTU Status: type: string maxLength: 7 minLength: 7 description: |- The code indicates the outcome of the request. - SUCCESS = The Alert was consumed successfully. - FAILURE = The Alert was failed to consume. example: SUCCESS Comments: type: string description: Additional comments to be provided with the outcome maxLength: 1024 minLength: 1 example: Refunded via transactionId XXX on YYY ActionTimestamp: maxLength: 25 minLength: 10 type: string description: >- Date, time, and time zone of the transaction (e.g., 2020-06-18T17:11:05-05:00), OR
Date and time of the transaction in Coordinated Universal Time (UTC) (e.g., 2020-06-18T17:11:05+00:00), OR
If time or time zone is unknown, then the date of the transaction (e.g., 2020-06-18). ISO 8601 format example: '2021-06-18T17:11:05.000Z' RefundStatus: maxLength: 12 minLength: 8 type: string description: >- Whether the transaction was REFUNDED, NOT_REFUNDED, or NOT_SETTLED. Using NOT_SETTLED as a refund flag means that the transaction did not go to settlement. The allowed values for refund are: - REFUNDED - NOT_REFUNDED - NOT_SETTLED example: REFUNDED Refund: type: object required: - amount - timestamp properties: amount: description: >- The refund amount explains the amount that has been refunded by the merchant for the particular alert. required: - currencyCode - value type: object properties: value: maximum: 999999 minimum: 1 type: number format: double description: >- Total amount value associated with the transaction.
Decimal point period expected to denote the separation of the fractional suffix from the rest of the amount, if applicable for the currency. Decimal point period must not be the first character. Examples:
- USD exponent is 2, so the $250 USD value should be represented as 250.00, 34¢ USD value should be represented as 0.34
- JPY exponent is 0, so ¥250 JPY value should be represented as 250 example: 361.56 currencyCode: maxLength: 3 minLength: 3 type: string description: >- Alphabetic currency code associated with the value in ISO 4217 format example: USD type: type: string maxLength: 9 minLength: 6 description: >- It shows how the refund has been completed. The values can be either refund or voucher. Allowed values for refund type - REFUND - VOUCHER - POINTS - GIFT_CARD example: REFUND timestamp: maxLength: 25 minLength: 10 type: string description: >- Date, time, and time zone of the transaction (e.g., 2020-06-18T17:11:05-05:00), OR
Date and time of the transaction in Coordinated Universal Time (UTC) (e.g., 2020-06-18T17:11:05+00:00), OR
If time or time zone is unknown, then the date of the transaction (e.g., 2020-06-18). ISO 8601 format example: '2021-06-18T17:11:05.000Z' transactionId: type: string maxLength: 64 minLength: 1 description: |- The id will represent the transaction for the amount refunded. This will be an alphanumeric value. example: 23aer543245678984ew39awse0 acquirerReferenceNumber: type: string maxLength: 24 minLength: 1 description: >- The acquirer's reference number is related to the refund. It is a unique 23/24 digit number that tags a card transaction when it goes from the merchant's bank (the acquiring bank) through the card scheme to the cardholder's bank (the issuer). This is represented by Mastercard DE 31 (clearing.) example: 9.876543245678987e+22 AmountStopped: description: Total amount value and currency of fraud stopped required: - currencyCode - value type: object properties: value: maximum: 999999 minimum: 1 type: number format: double description: >- Total amount value associated with the transaction.
Decimal point period expected to denote the separation of the fractional suffix from the rest of the amount, if applicable for the currency. Decimal point period must not be the first character. Examples:
- USD exponent is 2, so the $250 USD value should be represented as 250.00, 34¢ USD value should be represented as 0.34
- JPY exponent is 0, so ¥250 JPY value should be represented as 250 example: 361.56 currencyCode: maxLength: 3 minLength: 3 type: string description: >- Alphabetic currency code associated with the value in ISO 4217 format example: USD OutcomeAcknowledgement: type: object properties: outcomeResponses: type: array items: $ref: '#/components/schemas/StatusUpdate' description: >- Array indicating the alerts that were successfully updated with outcomes StatusUpdate: type: object required: - alertId - status properties: alertId: $ref: '#/components/schemas/AlertId' status: $ref: '#/components/schemas/Status' errors: $ref: '#/components/schemas/Errors' example: alertId: A4IM9K2MIYL9F2BPF9TWUIXTU status: SUCCESS requestBodies: Outcomes: description: Success required: true content: application/json: schema: $ref: '#/components/schemas/Outcomes' responses: OutcomeAcknowledgement: description: Success content: application/json: schema: $ref: '#/components/schemas/OutcomeAcknowledgement' Forbidden: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' Unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' BadRequest: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse'