openapi: 3.0.4
info:
title: v1 Payment Instruction API
description: API for submitting and managing Payment Instructions.
contact:
name: Payment Valet
url: https://paymentvalet.readme.io/reference/
version: v1
servers:
- url: https://sandbox.api.connexpay.com/valet/payment/v1
description: Sandbox
security:
- ApiKey: []
tags:
- name: PaymentInstruction
description: Controller for handling Payment Instructions.
paths:
/instruction/client/{clientId}:
post:
tags:
- PaymentInstruction
summary: Submit a Payment Instruction
description: Used to create a new payment instruction. The request must include all required fields such as clientId, clientPaymentId, payee details, payment amount, and currency code. Optional fields like paymentDueDate and user-defined fields may also be included.
operationId: CreatePaymentInstruction
parameters:
- name: clientId
in: path
description: Unique identifier assigned to the client organization by Payment Valet. Required in the path.
required: true
schema:
type: integer
format: int32
requestBody:
description: The payment instruction request object.
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentInstructionRequest'
application/*+json:
schema:
$ref: '#/components/schemas/PaymentInstructionRequest'
required: true
responses:
'200':
description: Payment instruction created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentInstructionResponseResult'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblemDetails'
'403':
description: Client ID from request does not match authenticated client.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
'409':
description: ClientPaymentId already exists.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
'415':
description: Unsupported media type.
content:
application/json: {}
'422':
description: Valid request format but contains business rule violations.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
/instruction/client/{clientId}/clientPaymentId/{clientPaymentId}/fundingStatus:
get:
tags:
- PaymentInstruction
summary: Get Funding Status
description: This endpoint retrieves the funding status updates for a payment request identified by the client ID and client payment ID.
operationId: GetFundingStatus
parameters:
- name: clientId
in: path
description: Unique identifier assigned to the client organization by Payment Valet. Required in the path.
required: true
schema:
type: integer
format: int32
- name: clientPaymentId
in: path
description: Unique identifier assigned to the payment instruction by the client. Required in the path.
required: true
schema:
type: string
responses:
'200':
description: Returns the funding status updates.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/RequestStatusUpdate'
'400':
description: Invalid clientPaymentId provided.
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblemDetails'
'403':
description: Client ID from request does not match authenticated client.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
'404':
description: No funding status found for the specified payment request.
content:
application/json:
schema: {}
/instruction/client/{clientId}/clientPaymentId/{clientPaymentId}/paymentStatus:
get:
tags:
- PaymentInstruction
summary: Get Payment Status
description: This endpoint retrieves the payment status updates for a payment request identified by the client ID and client payment ID.
operationId: GetPaymentStatus
parameters:
- name: clientId
in: path
description: Unique identifier assigned to the client organization by Payment Valet. Required in the path.
required: true
schema:
type: integer
format: int32
- name: clientPaymentId
in: path
description: Unique identifier assigned to the payment instruction by the client. Required in the path.
required: true
schema:
type: string
responses:
'200':
description: Returns the funding status updates.
content:
application/json: {}
'400':
description: Invalid clientPaymentId provided.
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblemDetails'
'403':
description: Client ID from request does not match authenticated client.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
'404':
description: No funding status found for the specified payment request.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
/instruction/client/{clientId}/clientPaymentId/{clientPaymentId}/void:
post:
tags:
- PaymentInstruction
summary: Void a Payment Instruction
description: This endpoint voids a payment instruction identified by the client ID and client payment ID.
operationId: VoidPaymentInstruction
responses:
'200':
description: Successful response
4XX:
description: Client Error
content:
application/json:
schema:
type: object
properties:
Error:
type: string
description: Issues related to client authentication, request content or request structure. Possible reasons:
Bad Request.
Invalid or malformed request.
Payment not found with supplied details.
Payment has already been voided.
Void unable to be processed due to payment redemption or card authorization.
requestBody:
content:
application/json:
schema:
type: object
properties:
ReasonCode:
type: string
description: Purpose of the void request.
enum:
- clientRequested
- fraud
- duplicatePayment
- fundingNotReceived
reissue:
type: boolean
description: If true, the system will attempt to void the payment and create a new payment request. If false or omitted, the system will return funds upon successful void.
reissueClientPaymentId:
type: string
description: The provided value will be used as the clientPaymentId for the reissued request. Required when reissue value is true..
paymentRestrictions:
type: object
properties:
forcedModality:
type: string
description: 'Specifies the payment modality or method. The only valid option at this time is ''Card''. Allowed: ACH, Card, Check.'
enum:
- Card
excludedModalities:
type: string
description: List of payment modalities that are excluded from this payment instruction. At this time, there are no valid options.
required:
- ReasonCode
parameters:
- in: path
name: clientId
schema:
type: integer
format: int32
required: true
description: Unique identifier assigned to the client organization by Payment Valet. Required in the path.
- in: path
name: clientPaymentId
schema:
type: string
required: true
description: Unique identifier for the payment instruction, assigned by the client. Used for reporting and event notifications to aid in reconciliation. Length between 1 and 50.
components:
schemas:
ValidationProblemDetails:
type: object
description: Validation error details.
properties:
type:
type: string
nullable: true
title:
type: string
nullable: true
status:
type: integer
format: int32
nullable: true
detail:
type: string
nullable: true
instance:
type: string
nullable: true
errors:
type: object
additionalProperties:
type: array
items:
type: string
nullable: true
additionalProperties: {}
PaymentInstructionResponseResult:
type: object
properties:
isSuccess:
type: boolean
statusCodeResult:
$ref: '#/components/schemas/StatusCodeResult'
message:
type: array
items:
type: string
nullable: true
value:
$ref: '#/components/schemas/PaymentInstructionResponse'
additionalProperties: false
PayeeType:
enum:
- Business
- Consumer
description: Defines if the payee is a business or consumer. Valid options are 'Business' or 'Consumer'.
type: string
ContactType:
enum:
- Email
- Fax
- Phone
type: string
description: Specifies the preferred contact method available for a payee. Valid options are 'Email', 'Fax', or 'Phone'.
RequestStatusUpdate:
type: object
properties:
status:
$ref: '#/components/schemas/PaymentStatus'
statusType:
$ref: '#/components/schemas/StatusType'
createdDate:
type: string
format: date-time
additionalProperties: false
PaymentInstructionResponse:
type: object
properties:
clientPaymentId:
type: string
description: Unique identifier for the payment instruction, assigned by the client.
nullable: true
generatedPaymentId:
type: string
description: Unique identifier for the payment instruction, generated by Payment Valet.
nullable: true
status:
type: boolean
additionalProperties: false
PaymentRestrictions:
type: object
description: Used to enforce or exclude specific payment modalities for the payment instruction.
properties:
forcedModality:
$ref: '#/components/schemas/ModalityType'
excludedModalities:
type: array
description: List of payment modalities that are excluded from this payment instruction. At this time, there are no valid options.
items:
$ref: '#/components/schemas/ModalityType'
nullable: true
additionalProperties: false
PaymentItem:
description: Details of the individual items in the payment instruction.
required:
- amount
- itemId
type: object
properties:
itemType:
$ref: '#/components/schemas/PaymentItemType'
itemId:
maxLength: 50
minLength: 1
description: Unique identifier of the item in the payment breakdown.
pattern: ^[a-zA-Z0-9]*$
type: string
example: '12341234'
amount:
type: number
description: Amount of the item in the payment breakdown.
format: double
example: 123.45
additionalProperties: false
ModalityType:
enum:
- ACH
- Card
- Check
type: string
description: Specifies the payment modality or method. The only valid option at this time is 'Card'.
ProblemDetails:
type: object
properties:
type:
type: string
nullable: true
title:
type: string
nullable: true
status:
type: integer
format: int32
nullable: true
detail:
type: string
nullable: true
instance:
type: string
nullable: true
additionalProperties: {}
ClientDocuments:
required:
- documentName
type: object
properties:
documentName:
type: string
description: Document name including file extension. Should be unique for each payment instruction.
nullable: true
example: FileName.pdf
documentType:
type: string
description: The document type.
nullable: true
example: Explanation of Payment
documentRequired:
type: boolean
description: Indicates whether the document is required.
example: false
sequence:
type: integer
description: 'Sequence number of the document. When multiple files are provided,
Payment Valet will use this for ordering.'
format: int32
example: 1
additionalProperties: false
PayeeContactCreate:
required:
- emailAddress
- name
- phoneNumber
- title
type: object
properties:
name:
minLength: 1
type: string
example: M. Smith
description: Name of the payee contact person. Required.
title:
minLength: 1
type: string
example: Manager
description: Title or position of the payee contact person. Required.
phoneNumber:
minLength: 1
pattern: ^\+?[0-9\s\-]{7,15}$
type: string
example: '+10000000000'
description: Phone number for the payee contact person. Required.
faxNumber:
pattern: ^\+?[0-9\s\-]{7,15}$
type: string
nullable: true
example: +0018008675309
description: Fax number for the payee contact person. Optional.
emailAddress:
maxLength: 100
minLength: 1
pattern: ^[^@\s]+@[^@\s]+\.[^@\s]+$
type: string
example: Manager@email.com
description: Email address for the payee contact person, in valid email format. Required.
preferredContactMethod:
$ref: '#/components/schemas/ContactType'
preferredDistributionMethod:
$ref: '#/components/schemas/DistributionType'
additionalProperties: false
PaymentItemType:
description: Describes the type of the item in the payment breakdown. Required if ItemID or Amount are provided and valid options are 'Claim' and 'Invoice'.
enum:
- Claim
- Invoice
type: string
PaymentStatus:
enum:
- Submitted
- Processing
- Issued
- Completed
- Cancelled
- DecisioningRequested
- DecisioningCompleted
- FundingRequested
- FundingProcessing
- FundingCompleted
- PaymentCreated
- CardAuthorized
- PaymentSettled
- VoidRequested
- VoidCompleted
- VoidFailed
- FundingFailed
description: Description of the Payment Status. Refer to your Payment Valet team for additional details.
type: string
Result:
type: object
properties:
isSuccess:
type: boolean
statusCodeResult:
$ref: '#/components/schemas/StatusCodeResult'
message:
type: array
items:
type: string
nullable: true
additionalProperties: false
PayeeAddressCreate:
required:
- addressLine1
- city
- countryCode
- postalCode
type: object
properties:
careOf:
maxLength: 100
pattern: ^[A-Za-z0-9\*\.\(\)\",:;'@& -]+$
type: string
description: Optional field for specifying a person or entity to receive mail on behalf of the payee.
nullable: true
example: Accounts Payable
addressLine1:
maxLength: 47
minLength: 1
pattern: ^[A-Za-z0-9\*\.\(\)\",:;'@& -]+$
type: string
description: Primary address line for the payee's location. Required.
example: 789 Main Street
addressLine2:
maxLength: 47
pattern: ^[A-Za-z0-9\*\.\(\)\",:;'@& -]+$
type: string
description: Secondary address line for the payee's location. Optional.
nullable: true
example: Suite 12
city:
maxLength: 50
minLength: 1
pattern: ^[A-Za-z0-9\*\.\(\)\",:;'@& -]+$
type: string
description: City of the payee's address. Required.
example: Austin
stateOrProvince:
maxLength: 50
pattern: ^[A-Za-z0-9\*\.\(\)\",:;'@& -]+$
type: string
description: Two-letter state or province code (Alpha-2, ISO 3166-2) for the payee's address. Required when Country Code is USA, otherwise Optional.
nullable: true
example: TX
postalCode:
maxLength: 10
minLength: 1
pattern: ^[A-Za-z0-9\*\.\(\)\",:;'@& -]+$
type: string
description: Postal or ZIP code for the payee's address. Required.
example: '78746'
countryCode:
minLength: 1
pattern: ^[A-Z]{3}$
type: string
description: Three-letter country code (Alpha-3, ISO 3166-1) for the payee's address. Required
example: USA
additionalProperties: false
PaymentInstructionRequest:
required:
- clientId
- clientPaymentId
- payee
- paymentAmount
- paymentCurrencyCode
- payorId
type: object
properties:
clientId:
type: integer
description: Unique identifier assigned to the client organization by Payment Valet. Required.
format: int32
example: 12345
payorId:
maximum: 2147483647
minimum: 1
type: integer
description: Identifier for the payor (entity making the payment). This is used to determine branding and funding. Required.
format: int32
example: 2
payee:
$ref: '#/components/schemas/PayeeCreate'
clientPaymentId:
maxLength: 50
minLength: 1
type: string
description: Unique identifier for the payment instruction, assigned by the client. Used for reporting and event notifications to aid in reconciliation. Required
example: '100012'
paymentDueDate:
type: string
description: Date and time when the payment is due. Optional.
format: date-time
nullable: true
example: '2025-12-26T00:00:00.0000000'
paymentAmount:
minimum: 0
type: number
description: Total amount to be paid in the specified currency. Required.
format: double
example: 123.45
paymentCurrencyCode:
minLength: 1
pattern: ^[A-Z]{3}$
type: string
description: Three-letter currency code (Alpha-3, ISO 4217) for the payment. Required.
example: USD
paymentRestrictions:
$ref: '#/components/schemas/PaymentRestrictions'
userDefinedField1:
maxLength: 100
pattern: ^[A-Za-z0-9\*\.\(\)\",:;'@& -]+$
type: string
description: User-defined field for custom data. Optional.
nullable: true
example: 09182374
userDefinedField2:
maxLength: 100
pattern: ^[A-Za-z0-9\*\.\(\)\",:;'@& -]+$
type: string
description: User-defined field for custom data. Optional.
nullable: true
example: Ref123
userDefinedField3:
maxLength: 100
pattern: ^[A-Za-z0-9\*\.\(\)\",:;'@& -]+$
type: string
description: User-defined field for custom data. Optional.
nullable: true
example: Payment Valet
clientDocuments:
type: array
items:
$ref: '#/components/schemas/ClientDocuments'
description: List of documents provided by the client related to the payment instruction. Optional.
nullable: true
paymentItems:
type: array
items:
$ref: '#/components/schemas/PaymentItem'
description: List of individual payments comprising the entire request, such as invoices or claims. The sum of all provided items must total the PaymentAmount field.
paymentAddenda:
type: string
description: Additional information or notes related to the payment. Optional.
nullable: true
example: Release Payment for PO# 123
additionalProperties: false
PayeeCreate:
required:
- payeeAddress
- payeeName
- payeeType
type: object
properties:
payeeName:
maxLength: 47
minLength: 0
type: string
description: Name of the individual or business being paid. Required.
example: ExampleCo
payeeType:
$ref: '#/components/schemas/PayeeType'
payeeTaxId:
maxLength: 10
pattern: ^[a-zA-Z0-9]*$
type: string
description: Tax identification number for the payee. Optional.
nullable: true
example: '111222333'
clientPayeeIdentifier:
maxLength: 50
pattern: ^[a-zA-Z0-9]*$
type: string
description: Unique client-specific identifier for the payee. Optional.
nullable: true
example: '1431243123'
payeeAddress:
$ref: '#/components/schemas/PayeeAddressCreate'
payeeContactInfo:
$ref: '#/components/schemas/PayeeContactCreate'
additionalProperties: false
StatusType:
enum:
- Funding
- Payment
- Document
type: string
StatusCodeResult:
type: object
description: Status code of the response.
properties:
statusCode:
type: integer
format: int32
additionalProperties: false
DistributionType:
enum:
- Email
- Fax
- Print
- Mail
type: string
description: Specifies the preferred method by which the payment is delivered. Valid options at this time are 'Email' and 'Mail'.
securitySchemes:
ApiKey:
type: apiKey
description: API Key required for access
name: Api-Key
in: header