Onboard a Person
What is a Person?
Section titled “What is a Person?”A Person in the GrailPay Payments API represents an individual who can send or receive ACH transfers. Each person is
uniquely identified by a uuid, which is returned upon successful onboarding and is required for future operations
such as linking bank accounts and initiating transfers.
The first step in integrating with the GrailPay Payments API is to onboard a person and this guide outlines the onboarding workflow and provides context for common use cases. For complete request and response schemas, refer to the Onboard a Person OpenAPI Documentation.
Testing
Section titled “Testing”When testing in GrailPay’s sandbox environment, you can create a person as usual. To include a bank account, simply use any random 12-digit account number along with one of our supported test routing numbers.
For more details, refer to the Technical Overview guide.
Step 1: Collect Person Information
Section titled “Step 1: Collect Person Information”To create a person, you can provide any combination of the following fields:
- First name
- Last name
- Phone
- Address
See Onboard a Person OpenAPI Documentation for the full payload and optional parameters such as client_reference_id.
Step 2: Link to a Merchant for Billing Attribution
Section titled “Step 2: Link to a Merchant for Billing Attribution”If you want to associate billable events with a merchant, include the billing_merchant_uuid in your request payload. This value should reference a KYB-verified merchant. You will receive this UUID when you onboard the merchant using the Onboard a Merchant endpoint.
Field:
billing_merchant_uuid — UUID of the merchant that should receive billing attribution.
This enables GrailPay to accurately report on merchant usage and ensures billing traceability across your organization.
Step 3: Provide a Bank Account
Section titled “Step 3: Provide a Bank Account”You can onboard a person with or without a connected bank account. If you choose to provide one, we support two methods:
Option A: Link a Plaid Account
Section titled “Option A: Link a Plaid Account”If you’re using Plaid for bank account linking, include the following fields:
bank_account.plaid.access_tokenbank_account.plaid.account_id
For integration details, refer to the Onboard a Person OpenAPI Documentation.
Option B: Manual Entry
Section titled “Option B: Manual Entry”You can also onboard a person using manually provided account details:
account_numberrouting_numberaccount_nameaccount_type(checkingorsavings)
Real-Time Validation (Recommended)
Section titled “Real-Time Validation (Recommended)”To reduce fraud risk and ensure funds can be successfully routed, we recommend enabling real-time bank account validation during onboarding. This feature is powered by our Account Intelligence product, which provides intelligent validation of routing and account numbers at the time of submission.
To enable this, include an actions object in your onboarding request:
{ "actions": { "account_intelligence": { "version": "v3", "name_match": true } }}This validation step confirms that the provided routing and account numbers are both valid and correctly formatted. If name_match is enabled, it also checks that the account holder’s name aligns with the expected identity. In addition to these checks, the response includes a Risk Score and a set of decisioning insights that explain how the account was evaluated.
To understand the full structure of the response and how to interpret the results, refer to our Account Intelligence documentation.
Although optional, enabling this validation is strongly recommended for all production integrations to reduce failure rates and improve payout reliability.
Step 4: Review the Response
Section titled “Step 4: Review the Response”Upon success, you’ll receive a response containing:
- The person’s
uuid - Echoed values such as name and address
- Status of the onboarding
- An account intelligence object (if validation was requested)
Full response schema is available in the Onboard a Person OpenAPI Documentation.
Error Handling
Section titled “Error Handling”The onboarding endpoint may return the following common HTTP status codes:
| Status Code | Description |
|---|---|
400 | Bad Request — e.g., missing headers or malformed request |
401 | Unauthorized — invalid or malformed token |
403 | Forbidden — blocked IP address or restricted access |
406 | Not Acceptable — failed account validation or invalid billing UUID |
422 | Unprocessable Entity — field-level validation errors |
For complete error formats and examples, visit the Onboard a Person OpenAPI Documentation.
Try It Out
Section titled “Try It Out”You can use the API Explorer to test onboarding flows interactively. This tool allows you to enter a payload, submit a request, and view the response in real time.
Questions?
Section titled “Questions?”If you’re encountering any issues, please reach out to support@grailpay.com.
Maintained by EkLine