Skip to main content

Testing Guide

This guide provides comprehensive testing resources and instructions for the PIPA PayCenter API, including Postman collections, sample payloads, and testing workflows.


Table of Contents


Quick Start

Get started testing the PIPA PayCenter API in minutes:

  1. Download the Postman Collection (see Downloads section below)
  2. Configure your environment variables with your credentials
  3. Run the authentication request to obtain an access token
  4. Execute test requests for Credit Transfers and Payment Requests

Testing Tools

Postman provides a complete testing environment with pre-configured requests, environment variables, and automated workflows.

Features:

  • Pre-configured API requests for all 11 operations
  • Environment variable management
  • Automated token refresh
  • Request/response history
  • Collection runner for automated testing

cURL

For command-line testing, cURL provides a lightweight alternative:

# Example: Get Access Token
curl -X POST https://ipa01.eagle.jhapaycenter.com/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET"

Sample Applications

Use the provided sample applications for integrated testing:

  • C# Sample - Full .NET implementation with all API operations
  • Node.js Sample - JavaScript implementation with demo workflows

Postman Collection

Overview

The PIPA PayCenter Postman Collection includes all 11 API operations organized into logical folders:

  • Authentication - OAuth2 token management
  • Credit Transfers - Direct payment operations
  • Payment Requests - Request for Payment (RfP) workflows
  • Routing Eligibility - Institution verification

Collection Structure

PIPA PayCenter API Collection
├── 1. Authentication
│ └── Get Access Token
├── 2. Credit Transfers
│ ├── Create Credit Transfer
│ ├── Get Credit Transfer by X-Request-ID
│ ├── Get Credit Transfer by Track ID
│ └── Create Credit Transfer for Payment Request
├── 3. Payment Requests
│ ├── Create Payment Request (RfP)
│ ├── Get Payment Request by X-Request-ID
│ ├── Get Payment Request by Track ID
│ └── Update Payment Request Status (Accept/Reject)
└── 4. Routing Eligibility
└── Check Routing Number Eligibility

Environment Variables

Configure these variables in your Postman environment:

VariableDescriptionExample
base_urlAPI base URLhttps://ipa01.eagle.jhapaycenter.com
client_idOAuth2 Client IDyour_client_id
client_secretOAuth2 Client Secretyour_client_secret
institution_idYour Institution ID707060783
environmentAPI environmentsandbox
productProduct identifierpipa
access_tokenBearer token (auto-populated)-
x_request_idIdempotency key (auto-generated)-
track_idTransaction tracking ID (auto-populated)-

Pre-request Scripts

The collection includes automated scripts that:

  • Generate unique UUID v4 for X-Request-ID headers
  • Automatically refresh expired access tokens
  • Extract and store trackId from responses
  • Validate required environment variables

Test Scripts

Built-in test scripts automatically:

  • Verify response status codes
  • Extract and save tokens and tracking IDs
  • Validate response schema
  • Check for required fields

Testing Workflows

Workflow 1: Direct Credit Transfer

Test a simple payment from your institution to a remote account.

Steps:

  1. Authenticate - Get access token
  2. Create Credit Transfer - Send payment
  3. Verify Transfer - Check status using X-Request-ID or Track ID

Expected Results:

  • Status: 202 Accepted
  • Response includes trackId for tracking
  • Transfer status can be retrieved using either X-Request-ID or trackId

Workflow 2: Request for Payment (RfP)

Test the complete RfP workflow from request creation to payment.

Steps:

  1. Authenticate - Get access token
  2. Create Payment Request - Request funds from remote account
  3. Accept Request - Update status to "Accepted"
  4. Pay Request - Create credit transfer with RfP tracking ID
  5. Verify Payment - Check final status

Expected Results:

  • Payment Request created with status Pending
  • Status updated to Accepted
  • Credit Transfer created with RfPPmtHubTrakId
  • Payment completed successfully

Workflow 3: Routing Eligibility Check

Verify if a routing number is eligible for PIPA transactions.

Steps:

  1. Authenticate - Get access token
  2. Check Routing - Query routing number eligibility

Expected Results:

  • Status: 200 OK
  • Response indicates if routing number supports PIPA
  • Institution details returned if eligible

Sample Payloads

Credit Transfer Payload

{
"CreditTransfer": {
"Debtor": {
"Name": "PC-Tester",
"AccountNumber": "556677",
"AccountType": "Checking"
},
"Creditor": {
"Name": "PC-Test",
"AccountNumber": "201990001",
"RoutingNumber": "711060274"
},
"CreditTransferDescription": {
"Amount": 1.01,
"OriginatorType": "BUSINESS",
"UserName": "TestUser",
"Notes": "Sample Transfer"
}
}
}

Payment Request Payload

{
"RequestForPayment": {
"Creditor": {
"Name": "PC-Tester",
"AccountNumber": "556677",
"AccountType": "Checking"
},
"Debtor": {
"Name": "PC-Test",
"AccountNumber": "201990001",
"RoutingNumber": "711060274"
},
"PaymentDescription": {
"Amount": 1.01,
"OriginatorType": "BUSINESS",
"PaymentDueDate": "2024-12-31",
"Notes": "Sample Payment Request"
}
}
}

Payment Request Response (Accept)

{
"Status": "Accepted",
"Amount": 1.01,
"Notes": "Payment accepted"
}

Credit Transfer for Payment Request

{
"CreditTransfer": {
"Debtor": {
"Name": "PC-Test",
"AccountNumber": "201990001",
"AccountType": "Checking"
},
"Creditor": {
"Name": "PC-Tester",
"AccountNumber": "556677",
"RoutingNumber": "711060274"
},
"CreditTransferDescription": {
"Amount": 1.01,
"OriginatorType": "BUSINESS",
"UserName": "TestUser",
"Notes": "Payment for RfP"
},
"PaymentRequestDetails": {
"RfPPmtHubTrakId": "202602061DCM3173825714"
}
}
}

Environment Setup

Sandbox Environment

Base URL: https://ipa01.eagle.jhapaycenter.com

Configuration:

  • Environment: sandbox
  • Product: pipa
  • Institution ID: Provided by PIPA PayCenter
  • Client Credentials: Obtained from PIPA PayCenter portal

Production Environment

Base URL: https://[production-url] (Contact PIPA PayCenter for details)

Configuration:

  • Environment: production
  • Product: pipa
  • Institution ID: Your production institution ID
  • Client Credentials: Production credentials (separate from sandbox)

⚠️ Important: Always test thoroughly in sandbox before moving to production.


Common Test Scenarios

Scenario 1: Successful Credit Transfer

Test Case: Send $1.01 from local account to remote account

Expected Outcome:

  • HTTP 202 Accepted
  • Valid trackId returned
  • Transfer status retrievable via GET requests

Scenario 2: Invalid Routing Number

Test Case: Attempt transfer with invalid routing number

Expected Outcome:

  • HTTP 400 Bad Request
  • Error message indicating invalid routing number

Scenario 3: Missing X-Request-ID Header

Test Case: POST request without X-Request-ID header

Expected Outcome:

  • HTTP 400 Bad Request
  • Error message indicating missing required header

Scenario 4: Duplicate X-Request-ID

Test Case: Reuse same X-Request-ID for multiple requests

Expected Outcome:

  • First request: HTTP 202 Accepted
  • Subsequent requests: Return original response (idempotent)

Scenario 5: Payment Request Rejection

Test Case: Create RfP and reject it

Expected Outcome:

  • Payment Request created successfully
  • Status updated to "Rejected"
  • No credit transfer can be created for rejected request

Scenario 6: Expired Access Token

Test Case: Use expired bearer token

Expected Outcome:

  • HTTP 401 Unauthorized
  • Error message indicating invalid or expired token

Troubleshooting

Authentication Issues

Problem: 401 Unauthorized error

Solutions:

  • Verify client_id and client_secret are correct
  • Check if token has expired (tokens typically expire after 1 hour)
  • Ensure you're using the correct token endpoint
  • Verify Content-Type is application/x-www-form-urlencoded

Missing X-Request-ID

Problem: 400 Bad Request - Missing X-Request-ID header

Solutions:

  • Ensure X-Request-ID header is included in POST/PATCH requests
  • Use UUID v4 format for X-Request-ID
  • Check that header name is exactly X-Request-ID (case-sensitive)

Invalid Account Schema

Problem: 400 Bad Request - Invalid account information

Solutions:

  • Local accounts (PayerAccount): Include Name, AccountNumber, AccountType - NO routing number
  • Remote accounts (RemoteAccount): Include Name, AccountNumber, RoutingNumber
  • Verify AccountType is either "Checking" or "Savings"
  • Ensure routing number is exactly 9 digits

Payment Request Workflow Issues

Problem: Cannot create credit transfer for payment request

Solutions:

  • Verify payment request status is "Accepted" before creating credit transfer
  • Ensure RfPPmtHubTrakId matches the trackId from payment request response
  • Check that the credit transfer parties are reversed from the payment request

Network/Connectivity Issues

Problem: Connection timeout or network errors

Solutions:

  • Verify base URL is correct
  • Check firewall/proxy settings
  • Ensure you have internet connectivity
  • Try increasing request timeout settings

📥 Downloads

Postman Collection

Download the complete Postman collection with all API operations pre-configured:

Import Instructions:

  1. Open Postman
  2. Click "Import" button in the top-left
  3. Select the downloaded JSON file
  4. Configure environment variables
  5. Start testing!

Best Practices

Security

  1. Never commit credentials - Use environment variables or secure vaults
  2. Rotate tokens regularly - Implement automatic token refresh
  3. Use HTTPS only - Never send credentials over unencrypted connections
  4. Separate environments - Use different credentials for sandbox and production

Testing Strategy

  1. Start with authentication - Verify token generation works first
  2. Test happy paths - Ensure successful scenarios work correctly
  3. Test error cases - Verify proper error handling
  4. Use idempotency - Test duplicate X-Request-ID behavior
  5. Automate tests - Use Postman Collection Runner or CI/CD integration

Data Management

  1. Use test data - Never use real account numbers in sandbox
  2. Track test transactions - Save X-Request-ID and trackId values
  3. Clean up test data - Regularly review and clean test transactions
  4. Document test cases - Maintain a test case repository

API Rate Limits

Sandbox Environment:

  • Rate limit: 100 requests per minute per institution
  • Burst limit: 20 requests per second

Production Environment:

  • Rate limits vary by agreement
  • Contact PIPA PayCenter for production limits

Best Practices:

  • Implement exponential backoff for retries
  • Cache access tokens (valid for 1 hour)
  • Use idempotency for safe retries

Support and Resources

Getting Help

For API support and questions:

  • Contact your PIPA PayCenter representative

Reporting Issues

When reporting issues, include:

  • X-Request-ID from the failed request
  • Complete request/response details
  • Environment (sandbox/production)
  • Timestamp of the issue
  • Steps to reproduce