Skip to content
payrocdevelopers

Verify DCC eligibility and retrieve a currency conversion quote for a card.

Verify DCC eligibility and retrieve a currency conversion quote for a card.

Actors

Merchant / integratorclient

Calls the Payroc API to check whether the customer's card is eligible for DCC and obtain a rate quote.

Payroc gatewayapi

The Payroc API surface these steps call.

Sequence

Merchant / integrator
Payroc gateway

Follow the numbered steps in order. Each step is described under Steps.

Steps

Follow the workflow

Simulate API steps with synthetic inputs. Confirm manual steps yourself before continuing.

Interactive workflow tests are unavailable in this profile. Use the linked reference and source files to send API requests with your own client.

  1. 1

    Get FX rates

    API request

    Submit the DCC eligibility inquiry. Success is a 200 regardless of the eligibility outcome; branch on `inquiryResult.dccOffered`. When true, the response includes a `dccOffer` with the quote fields needed for a subsequent DCC-enabled sale or unreferenced refund.

    Merchant / integrator → Payroc gateway

    POST/fx-rates
Arazzo workflow source
arazzo: 1.0.0
info:
  title: Check dynamic currency conversion eligibility
  summary: Verify whether a card is eligible for DCC and quote a conversion rate.
  description: |
    Checks whether a customer's card is eligible for Dynamic Currency Conversion (DCC) and, if so, returns a quoted conversion rate for the transaction amount. DCC lets a customer pay in their card's currency instead of the merchant's currency (e.g. an American cardholder paying in USD at an Irish merchant).

    This is a single-operation, read-only inquiry (POST /fx-rates, operationId getFxRates) and does not create or move money. Agent-gotchas:
    - `baseAmount` / `baseCurrency` are the merchant-currency amount to convert;
      the response's `baseAmount` is restated in the local currency.
    - Eligibility is signaled by `inquiryResult.dccOffered` (boolean), NOT by the
      HTTP status — a 200 is returned whether or not DCC is offered. When
      `dccOffered` is false, `inquiryResult.causeOfRejection` explains why and no
      `dccOffer` object is present.
    - When eligible, the `dccOffer` object carries the fields you must forward to a
      subsequent sale or unreferenced refund to honor the quote: `offerReference`,
      `fxAmount`, `fxCurrency`, `fxRate`, and `markup`.
    - `paymentMethod` is polymorphic (`card`, `secureToken`, or `digitalWallet`).
      The primary path below uses keyed `card` details; substitute a `secureToken`
      or `digitalWallet` payload of the same shape for the other channels.
  version: 1.0.0
sourceDescriptions:
  - name: payroc-api
    url: /openapi.yaml
    type: openapi
workflows:
  - workflowId: check-dcc-eligibility
    x-actors:
      - id: merchant
        name: Merchant / integrator
        type: client
        description: Calls the Payroc API to check whether the customer's card is
          eligible for DCC and obtain a rate quote.
      - id: payroc-gateway
        name: Payroc gateway
        type: api
        description: The Payroc API surface these steps call.
    summary: Verify DCC eligibility and retrieve a currency conversion quote for a card.
    description: |
      Single step: submit the terminal, transaction amount/currency, and payment method to POST /fx-rates. Inspect `inquiryResult.dccOffered` to decide the branch — if true, capture the `dccOffer` fields for a later DCC sale/refund; if false, read `inquiryResult.causeOfRejection`.
    inputs:
      type: object
      required:
        - processingTerminalId
        - channel
        - baseAmount
        - baseCurrency
        - cardNumber
        - expiryDate
      properties:
        processingTerminalId:
          type: string
          description: Unique identifier that we assigned to the terminal.
          example: "1234001"
        channel:
          type: string
          description: Channel used to receive the payment details (pos, web, or moto).
          enum:
            - pos
            - web
            - moto
          example: web
        operator:
          type: string
          description: Operator who ran the transaction.
          example: Jane
        baseAmount:
          type: integer
          description: |
            Transaction amount in the merchant's currency, in the currency's lowest denomination (e.g. cents).
          example: 4999
        baseCurrency:
          type: string
          description: Merchant currency of the transaction (ISO 4217).
          example: USD
        cardholderName:
          type: string
          description: Name of the cardholder.
          example: Sarah Hazel Hopper
        cardNumber:
          type: string
          description: Card number (PAN) to check for DCC eligibility.
          example: "4539858876047062"
        expiryDate:
          type: string
          description: Card expiry date in MMYY format.
          example: "1230"
    steps:
      - stepId: getFxRates
        x-actor: merchant
        x-actor-to: payroc-gateway
        x-label: DCC rate inquiry
        description: |
          Submit the DCC eligibility inquiry. Success is a 200 regardless of the eligibility outcome; branch on `inquiryResult.dccOffered`. When true, the response includes a `dccOffer` with the quote fields needed for a subsequent DCC-enabled sale or unreferenced refund.
        operationId: getFxRates
        requestBody:
          contentType: application/json
          payload:
            channel: $inputs.channel
            operator: $inputs.operator
            processingTerminalId: $inputs.processingTerminalId
            baseAmount: $inputs.baseAmount
            baseCurrency: $inputs.baseCurrency
            paymentMethod:
              type: card
              cardDetails:
                entryMethod: keyed
                cardholderName: $inputs.cardholderName
                keyedData:
                  dataFormat: plainText
                  cardNumber: $inputs.cardNumber
                  expiryDate: $inputs.expiryDate
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          dccOffered: $response.body#/inquiryResult/dccOffered
          causeOfRejection: $response.body#/inquiryResult/causeOfRejection
          offerReference: $response.body#/dccOffer/offerReference
          fxAmount: $response.body#/dccOffer/fxAmount
          fxCurrency: $response.body#/dccOffer/fxCurrency
          fxRate: $response.body#/dccOffer/fxRate
          markup: $response.body#/dccOffer/markup
    outputs:
      dccOffered: $steps.getFxRates.outputs.dccOffered
      offerReference: $steps.getFxRates.outputs.offerReference
      fxAmount: $steps.getFxRates.outputs.fxAmount
      fxCurrency: $steps.getFxRates.outputs.fxCurrency
      fxRate: $steps.getFxRates.outputs.fxRate
Download Arazzo

Search documentation

API reference169
Guides118
Knowledge38
legal1
Solutions32
Workflows74
↑↓highlight↵openView all search results

Menu

Theme

Sign out

Your saved plans remain in your organization. This browser’s private draft and account view will be cleared.

Talk to an engineer