Test in sandbox
Last updated: Oct 18th, 5:40am
You can test account update errors in the sandbox. If you want to understand the response if you updated an account without adding a required data point, exclude the data point from your update calls.
The default state for updating bank accounts in the sandbox is a happy path because we cannot verify test data. To test negative scenarios, use a simulation keyword for the specific use case, as shown in the following examples:
Incorrect business information
Use case scenario: Update an account that previously completed KYC verification with incorrect merchant name or business information.
Simulation code: The business_name
in the patch must be DECLINED
.
1[2 {3 "op": "replace",4 "path": "/business_entity/names/@id=='S7S37669QZ2BN'",5 "value": {6 "business_name": "DECLINED",7 "type": "LEGAL"8 }9 }10]
Incorrect beneficial owner
Use case scenario: Update a merchant account with an incorrect beneficial owner name.
Simulation code: The given_name
and surname
for the beneficial owner (office_bearers
or beneficial_owners
) must be "DECLINED"
.
- Office bearers
- Beneficial owners
1[2 {3 "op":"replace",4 "path":"/business_entity/office_bearers/individuals/@id=='{{ob_id}}'/names",5 "value": [{6 "type": "LEGAL",7 "given_name": "Another DECLINED",8 "surname": "DECLINED"9 }]10 }11]
Incorrect beneficial owner address
Use case scenario: Update a merchant account with incorrect beneficial owner or office bearer address.
Simulation code: For stakeholders (office_bearers
or beneficial_owners
):
address_line_1
must be Campus 611address_line_2
must be 300admin_area_2
must be 300
- Office bearers
- Beneficial owners
1[2 {3 "op": "replace",4 "path": "/business_entity/office_bearers/individuals/@id=='{{ob_id}}'/addresses",5 "value": [6 {7 "type": "HOME",8 "address_line_1": "Campus 611",9 "address_line_1": "300"10 "admin_area_2": "300",11 "postal_code": "12345",12 "country_code": "US"13 }14 ]15 }16]
Incorrect business name and beneficial owner name
Use case scenario: Update a merchant account with an incorrect business name and beneficial owner name.
Simulation code:
- The
business_name
must be"DECLINED"
. - The
given_name
andsurname
for the beneficial owner (office_bearers
orbeneficial_owners
) must be"DECLINED"
.
1[2 {3 "op": "replace",4 "path": "/business_entity/names/@id=='S7S37669QZ2BN'",5 "value": {6 "business_name": "DECLINED",7 "type": "LEGAL"8 }9 },10 {11 "op":"replace",12 "path":"/business_entity/beneficial_owners/individuals/@id=='{{bo_id}}'/names",13 "value": [{14 "type": "LEGAL",15 "given_name": "Another DECLINED",16 "surname": "DECLINED"17 }]18 }19]
Simulate limitations in sandbox
Use case scenario: Update a key value on the merchant account and trigger a re-verification failure. The system will apply a limitation after 30 days.
You don't have to wait 30 days to verify the limitation. Instead, you can complete the following steps to advance all the limitation counters on a merchant account:
- Use the PATCH API with an
add
operation and a single email object.
- Use this specific format for the email address you use for the PATCH request,
paypaltimetravel.x@domain.com
where x represents the number of days you want to simulate. For example, if you want to simulate 30 days passing, you would set x = 30. The email should end with a valid domain.
When processed, the PATCH request advances the counter, but the email address is not stored and does not affect the account.
Simulation code:
- Create a sole proprietor account using keywords that fail verification.
- Edit the account with keywords that trigger a failed re-verification. For example, change the given name of the primary authorized user (
individual_owners
) toDECLINEDDAVID
and the surname toDECLINED
. - After PayPal creates the merchant account and sends webhooks about the status change, complet a GET request to confirm that a limitation is placed on the account. Now, use the PATCH API to add the email address
paypaltimetravel.30@paypal.com
to the account.
Note: Do not combine the passage of time simulation with other operations in the same PATCH request. For example, you cannot add an email address and phone number in the same request.
1[2 {3 "op": "add",4 "path": "/individual_owners/@id=='{id}'/emails/-",5 "value": {6 "email": "paypaltimetravel.30@paypal.com"7 }8 }9]
Next steps:
When you receive an account status updated webhook, complete a GET request to confirm that all transactions and withdrawals are blocked.