Payment Api

Overview

The Payment API enables the submission and processing of bill payments using wallet-eligible accounts. It provides a secure GraphQL-based interface that abstracts backend payment processing while enforcing business and validation rules.

Request Processing Flow

The payment submission flow follows these steps:

  1. Request Intake
    • Consumers submit a payment request via the GraphQL API using a strongly typed mutation.
  2. Translation & Orchestration
    • The GraphQL layer translates the mutation request into the appropriate backend format.
    • The request is internally routed to the FARO Bill Pay endpoint.
  3. Validation & Enforcement
    • Business validation rules are enforced prior to submission, including (but not limited to):

      o Account eligibility checks

      o Balance sufficiency validation

      o Required field and data integrity validation

      o Duplicate or replay protection

  4. Payment Execution
    • FARO processes the payment and returns the transaction result.
    • The API normalizes the response and returns a structured payment object to the consumer.

GraphQL Mutation

Submit Bill Payment

  """Root mutation type — submit a new bill payment to FARO."""
  type Mutation {
    submitBillPay(input: BillPayInput!): BillPayment
  }

Bill Payment Response

Description

The BillPayment type represents the payment transaction result returned by the FARO payment backend. It includes identifiers, claim information, patient and subscriber details, provider information, and payment metadata.

Schema Definition

"""
Bill payment result returned by the FARO payment backend.
"""
type BillPayment @key(fields: "id") {
  id: String
  claimNumber: String
  claimType: String
  client: String
  description: String
  syntheticId: String

  amount: Float
  availableBalance: Float
  totalClaimAmount: Float
  patientRespAmount: Float

  dateOfServiceFrom: String
  dateOfServiceTo: String
  transactionDate: String
  timestamp: String
  version: String

  segmentroutingID: String
  subscriberID: String
  subscriberFirstName: String
  subscriberLastName: String

  patientFirstName: String
  patientLastName: String
  patientAccountNumber: String
  patientDOB: String
  patientID: String

  payeeName: String
  payeeAddress1: String
  payeeAddress2: String
  payeeCity: String
  payeeState: String
  payeeZip: String
  payeeCountry: String
  payeePatientAccountNumber: String
  payeeTIN: String

  """
  Payer 835 EDI identifier.
  """
  payer835Id: String

  rendProviderFirstName: String
  rendProviderLastName: String
  rendProviderId: String
}