Pay via BOOK
Move funds between two accounts within the system.
Pay via BOOK lets you move funds from one Account to another Account within the system.
This payout method is used when both the source and destination accounts already exist inside this ecosystem. Unlike ACH, Wire, or Check payouts, BOOK transfers do not involve external bank accounts, mailing destinations, or additional payment rail processing.
Use Pay via BOOK when you need to send funds between two Accounts inside the system.
Common Use Cases:
- Move funds between two users within the platform
- Transfer funds between internal operating accounts
- Send money between customer-linked Accounts
- Support internal ecosystem disbursements
Create a BOOK transfer
Processing a BOOK transfer involves submitting the source and destination Passport Account identifiers to the API and tracking the transaction lifecycle.
-
Make a
POSTrequest to/v1/customer/id/{id}/transaction(orexternalId) API endpoint with the required parameters:Parameter Required Description method✓ Set to BOOKexternalIdOptional Your own reference ID for the transaction. Maximum 45 characters. typeOptional Type of transaction. Possible value: REGULARsource.account.id✓ Account to be debited destination.account.id✓ Account to be credited amount✓ Amount to transfer (in USD). Must be greater than zero. purpose✓ Purpose of the transaction. Maximum 128 characters. allowDuplicateOptional Set to trueto allow duplicate transactions on the same day. Defaults tofalse. -
Once the request is submitted, our system performs a series of system-level validations before sending the transaction for processing. These validations check for:
- Missing or invalid required fields
- Incorrect parameter formats or values
- Source or destination account status and availability
- Program Manager configuration or permission issues
If any validation fails, the request is rejected immediately and an error response is returned. You must correct the issue and resubmit the request. For a complete list of validation errors and how to resolve them, refer to the Error Codes & Messages section.
-
If all validations pass, the transaction is submitted for processing. You can track the outcome by:
- Retrieving the transaction via GET
/v1/customer/id/{id}/transaction/id/{id}(orexternalId) API endpoint - Subscribing to Transaction webhooks
- Check the
statusfield to understand the current state of the transaction.
- Retrieving the transaction via GET
-
For every successfully created transaction, store:
id– Unique transaction identifier assigned by PassportexternalId– Your reference identifier (if provided)
These are required for tracking, reconciliation, and follow-up actions.
Scenarios
The following scenario shows an end-to-end BOOK transfer flow. It includes a flow diagram, prerequisites, and a complete example request.
Scenario 1: Transfer funds between two Passport Accounts
Use this scenario to move funds instantly from one Passport Account to another within the system. BOOK transfers do not use external networks and do not require external bank accounts or mailing destinations.
Flow
flowchart LR
A(["👤 Customer<br/><b>ACTIVE</b>"]) --> B(["🏦 Source Account<br/><b>Has Balance</b>"])
B --> C(["🏦 Destination Account<br/><b>ACTIVE</b>"])
C --> D(["📖 BOOK Transfer<br/><b>COMPLETED</b>"])
style A fill:#E8F4FD,stroke:#1976D2,stroke-width:2px
style B fill:#E8F5E9,stroke:#388E3C,stroke-width:2px
style C fill:#FFF3E0,stroke:#F57C00,stroke-width:2px
style D fill:#F3E5F5,stroke:#7B1FA2,stroke-width:2px
Prerequisites
- Customer exists and is
ACTIVE.- Source Account is
ACTIVEand has sufficient balance to cover the transfer amount.- Destination Account exists in the system and is
ACTIVE.
Example Request
{
"externalId": "book-transfer-001",
"method": "BOOK",
"type": "REGULAR",
"amount": "500.00",
"purpose": "Internal Transfer",
"source": {
"account": {
"id": "source-account-001"
}
},
"destination": {
"account": {
"id": "destination-account-001"
}
}
}