Ravelin Transactions API

Payment attempts, captures, refunds, and authorizations.

OpenAPI Specification

ravelin-transactions-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Ravelin Server 3D Secure Transactions API
  version: '1'
  description: 'Ravelin''s PSP-agnostic, PCI 3DS-validated 3D Secure Server API. Implements EMV 3DS 2.x

    Authentication Request (AReq), Challenge, Result, and Version Lookup operations against

    3ds.live.pci.ravelin.com. Supports both encrypted payment method payloads and unencrypted

    PAN, dynamic exemption routing, and card-scheme-specific authentication values (CAVV, AAV,

    AEVV). Integrates with the Ravelin iOS, Android, and browser SDKs for App-based (APP),

    Browser-based (BRW), and 3RI (3DS Requestor Initiated) channels.


    Endpoint documentation: https://developer.ravelin.com/merchant/api/endpoints/3d-secure/.

    '
  contact:
    name: Ravelin Support
    url: https://support.ravelin.com/
  termsOfService: https://www.ravelin.com/legal/terms-of-service
  license:
    name: Proprietary
servers:
- url: https://3ds.live.pci.ravelin.com
  description: PCI 3DS production endpoint
security:
- secretApiKey: []
tags:
- name: Transactions
  description: Payment attempts, captures, refunds, and authorizations.
paths:
  /v2/transaction:
    post:
      tags:
      - Transactions
      summary: Submit a Transaction Event
      operationId: createTransaction
      description: Submit a transaction attempt (auth, capture, auth_capture, refund, void, preauth) for scoring and to keep Ravelin's transaction history in sync with the merchant's PSP.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionRequest'
      responses:
        '200':
          $ref: '#/components/responses/Decision'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /v2/payment-method:
    post:
      tags:
      - Transactions
      summary: Submit a Payment Method
      operationId: createPaymentMethod
      description: Submit a payment method associated with a customer for tokenization, link analysis, and risk scoring.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentMethodRequest'
      responses:
        '200':
          $ref: '#/components/responses/Decision'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  responses:
    RateLimited:
      description: Per-merchant rate limit exceeded. Ravelin retains and processes the data after the limit clears, but the response is a 429.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Decision:
      description: Risk decision returned successfully.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DecisionResponse'
    Unauthorized:
      description: Invalid or missing API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    TransactionRequest:
      type: object
      required:
      - timestamp
      - orderId
      - customerId
      properties:
        timestamp:
          type: integer
          format: int64
        orderId:
          type: string
          maxLength: 300
        customerId:
          type: string
          maxLength: 300
        eventType:
          type: string
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethod'
        transaction:
          type: object
          properties:
            transactionId:
              type: string
            time:
              type: integer
              format: int64
            amount:
              type: integer
            currency:
              type: string
            type:
              type: string
              enum:
              - auth
              - capture
              - auth_capture
              - refund
              - void
              - preauth
            success:
              type: boolean
            gateway:
              type: string
            gatewayReference:
              type: string
            declineCode:
              type: string
            authCode:
              type: string
            3ds:
              type: object
              properties:
                attempted:
                  type: boolean
                challenged:
                  type: boolean
                success:
                  type: boolean
                version:
                  type: string
                eci:
                  type: string
                liabilityShifted:
                  type: boolean
        device:
          $ref: '#/components/schemas/Device'
    PaymentMethodRequest:
      type: object
      required:
      - timestamp
      - customerId
      - paymentMethod
      properties:
        timestamp:
          type: integer
          format: int64
        customerId:
          type: string
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethod'
    Error:
      type: object
      properties:
        status:
          type: integer
        timestamp:
          type: integer
          format: int64
        message:
          type: string
    Device:
      type: object
      properties:
        deviceId:
          type: string
        ipAddress:
          type: string
        userAgent:
          type: string
        language:
          type: string
        location:
          type: object
    PaymentMethod:
      type: object
      properties:
        methodType:
          type: string
          description: card | wallet | bank | paypal | cash | other
        instrumentId:
          type: string
        bin:
          type: string
        last4:
          type: string
    DecisionResponse:
      type: object
      properties:
        status:
          type: integer
          description: HTTP status code echoed in the body.
        timestamp:
          type: integer
          format: int64
          description: Unix timestamp in milliseconds for when the decision was finalized.
        message:
          type: string
          description: Error description, if any.
        data:
          type: object
          properties:
            action:
              type: string
              enum:
              - ALLOW
              - REVIEW
              - PREVENT
              - PERMIT
              - WARN
              - BLOCK
              description: Recommended action. PERMIT / WARN / BLOCK are legacy aliases of ALLOW / REVIEW / PREVENT.
            source:
              type: string
              enum:
              - RAVELIN
              - RULE
              - LOOKUP
              - RATE_LIMIT
              description: Source of the recommendation.
            score:
              type: integer
              minimum: 0
              maximum: 100
              description: Fraud confidence score between 0 and 100.
            scoreId:
              type: string
              description: Unique identifier for this score, used to correlate the decision with downstream events.
            customerId:
              type: string
              description: Customer identifier echoed back from the request.
            rules:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  state:
                    type: string
                    enum:
                    - active
                    - passive
                  description:
                    type: string
            warnings:
              type: array
              description: Data-quality warnings flagged on the input payload.
              items:
                type: object
  securitySchemes:
    secretApiKey:
      type: apiKey
      in: header
      name: Authorization
      description: Secret API key prefixed with `token`.