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
- Testing Tools
- Postman Collection
- Testing Workflows
- Sample Payloads
- Environment Setup
- Common Test Scenarios
- Troubleshooting
Quick Start
Get started testing the PIPA PayCenter API in minutes:
- Download the Postman Collection (see Downloads section below)
- Configure your environment variables with your credentials
- Run the authentication request to obtain an access token
- Execute test requests for Credit Transfers and Payment Requests
Testing Tools
Postman (Recommended)
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:
| Variable | Description | Example |
|---|---|---|
base_url | API base URL | https://ipa01.eagle.jhapaycenter.com |
client_id | OAuth2 Client ID | your_client_id |
client_secret | OAuth2 Client Secret | your_client_secret |
institution_id | Your Institution ID | 707060783 |
environment | API environment | sandbox |
product | Product identifier | pipa |
access_token | Bearer token (auto-populated) | - |
x_request_id | Idempotency key (auto-generated) | - |
track_id | Transaction tracking ID (auto-populated) | - |
Pre-request Scripts
The collection includes automated scripts that:
- Generate unique UUID v4 for
X-Request-IDheaders - Automatically refresh expired access tokens
- Extract and store
trackIdfrom 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:
- Authenticate - Get access token
- Create Credit Transfer - Send payment
- Verify Transfer - Check status using X-Request-ID or Track ID
Expected Results:
- Status:
202 Accepted - Response includes
trackIdfor 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:
- Authenticate - Get access token
- Create Payment Request - Request funds from remote account
- Accept Request - Update status to "Accepted"
- Pay Request - Create credit transfer with RfP tracking ID
- 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:
- Authenticate - Get access token
- 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
trackIdreturned - 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
RfPPmtHubTrakIdmatches 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:
- Open Postman
- Click "Import" button in the top-left
- Select the downloaded JSON file
- Configure environment variables
- Start testing!
Best Practices
Security
- Never commit credentials - Use environment variables or secure vaults
- Rotate tokens regularly - Implement automatic token refresh
- Use HTTPS only - Never send credentials over unencrypted connections
- Separate environments - Use different credentials for sandbox and production
Testing Strategy
- Start with authentication - Verify token generation works first
- Test happy paths - Ensure successful scenarios work correctly
- Test error cases - Verify proper error handling
- Use idempotency - Test duplicate X-Request-ID behavior
- Automate tests - Use Postman Collection Runner or CI/CD integration
Data Management
- Use test data - Never use real account numbers in sandbox
- Track test transactions - Save X-Request-ID and trackId values
- Clean up test data - Regularly review and clean test transactions
- 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