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.


How it works

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

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.


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.update webhook 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

PracticeDescription
Share the exact PPI valueGive the payer your ppi string (name@ppi) as shown on your customer profile
Confirm your account is ACTIVEA PPI resolves to your account; it must be ACTIVE to receive
Tell payers to verify onceA quick Verify PPI check avoids a failed first transfer
Expect instant settlementBOOK has no good-funds hold — funds are usable once COMPLETED

Related

See also


Did this page help you?
.readme-logo { display: none !important; }