Remitian Payments API
Initiate, validate, and confirm tax payments across multiple jurisdictions through a single unified gateway.
Initiate, validate, and confirm tax payments across multiple jurisdictions through a single unified gateway.
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