Receive via PPI
Share your Passport Payment ID so another Passport customer can send funds to you instantly by BOOK.
A Passport Payment ID (PPI) is a verified identifier that resolves to your Passport Account (it looks like name@ppi). Share it with another Passport customer and they can send you funds by BOOK, an internal transfer that settles instantly, with no external bank rail.
Because the money never leaves PCE, a PPI receipt is different from an ACH or wire credit: there's no external credit and no matching step. The payer addresses the transfer to your PPI, and the funds land in your account as a completed transaction.
Use this when the payer is also on PCE: partner-to-partner disbursements, marketplace payouts between platform users, or internal funding across customers.
Find your PPI
Your PPI is part of your customer profile. Retrieve it from the GET /v1/customer/id/{id} response, under the ppi object:
"ppi": {
"resourceName": "ppi",
"ppi": "yourname@ppi",
"url": "/v1/customer/id/{id}/ppi"
}Share the ppi value (e.g. yourname@ppi) with the payer; that's all they need to address a BOOK transfer to you.
The payer verifies your PPI first
Before a first payment, the payer can confirm your PPI is valid with the POST /v1/customer/id/{id}/contact/verifyPpi endpoint:
POST /v1/customer/id/{id}/contact/verifyPpi
PromiseMode: NEVER
{
"ppi": "yourname@ppi"
}A 204 No Content response means the PPI exists and is valid (no body is returned); an invalid PPI returns 400.
Scenarios
You share your PPI; the payer optionally verifies it, then sends a BOOK transfer addressed to it. There's no receive-side API call; the funds settle straight to your account.
sequenceDiagram
participant You as You (recipient)
participant Payer as Payer (another Passport customer)
participant PCE as PCE
You->>Payer: Share your PPI (yourname@ppi)
Payer->>PCE: POST /transaction (method BOOK, destination.ppi)
PCE->>PCE: Resolve PPI → your Passport Account, debit payer, credit you
PCE-->>Payer: 201 Created (status COMPLETED, settles instantly)
PCE-->>You: transaction.book.update (funds credited)
Scenario: Get paid by a partner on PCE
A partner who also has a Passport Account owes you a disbursement. You share your PPI; they verify it once, then send a BOOK transfer addressed to destination.ppi. The transfer settles instantly and the funds appear in your account as a COMPLETED transaction.
You'll also need: your PPI (from your customer profile), and the payer's account funded and ACTIVE.
The payer's request looks like this; see Pay via BOOK for the full payer-side flow:
POST /v1/customer/id/{id}/transaction
{
"externalId": "book-ppi-inbound-001",
"method": "BOOK",
"amount": "250.00",
"purpose": "Partner disbursement",
"source": { "account": { "externalId": "payer-account-001" } },
"destination": { "ppi": "yourname@ppi" }
}After the transfer
A PPI receipt is an ordinary BOOK transaction credited to your account; there's no review queue. Track it the same way as any transaction:
- Watch for the
transaction.book.create/transaction.book.updatewebhook events, or GET the transaction. - BOOK settles instantly, so it typically arrives already
COMPLETED.
For the status model, the webhook envelope, and tracking, see Transaction lifecycle.
Best practices
| Practice | Description |
|---|---|
| Share the exact PPI value | Give the payer your ppi string (name@ppi) as shown on your customer profile |
Confirm your account is ACTIVE | A PPI resolves to your account; it must be ACTIVE to receive |
| Tell payers to verify once | A quick Verify PPI check avoids a failed first transfer |
| Expect instant settlement | BOOK has no good-funds hold; funds are usable once COMPLETED |
Next steps
See also
- Pay via BOOK: the payer-side BOOK flow and PPI addressing
- Transaction lifecycle: statuses and tracking
- Save Payees as Contacts: how payers can save your PPI for repeat transfers
Updated 7 days ago
