Customer Preferences
Set the default Passport and external accounts a customer uses to settle exceptions, recover funds, process refunds, and receive cash settlement.
Customer preferences are the default accounts PCE uses when money has to move for a customer outside a normal transaction: an exception is received, funds must be recovered, a refund is issued, or a cash payment settles. You configure these once per customer, and PCE uses them to decide which account is debited or credited to settle that customer's activity.
Preferences are set on the customer, so they apply across that customer's accounts. Each preference is optional; configure only the ones your program uses.
One record per customerPreferences are stored against a single customer and addressed by
idorexternalId. Sending the request again replaces the stored preferences with the values in the new request, so always send the full set you want in effect.
Common use cases
- Point every ACH, check, or wire exception for a customer at a default Passport account so returns settle in one place.
- Name the external bank account a customer has authorized so PCE can recover an exception the Program Manager already covered.
- Choose the Passport account that receives a customer's ACH refunds.
- Choose the Passport account that receives a customer's cash (MoneyGram) settlement credits.
What you can configure
Each group maps to a field in the request. All are optional.
| Preference | Account it points to | What it's for |
|---|---|---|
exceptionAccount | Passport account | Account debited to process exceptions for the customer — ACH exceptions, returned check deposits, and wire exceptions. |
recoveryAccount | External account | External account the customer authorized so PCE can recover an exception the Program Manager processed from its own account earlier. |
refundAccount | Passport account | Account used to process the customer's refunds. Configure the ach rail here. |
settlementAccount | Passport account | Account that receives credits for the customer's cash (MoneyGram) payments. |
Exceptions still follow their own review workflow
Setting an
exceptionAccountnames the default account for a customer's exceptions. Reviewing and resolving inbound items — accepting, rejecting, or reassigning them — is covered separately in Exceptions & reconciliation.
Set customer preferences
Send a POST to /v1/customer/{parentIdType}/{customerId}/preference, where parentIdType is id (the Passport-assigned reference) or externalId (your identifier). Each account you name is an existing Passport account or external account for that customer, referenced by its id or externalId.
Every request must carry the PromiseMode header: NEVER for a synchronous response, or ALWAYS for asynchronous processing.
Before you begin (all scenarios)
- The customer exists, and you have its
idorexternalId. - The accounts you plan to name already exist for that customer: Passport accounts for
exceptionAccount,refundAccount, andsettlementAccount; an external account forrecoveryAccount.
Scenario 1: Route a customer's exceptions to a default account
Name the Passport account that should absorb the customer's exceptions per rail, so ACH returns, returned check deposits, and wire exceptions all settle to accounts you chose in advance.
You'll also need: the Passport account id for each rail you want to cover.
Request
POST /v1/customer/id/4005450/preference
PromiseMode: NEVER
{
"exceptionAccount": {
"ach": { "id": "4005599" },
"check": { "id": "4005599" },
"wire": { "id": "4005599" }
}
}Scenario 2: Authorize an external recovery account
Name the external bank account the customer has authorized so PCE can recover an exception the Program Manager already covered from its own account. Recovery accounts are external accounts, referenced per rail.
You'll also need: the external account id for each rail you want to cover.
Request
POST /v1/customer/id/4005450/preference
PromiseMode: NEVER
{
"recoveryAccount": {
"ach": { "id": "4002155" },
"check": { "id": "4002155" },
"wire": { "id": "4002155" }
}
}Scenario 3: Set a default ACH refund account
Name the Passport account used to process the customer's ACH refunds.
You'll also need: the Passport account id for the refund account.
Request
POST /v1/customer/id/4005450/preference
PromiseMode: NEVER
{
"refundAccount": {
"ach": { "id": "4005599" }
}
}Scenario 4: Direct cash settlement to an account
Name the Passport account that receives credits for the customer's cash (MoneyGram) payments.
You'll also need: the Passport account id that should receive cash settlement.
Request
POST /v1/customer/id/4005450/preference
PromiseMode: NEVER
{
"settlementAccount": {
"moneygram": { "id": "4003826" }
}
}You can also send several groups in one request; PCE stores the full set you provide.
Response: 200 OK
A successful request returns 200 OK with no body. Retrieve the customer's preferences to confirm what's stored.
Retrieve customer preferences
Send a GET to /v1/customer/{parentIdType}/{customerId}/preference with the PromiseMode header to read the configured preferences. Each configured entry resolves to the full account resource, including its resourceName (account for Passport accounts, externalAccount for recovery accounts), url, and id.
Request
GET /v1/customer/id/4005450/preference
PromiseMode: NEVERResponse: 200 OK
{
"exceptionAccount": {
"ach": {
"resourceName": "account",
"url": "/v1/customer/id/4005450/account/id/4003834",
"id": 4003834
},
"check": {
"resourceName": "account",
"url": "/v1/customer/id/4005450/account/id/4003834",
"id": 4003834
},
"wire": {
"resourceName": "account",
"url": "/v1/customer/id/4005450/account/id/4003834",
"id": 4003834
}
},
"recoveryAccount": {
"ach": {
"resourceName": "externalAccount",
"url": "/v1/customer/id/4005450/externalAccount/id/4002155",
"id": 4002155
}
},
"refundAccount": {
"ach": {
"resourceName": "account",
"url": "/v1/customer/id/4005450/account/id/4003834",
"id": 4003834
}
},
"settlementAccount": {
"moneygram": {
"resourceName": "account",
"url": "/v1/customer/id/4005450/account/id/4003834",
"id": 4003834
}
}
}Request reference
The complete set of fields for the preference request. Every group and rail is optional; send only what you want in effect.
Header and path
| Parameter | In | Required | Description |
|---|---|---|---|
PromiseMode | header | ✓ | NEVER for a synchronous response, ALWAYS for asynchronous processing. |
parentIdType | path | ✓ | Identifier type for the customer: id (Passport-assigned) or externalId (your identifier). |
customerId | path | ✓ | The identifier value matching parentIdType. |
exceptionAccount
exceptionAccountPassport accounts that process the customer's exceptions, per rail.
| Field | Description |
|---|---|
ach | Passport account for processing ACH exceptions. |
check | Passport account for processing check exceptions, such as returned check deposits. |
wire | Passport account for processing wire exceptions. |
recoveryAccount
recoveryAccountExternal accounts authorized to recover exceptions the Program Manager processed earlier, per rail.
| Field | Description |
|---|---|
ach | External account for ACH exception recovery. |
check | External account for check deposit exception recovery. |
wire | External account for wire exception recovery. |
refundAccount
refundAccountPassport account used to process the customer's refunds.
| Field | Description |
|---|---|
ach | Passport account for processing ACH refunds. |
settlementAccount
settlementAccountPassport account that receives the customer's cash settlement credits.
| Field | Description |
|---|---|
moneygram | Passport account to receive credits for cash (MoneyGram) payments. |
Account reference object
Every rail above points to an account with one of these identifiers.
| Field | Description |
|---|---|
id | The id of the customer's Passport account (or external account, for recoveryAccount). |
externalId | The externalId of the customer's Passport account (or external account, for recoveryAccount). |
Best practices
| Practice | Description |
|---|---|
| Send the full set you want in effect | A new request replaces the stored preferences. Include every group and rail you still want configured, not just the ones you're changing. |
| Confirm accounts exist first | Each rail must reference an account that already exists for the customer. Create the Passport or external account before setting the preference. |
| Read back after writing | Follow a POST with a GET to confirm exactly which accounts are stored. |
| Match the account type to the rail | Use Passport accounts for exceptionAccount, refundAccount, and settlementAccount; use external accounts for recoveryAccount. |
See also
- Exceptions & reconciliation: review and resolve the inbound credits and debits these preferences help settle
- Accounts: the customer and Passport accounts these preferences point to
- Getting Started: authentication,
PromiseMode, webhooks, and shared setup
Updated 3 days ago