Skip to content
payrocdevelopers

Create a reusable pricing intent (fee template) for processing accounts.

Create a reusable pricing intent (fee template) for processing accounts.

Actors

Integratorclient

Creates the reusable fee template; the only API caller in this workflow.

Payroc gatewayapi

The Payroc API surface these steps call.

Sequence

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

    Create pricing intent

    API request

    Create the pricing intent. Sends base fees (required), processor card and ACH fees with the pricing program, and gateway fees. Returns 201 with the pricing intent in status pendingReview.

    Integrator → Payroc gateway

    POST/pricing-intents
Arazzo workflow source
arazzo: 1.0.0
info:
  title: Create a pricing intent
  summary: Create a reusable fee template that you assign to processing accounts.
  description: |
    Creates a pricing intent: a reusable template of fees (base, processor, and gateway) that you apply to processing accounts when boarding merchants. The same pricing intent can be assigned to many processing accounts, so this workflow is a leaf that composes into board-a-merchant.
    Agent gotchas: base fees are always required; processor fees carry the pricing program (planType, e.g. interchangePlus / interchangePlusPlus / tiered) and per-transaction fees; gateway fees are optional. The create request is idempotent and requires an Idempotency-Key header (UUID v4). On success the gateway returns the new pricing intent with status pendingReview and its identifier at the top-level `id` field (not `pricingIntentId`) - that value is what later boarding calls pass as pricingIntentId to assign the template to a processing account.
  version: 1.0.0
sourceDescriptions:
  - name: payroc-api
    url: /openapi.yaml
    type: openapi
workflows:
  - workflowId: create-pricing-intent
    summary: Create a reusable pricing intent (fee template) for processing accounts.
    description: |
      Single step: POST the fee template to /pricing-intents. The example models the interchangePlus card plan with ACH and gateway fees; swap the processor.card.planType and fee shape for interchangePlusPlus or a tiered plan as needed - the branch is the fee structure inside the same request, not a different operation. Capture the returned id to assign this pricing intent to a processing account (create-merchant-platform / add-processing-account).
    x-actors:
      - id: integrator
        name: Integrator
        type: client
        description: Creates the reusable fee template; the only API caller in this
          workflow.
      - id: payroc-gateway
        name: Payroc gateway
        type: api
        description: The Payroc API surface these steps call.
    inputs:
      type: object
      required:
        - idempotencyKey
        - country
        - version
      properties:
        idempotencyKey:
          type: string
          description: Unique UUID v4 you generate per request; makes the create idempotent.
          example: f32c9ad6-c97f-4998-9356-f3b6718b1b68
        key:
          type: string
          description: Your own reference key for the pricing intent.
          example: Your-Unique-Identifier
        country:
          type: string
          description: Country the pricing intent applies to (ISO 3166-1 alpha-2).
          example: US
        version:
          type: string
          description: Merchant Processing Agreement (MPA) version the fees follow.
          example: "5.2"
    steps:
      - stepId: createPricingIntent
        x-actor: integrator
        x-actor-to: payroc-gateway
        x-label: create pricing intent
        description: |
          Create the pricing intent. Sends base fees (required), processor card and ACH fees with the pricing program, and gateway fees. Returns 201 with the pricing intent in status pendingReview.
        operationId: createPricingIntent
        parameters:
          - name: Idempotency-Key
            in: header
            value: $inputs.idempotencyKey
        requestBody:
          contentType: application/json
          payload:
            key: $inputs.key
            metadata:
              yourCustomField: abc123
            country: $inputs.country
            version: $inputs.version
            base:
              addressVerification: 5
              annualFee:
                billInMonth: june
                amount: 9900
              regulatoryAssistanceProgram: 15
              pciNonCompliance: 4995
              platinumSecurity:
                billingFrequency: monthly
              maintenance: 500
              minimum: 100
              voiceAuthorization: 95
              chargeback: 2500
              retrieval: 1500
              batch: 1000
              earlyTermination: 57500
            processor:
              card:
                planType: interchangePlus
                fees:
                  mastercardVisaDiscover:
                    volume: 0.12
                    transaction: 0
                  amex:
                    type: optBlue
                    volume: 0.12
                    transaction: 0
              ach:
                fees:
                  transaction: 50
                  batch: 5
                  returns: 400
                  unauthorizedReturn: 500
                  statement: 250
                  monthlyMinimum: 500
                  accountVerification: 10
                  discountRateUnder10000: 0.5
                  discountRateAbove10000: 1
            gateway:
              fees:
                monthly: 2000
                setup: 5000
                perTransaction: 2000
                perDeviceMonthly: 10
            services:
              - name: hardwareAdvantagePlan
                enabled: true
        successCriteria:
          - condition: $statusCode == 201
          - condition: $response.body#/status == 'pendingReview'
        outputs:
          pricingIntentId: $response.body#/id
          status: $response.body#/status
    outputs:
      pricingIntentId: $steps.createPricingIntent.outputs.pricingIntentId
      status: $steps.createPricingIntent.outputs.status
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