Welcome to the Integration Service API
The Procare Pay Integration Service is a comprehensive RESTful API that enables secure payment processing, customer profile management, and transaction handling for credit card and ACH (bank account) payments. This service is designed to help you integrate payment capabilities into your applications while maintaining the highest standards of security and PCI DSS compliance.
What Can You Do With This API?
- Process Payments: Accept credit card and ACH payments, process refunds, and handle returns
- Manage Customer Profiles: Create and manage payor profiles that store encrypted payment methods for recurring billing
- Secure Data Handling: Use RSA public key encryption to protect sensitive payment data
- Card Validation: Look up BIN (Bank Identification Number) information to identify card types and surcharge rules
- Transaction Management: Search, retrieve, and update transaction details and custom attributes
- Merchant Information: Access merchant capabilities, limits, and configuration details
Getting Started
RESTful Basics
New to RESTful APIs? Start here to understand the fundamentals of REST architecture and HTTP methods.
Read GuideAuthentication
Learn how to authenticate using AWS Cognito OAuth2 and obtain bearer tokens for API access.
View AuthenticationIntegration Best Practices
Essential guide covering payment flows, error handling, security, and resilient coding practices for production integrations.
View Best PracticesAPI Reference Documentation
🔑 Encryption Keys
Retrieve public encryption keys for securing sensitive payment data. Always encrypt credit card numbers, bank account numbers, and CVV codes before sending to the API.
- GET Get All Public Keys (PAN + SAD)
- GET Get PAN Key (Primary Account Number Encryption)
- GET Get SAD Key (CVV Code Encryption)
🏢 Merchant Information
Access merchant configuration, capabilities, transaction limits, and funding model information.
💳 BIN Lookup (Card Identification)
Look up Bank Identification Numbers to determine card brand, issuer, and surcharge eligibility.
👤 Payor Management (Customer Profiles)
Create and manage customer payment profiles (payors) that can store multiple payment methods for recurring billing or one-click checkout.
Payor Profiles
- GET List Payors (Search by Customer ID or Payor IDs)
- POST Create Payor Profile
- GET Get Single Payor
- DELETE Delete Payor Profile
Saved Payment Methods
- GET List All Payment Methods for Payor
- POST Add Saved Payment Method
- GET Get Single Payment Method
- PUT Update Saved Payment Method
- DELETE Delete Single Payment Method
- DELETE Delete All Payment Methods
💰 Transaction Processing
Process payments, handle refunds and returns, search transaction history, and manage transaction data.
- POST Process Transaction (Sale)
- GET Get Single Transaction
- GET Search Transactions
- POST Return Transaction
- POST Initiate Refund
- PUT Update Transaction Custom Attributes
- 📋 Value Added Services (Decline Protection, Duplicate Check, Available Refund)
📅 Holidays
Retrieve upcoming U.S. banking holidays that may affect ACH payment processing and settlement timing.
🏥 Service Status & Health Checks
Monitor service availability and check the health of downstream dependencies. These endpoints do not require authentication.
Common Integration Workflows
1. First-Time Payment with Profile Creation
- Authenticate to get bearer token
- Get PAN encryption key
- Get SAD encryption key (if collecting CVV)
- Encrypt payment card number with PAN key
- Encrypt CVV with SAD key (use immediately, never store)
- Create payor profile with encrypted card
- Process transaction using saved payment method ID
2. Recurring Payment (Existing Customer)
- Authenticate to get bearer token
- Look up payor by your customer ID
- Get payment methods and find default
- Process transaction using saved payment method ID
3. Update Expired Card
- Get PAN encryption key
- Encrypt new card number with PAN key
- Add new payment method with setAsDefault: true
- Delete old expired card
4. Process Refund
- Search for original transaction by order ID or transaction ID
- Initiate refund with original transaction ID and amount
Best Practices & Security
- Never log or store unencrypted card numbers or bank account numbers
- Never store CVV codes, even encrypted (use immediately and discard)
- Always use HTTPS for all API communications
- Rotate and refresh encryption keys every 4-6 hours
- Clear sensitive data from memory immediately after encryption
- Validate and sanitize all input data
- Cache PAN and SAD encryption keys for 4-6 hours to reduce API calls
- Use bulk BIN lookup endpoint when validating multiple cards
- Implement retry logic with exponential backoff for 408 timeout errors
- Use pagination parameters when searching large transaction datasets
- Store payor IDs and saved payment method IDs in your database for quick lookup
- 400 Bad Request: Validation error - check request format and required fields
- 401 Unauthorized: Token expired or invalid - re-authenticate
- 404 Not Found: Resource doesn't exist - verify IDs and check if resource was deleted
- 408 Request Timeout: Retry with exponential backoff
- 500 Internal Server Error: Server-side issue - log error and contact support if persistent
Code Examples
Every endpoint in this documentation includes complete, working code examples in multiple programming languages:
- C# - .NET Core/Framework with HttpClient and RSA encryption
- VB.NET - Visual Basic .NET with full async/await support
- Java - Java 11+ with HttpClient and Jackson JSON
- Ruby - Ruby with Net::HTTP and OpenSSL
Each code example includes authentication, encryption (where applicable), error handling, and helper methods to make integration as straightforward as possible.
Support & Additional Resources
For technical support, questions, or issues with the API:
- Contact: Procare Software, LLC
- Base URL:
/rest(relative to your environment's base URL)