Remitian Payments API

Initiate, validate, and confirm tax payments across multiple jurisdictions through a single unified gateway.

OpenAPI Specification

remitian-payments-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Remitian Tax Payment Accounts Payments API
  description: The Remitian Tax Payment API enables tax software providers and accounting firms to embed tax payment initiation, validation, and confirmation directly within their existing platforms. Described as the "Stripe for tax," the API acts as a unified gateway to multiple tax authorities, replacing manual government portal logins with automated, jurisdiction-aware payment infrastructure. It provides real-time status updates via webhooks and bank-grade audit logs to track every payment from initiation to completion. Built by accountants for accountants, the API supports managing payments across multiple tax jurisdictions from a single integration point.
  version: 1.0.0
  contact:
    name: Remitian Support
    url: https://help.remitian.com
  termsOfService: https://remitian.com/terms
servers:
- url: https://api.remitian.com
  description: Production Server
security:
- bearerAuth: []
tags:
- name: Payments
  description: Initiate, validate, and confirm tax payments across multiple jurisdictions through a single unified gateway.
paths:
  /v1/payments:
    get:
      operationId: listPayments
      summary: List payments
      description: Retrieve a paginated list of tax payments. Supports filtering by jurisdiction, status, date range, and client account. Results are sorted by creation date in descending order.
      tags:
      - Payments
      parameters:
      - $ref: '#/components/parameters/JurisdictionFilter'
      - $ref: '#/components/parameters/StatusFilter'
      - $ref: '#/components/parameters/DateFromFilter'
      - $ref: '#/components/parameters/DateToFilter'
      - $ref: '#/components/parameters/PageLimit'
      - $ref: '#/components/parameters/PageOffset'
      responses:
        '200':
          description: A paginated list of payments
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Payment'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: initiatePayment
      summary: Initiate a tax payment
      description: Initiate a new tax payment to a specific jurisdiction. The API validates the payment details against jurisdiction-specific rules, routes it to the appropriate tax authority, and returns a payment object with a unique identifier for tracking. Payments move directly from client accounts to tax authorities through verified banking connections.
      tags:
      - Payments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInitiationRequest'
      responses:
        '201':
          description: Payment initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Validation failed against jurisdiction rules
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/payments/{paymentId}:
    get:
      operationId: getPayment
      summary: Retrieve a payment
      description: Retrieve the full details of a specific tax payment, including its current status, jurisdiction routing information, validation results, and audit trail.
      tags:
      - Payments
      parameters:
      - $ref: '#/components/parameters/PaymentId'
      responses:
        '200':
          description: Payment details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/payments/{paymentId}/validate:
    post:
      operationId: validatePayment
      summary: Validate a payment
      description: Run jurisdiction-specific validation on a payment before confirmation. Checks payment amounts, tax periods, jurisdiction-specific identifiers, and account details against the rules of the target tax authority. Returns validation results with any errors or warnings.
      tags:
      - Payments
      parameters:
      - $ref: '#/components/parameters/PaymentId'
      responses:
        '200':
          description: Validation results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationResult'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/payments/{paymentId}/confirm:
    post:
      operationId: confirmPayment
      summary: Confirm a payment
      description: Confirm a validated payment for processing. Once confirmed, the payment is routed to the appropriate tax authority through verified banking connections. This action is irreversible. The payment status will transition to "processing" and subsequent updates will be delivered via webhooks.
      tags:
      - Payments
      parameters:
      - $ref: '#/components/parameters/PaymentId'
      responses:
        '200':
          description: Payment confirmed and queued for processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Payment is not in a confirmable state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/payments/{paymentId}/cancel:
    post:
      operationId: cancelPayment
      summary: Cancel a payment
      description: Cancel a payment that has not yet been confirmed or is still in a cancellable processing state. Returns the updated payment object with a cancelled status.
      tags:
      - Payments
      parameters:
      - $ref: '#/components/parameters/PaymentId'
      responses:
        '200':
          description: Payment cancelled successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Payment cannot be cancelled in its current state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ValidationResult:
      type: object
      properties:
        valid:
          type: boolean
          description: Whether the payment passed all validation checks
        errors:
          type: array
          description: List of validation errors that must be resolved
          items:
            $ref: '#/components/schemas/ValidationIssue'
        warnings:
          type: array
          description: List of validation warnings that may need attention
          items:
            $ref: '#/components/schemas/ValidationIssue'
    PaymentInitiationRequest:
      type: object
      required:
      - amount
      - currency
      - taxType
      - taxPeriod
      - jurisdictionId
      - accountId
      properties:
        amount:
          type: number
          format: double
          description: Payment amount in the specified currency
          minimum: 0.01
        currency:
          type: string
          description: Three-letter ISO 4217 currency code
          pattern: ^[A-Z]{3}$
          example: USD
        taxType:
          type: string
          description: Type of tax being paid (varies by jurisdiction)
          example: income_tax
        taxPeriod:
          type: string
          description: Tax period for the payment
          example: '2025'
        jurisdictionId:
          type: string
          description: Identifier of the target tax jurisdiction
        accountId:
          type: string
          description: Identifier of the client account making the payment
        taxIdentifier:
          type: string
          description: Taxpayer identification number (EIN, SSN, BN) as required by the jurisdiction
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Arbitrary key-value pairs for partner-specific reference data
    ValidationIssue:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error or warning code
        field:
          type: string
          description: The field that triggered the validation issue
        message:
          type: string
          description: Human-readable description of the issue
    Payment:
      type: object
      properties:
        id:
          type: string
          description: Unique payment identifier
        status:
          type: string
          description: Current status of the payment
          enum:
          - draft
          - validated
          - confirmed
          - processing
          - completed
          - failed
          - cancelled
        amount:
          type: number
          format: double
          description: Payment amount in the specified currency
          minimum: 0.01
        currency:
          type: string
          description: Three-letter ISO 4217 currency code
          pattern: ^[A-Z]{3}$
          example: USD
        taxType:
          type: string
          description: Type of tax being paid
          example: income_tax
        taxPeriod:
          type: string
          description: Tax period for the payment (e.g., 2025-Q4, 2025)
          example: '2025'
        jurisdictionId:
          type: string
          description: Identifier of the target tax jurisdiction
        accountId:
          type: string
          description: Identifier of the client account making the payment
        validationResults:
          $ref: '#/components/schemas/ValidationResult'
        confirmationNumber:
          type: string
          description: Confirmation number issued by the tax authority upon successful payment processing
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the payment was initiated
        updatedAt:
          type: string
          format: date-time
          description: Timestamp of the last status update
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Arbitrary key-value pairs for partner-specific reference data
    Pagination:
      type: object
      properties:
        total:
          type: integer
          description: Total number of results
        limit:
          type: integer
          description: Maximum results per page
        offset:
          type: integer
          description: Current offset
        hasMore:
          type: boolean
          description: Whether more results are available
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Machine-readable error code
            message:
              type: string
              description: Human-readable error message
            details:
              type: array
              description: Detailed error information
              items:
                type: object
                properties:
                  field:
                    type: string
                    description: Field related to the error
                  message:
                    type: string
                    description: Detail about the field error
  parameters:
    PageLimit:
      name: limit
      in: query
      description: Maximum number of results to return per page
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
    PageOffset:
      name: offset
      in: query
      description: Number of results to skip for pagination
      schema:
        type: integer
        minimum: 0
        default: 0
    PaymentId:
      name: paymentId
      in: path
      required: true
      description: Unique identifier of the payment
      schema:
        type: string
    StatusFilter:
      name: status
      in: query
      description: Filter by payment status
      schema:
        type: string
        enum:
        - draft
        - validated
        - confirmed
        - processing
        - completed
        - failed
        - cancelled
    JurisdictionFilter:
      name: jurisdictionId
      in: query
      description: Filter by jurisdiction identifier
      schema:
        type: string
    DateFromFilter:
      name: dateFrom
      in: query
      description: Filter results from this date (ISO 8601)
      schema:
        type: string
        format: date
    DateToFilter:
      name: dateTo
      in: query
      description: Filter results up to this date (ISO 8601)
      schema:
        type: string
        format: date
  responses:
    Unauthorized:
      description: Missing or invalid authentication credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Requested resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: API key authentication using a Bearer token provided by Remitian during partner onboarding.
externalDocs:
  description: Remitian Integration Documentation
  url: https://remitian.com/integrations/integrate-remitian