---
title: "Report Event"
method: POST
path: "/events"
tags: ["events"]
---

# Report Event

`POST /events`

This endpoint is for reporting Chargeback Protection Events throughout your customer's application lifecycle.

The goal of this endpoint is for reporting events to the chargeback protection system to that it
can evaluate timing and take note of significant events which will occur in a user's lifecycle. The end goal of
collecting this information is to increase approval rates (lower false positives) and reduce fraud and chargebacks
(lower false negatives). When calling these API's it is highly encouraged to pass as much information as possible.
The more information provided, the better the outcomes will be.

Implementing this API will help to increase your revenue via higher approval rates, while reducing your account's risk of becoming flagged
by one of the card brands for excessive chargebacks.

## Headers

- `Authorization` string, required

## Request body

- union
  - SignUpEvent — Sign up event - Call this event when your customer signs up for your service.
    - `eventType` 'SignUp', required
    - `customerId` string, required — The id of the customer
    - `country` string — The country where the customer is located (if available)
    - `username` string, required — The username or userID of the customer
    - `email` string — The email of the customer
    - `firstName` string — The first name of the customer (if available)
    - `lastName` string — The last name of the customer (if available)
  - BuyerChallengeEvent — The Buyer Challenge Event type is for reporting any type of verification on the buyer. ex: Email verification link, SMS 2FA text, buyer is KYC'd
    - `eventType` 'BuyerChallenge', required
    - `customerId` string, required — The id of the customer
    - `country` string — The country where the customer is located (if available)
    - `challengeInfo` union, required
      - EmailVerificationChallenge — Verification challenge that is sent by email
        - `timeLimit` number, double — The time limit in seconds of the challenge, after which the challenge is considered as failed. Only allowed when status is set to triggered
        - `rawChallengeData` RecordStringStringOrNumber — Construct a type with a set of properties K of type T
        - `status` 'triggered' | 'successfullyFulfilled' | 'failed' | 'timedOut', required — Indicates the challenge status. Possible values are: triggered - the user has been presented with the challenge. successfullyFulfilled - the user has successfully fulfilled the challenge. failed - the user did not successfully fulfill the challenge. timedOut - the user did not answer the challenge at all within the challenge timeout period (if one is defined).
        - `email` string, required
        - `type` 'emailVerification', required
      - OtpVerificationChallenge — The relevant challenge info
        - `timeLimit` number, double — The time limit in seconds of the challenge, after which the challenge is considered as failed. Only allowed when status is set to triggered
        - `rawChallengeData` RecordStringStringOrNumber — Construct a type with a set of properties K of type T
        - `status` 'triggered' | 'successfullyFulfilled' | 'failed' | 'timedOut', required — Indicates the challenge status. Possible values are: triggered - the user has been presented with the challenge. successfullyFulfilled - the user has successfully fulfilled the challenge. failed - the user did not successfully fulfill the challenge. timedOut - the user did not answer the challenge at all within the challenge timeout period (if one is defined).
        - `otpProvider` 'Google Authenticator' | 'Octa' | 'Authy' | 'Protectimus Smart OTP' | 'Microsoft Authenticator' | 'FreeOTP Authenticator' | 'Sophos Authenticator' | 'Authenticator Plus' | 'LastPass Authenticator' | 'SoundLogin' | 'Yubikey' | 'Protectimus Slim NFC' | 'Other', required — The OTP Provider
        - `type` 'otpVerification', required
      - PhoneChallenge — Verification challenge that is performed by calling the user.
        - `timeLimit` number, double — The time limit in seconds of the challenge, after which the challenge is considered as failed. Only allowed when status is set to triggered
        - `rawChallengeData` RecordStringStringOrNumber — Construct a type with a set of properties K of type T
        - `status` 'triggered' | 'successfullyFulfilled' | 'failed' | 'timedOut', required — Indicates the challenge status. Possible values are: triggered - the user has been presented with the challenge. successfullyFulfilled - the user has successfully fulfilled the challenge. failed - the user did not successfully fulfill the challenge. timedOut - the user did not answer the challenge at all within the challenge timeout period (if one is defined).
        - `phoneInfo` PhoneChallengePhoneInfo, required
          - `carrier` string, required
          - `countryCode` string, required — The country code (leading + is optional)
          - `phone` string, required — The phone number of the user. Must match the regex: ^[0-9]+$
        - `type` 'phoneCall' | 'phoneVerification', required
      - ThirdPartyKycChallenge — KYC verification conducted by a third party
        - `timeLimit` number, double — The time limit in seconds of the challenge, after which the challenge is considered as failed. Only allowed when status is set to triggered
        - `rawChallengeData` RecordStringStringOrNumber — Construct a type with a set of properties K of type T
        - `status` 'triggered' | 'successfullyFulfilled' | 'failed' | 'timedOut', required — Indicates the challenge status. Possible values are: triggered - the user has been presented with the challenge. successfullyFulfilled - the user has successfully fulfilled the challenge. failed - the user did not successfully fulfill the challenge. timedOut - the user did not answer the challenge at all within the challenge timeout period (if one is defined).
        - `kycProvider` string, required — The name of the third party KYC provider through which the challenge is presented
        - `type` '3rdPartyKyc', required
      - InternalKycChallenge
        - `timeLimit` number, double — The time limit in seconds of the challenge, after which the challenge is considered as failed. Only allowed when status is set to triggered
        - `rawChallengeData` RecordStringStringOrNumber — Construct a type with a set of properties K of type T
        - `status` 'triggered' | 'successfullyFulfilled' | 'failed' | 'timedOut', required — Indicates the challenge status. Possible values are: triggered - the user has been presented with the challenge. successfullyFulfilled - the user has successfully fulfilled the challenge. failed - the user did not successfully fulfill the challenge. timedOut - the user did not answer the challenge at all within the challenge timeout period (if one is defined).
        - `type` 'internalKyc', required
      - SoftApprovalChallenge
        - `timeLimit` number, double — The time limit in seconds of the challenge, after which the challenge is considered as failed. Only allowed when status is set to triggered
        - `rawChallengeData` RecordStringStringOrNumber — Construct a type with a set of properties K of type T
        - `status` 'triggered' | 'successfullyFulfilled' | 'failed' | 'timedOut', required — Indicates the challenge status. Possible values are: triggered - the user has been presented with the challenge. successfullyFulfilled - the user has successfully fulfilled the challenge. failed - the user did not successfully fulfill the challenge. timedOut - the user did not answer the challenge at all within the challenge timeout period (if one is defined).
        - `type` 'softApproval', required
      - OtherChallenge
        - `timeLimit` number, double — The time limit in seconds of the challenge, after which the challenge is considered as failed. Only allowed when status is set to triggered
        - `rawChallengeData` RecordStringStringOrNumber — Construct a type with a set of properties K of type T
        - `status` 'triggered' | 'successfullyFulfilled' | 'failed' | 'timedOut', required — Indicates the challenge status. Possible values are: triggered - the user has been presented with the challenge. successfullyFulfilled - the user has successfully fulfilled the challenge. failed - the user did not successfully fulfill the challenge. timedOut - the user did not answer the challenge at all within the challenge timeout period (if one is defined).
        - `type` 'cardVerification' | 'questionnaire', required
  - SignInFailureEvent — Sign In Failure event - Call this event when a customer attempts to sign into your service, but sign in attempt is unsuccessful.
    - `eventType` 'SignInFailure', required
    - `customerId` string, required — The id of the customer
    - `country` string — The country where the customer is located (if available)
    - `email` string — The email of the customer
    - `failureReason` string — The reason that the failure occurred ex: "Incorrect Password", "Incorrect 2FA code"
  - SignInEvent — Sign in event - Call this event when your customer signs into your service.
    - `eventType` 'SignIn', required
    - `customerId` string, required — The id of the customer
    - `country` string — The country where the customer is located (if available)
    - `email` string — The email of the customer

## Response `200`

Successful response

---

[API](https://skmtc.net/coinflow/apis/api-reference.md) · [All operations](https://skmtc.net/coinflow/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/coinflow/api-reference/versions/3f6a046fbb34/schema)
