Test Payouts

DOCS

Last updated: Aug 15th, 6:06am

You can run negative tests on your integration to manage the responses you give to your customers.

Know before you code

Before you trigger a simulation, you'll need to you need to get an access token.

Simulation methods

To trigger a simulation for the Payouts API, use a JSON pointer in the request payload or use a path parameter in the request URI.

Use a JSON pointer in the request payload

TriggerTest valueSimulated response
items [0] /noteERRPYO002SENDER_EMAIL_UNCONFIRMED

JSON pointer request

    1curl -X POST https://api-m.sandbox.paypal.com/v1/payments/payouts \
    2 -H "content-type: application/json" \
    3 -H "Authorization: Bearer <Access-Token>" \
    4 -d '{
    5 "sender_payout_header":
    6 {
    7 "sender_batch_id": "1524086406556",
    8 "email_subject": "This email is related to simulation"
    9 },
    10 "items": [
    11 {
    12 "recipient_type": "EMAIL",
    13 "receiver": "payouts-simulator-receiver@paypal.com",
    14 "note": "ERRPYO002",
    15 "sender_item_id": "15240864065560",
    16 "amount":
    17 {
    18 "currency": "USD",
    19 "value": "1.00"
    20 }
    21 }]
    22}'

    JSON pointer response

      1{
      2 "name": "SENDER_EMAIL_UNCONFIRMED",
      3 "message": "Authorization error occurred",
      4 "debug_id": "ca787bdf80d7a",
      5 "information_link": "https://developer.paypal.com/docs/api/payments.payouts-batch/v1/#errors"
      6}

      Use a path parameter in the request URI

      TriggerTest valueSimulated response
      /v1/payments/payoutsERRPYO015CLOSED_MARKET

      Path parameter request

        1curl -X GET https://api-m.sandbox.paypal.com/v1/payments/payouts/ERRPYO015 \
        2 -H "content-type: application/json" \
        3 -H "Authorization: Bearer <Access-Token>"

        Path parameter response

          1{
          2 "batch_header":
          3 {
          4 "payout_batch_id": "DQCP2UAJCBMNY",
          5 "batch_status": "SUCCESS",
          6 "time_created": "2017-08-21T11:22:33Z",
          7 "time_completed": "2017-08-21T11:22:54Z",
          8 "sender_payout_header":
          9 {
          10 "email_subject": "user test case"
          11 },
          12 "amount":
          13 {
          14 "currency": "USD",
          15 "value": "190.0"
          16 },
          17 "fees":
          18 {
          19 "currency": "USD",
          20 "value": "0.0"
          21 }
          22 },
          23 "items": [
          24 {
          25 "payout_item_id": "RWD4Y3H9VV8BA",
          26 "transaction_status": "FAILED",
          27 "payout_item_fee":
          28 {
          29 "currency": "USD",
          30 "value": "0.0"
          31 },
          32 "payout_batch_id": "DQCP2UAJCBMNY",
          33 "payout_item":
          34 {
          35 "recipient_type": "EMAIL",
          36 "amount":
          37 {
          38 "currency": "USD",
          39 "value": "190.0"
          40 },
          41 "note": "payout to receiver",
          42 "receiver": "receiver@example.com",
          43 "sender_item_id": "MSI-2727"
          44 },
          45 "time_processed": "2017-08-21T11:22:44Z",
          46 "errors":
          47 {
          48 "name": "CLOSED_MARKET",
          49 "message": "Market closed and transaction is between 2 different countries",
          50 "information_link": "https://developer.paypal.com/docs/api/payments.payouts-batch/v1/#errors",
          51 "details": []
          52 },
          53 "links": [
          54 {
          55 "href": "https://api-m.sandbox.paypal.com/v1/payments/payouts-item/RWD4Y3H9VV8BA",
          56 "rel": "item",
          57 "method": "GET",
          58 "encType": "application/json"
          59 }]
          60 }],
          61 "links": [
          62 {
          63 "href": "https://api-m.sandbox.paypal.com/v1/payments/payouts/DQCP2UAJCBMNY",
          64 "rel": "self",
          65 "method": "GET",
          66 "encType": "application/json"
          67 }]
          68}

          Test values

          Use the listed test values to trigger positive and negative responses for these payouts actions:

          Create payout

          Positive response test values

          Use the JSON pointer method to simulate this response at POST v1/payments/payouts/.

          TriggerTest valueSimulated response
          items [0] /notePOSPYO001PAYLOAD WITH 201 RESPONSE CODE
          items [0] /notePOSPYO003PAYLOAD WITH 201 RESPONSE CODE FOR VENMO RECEIVER

          Negative response test values

          Use the JSON pointer method to simulate these error responses at POST v1/payments/payouts.

          TriggerTest valueSimulated response
          items [0] /noteERRPYO001SENDER_RESTRICTED
          items [0] /noteERRPYO002SENDER_EMAIL_UNCONFIRMED
          items [0] /noteERRPYO003AUTHORIZATION_ERROR
          items [0] /noteERRPYO005INSUFFICIENT_FUNDS
          items [0] /noteERRPYO006INTERNAL_ERROR
          items [0] /noteERRPYO010VALIDATION_ERROR
          items [0] /noteERRPYO011REQUIRED_SCOPE_MISSING
          items [0] /noteERRPYO012SENDER_LOCKED
          items [0] /sender_batch_idERRPYO013VALIDATION_ERROR FOR VENMO NOTE MISSING
          items [0] /noteERRPYO014USER_BUSINESS_ERROR
          items [0] /noteERRPYO035RATE_LIMIT_VALIDATION
          items [0] /noteERRPYO036REQUEST_TIMEOUT_EXCEEDED
          items [0] /noteERRPYO037SYNC_MODE_NOT_APPLICABLE
          items [0] /noteERRPYO038NON_HOLDING_CURRENCY
          items [0] /noteERRPYO039PREVIOUS_REQUEST_IN_PROGRESS
          items [0] /noteERRPYO040CIP_NOT_VERIFIED

          Show payout details

          Positive response test values

          Use the path parameter in the request URI method to simulate this response at GET v1/payments/payouts.

          Trigger or test valueSimulated response
          /v1/payments/payouts/POSPYO002PAYLOAD WITH 200 RESPONSE CODE

          Negative response test values

          Use the path parameter in the request URI method to simulate these error responses at GET v1/payments/payouts.

          Trigger or test valueSimulated response
          /v1/payments/payouts/ERRPYOB005ACCOUNT_RESTRICTED
          /v1/payments/payouts/ERRPYOB006ACCOUNT_UNCONFIRMED_EMAIL
          /v1/payments/payouts/ERRPYOB007APPROVER_DENIED
          /v1/payments/payouts/ERRPYOB008GAMER_FAILED_COUNTRY_OF_RESIDENCE_CHECK
          /v1/payments/payouts/ERRPYOB009GAMER_FAILED_FUNDING_SOURCE_CHECK
          /v1/payments/payouts/ERRPYOB010GAMING_INVALID_PAYMENT_FLOW
          /v1/payments/payouts/ERRPYOB011NON_HOLDING_CURRENCY
          /v1/payments/payouts/ERRPYOB012PENDING_RECIPIENT_NON_HOLDING_CURRENCY_PAYMENT_PREFERENCE
          /v1/payments/payouts/ERRPYOB013SENDER_STATE_RESTRICTED
          /v1/payments/payouts/ERRPYOB014SPENDING_LIMIT_EXCEEDED
          /v1/payments/payouts/ERRPYOB015TRANSACTION_DECLINED_BY_TRAVEL_RULE
          /v1/payments/payouts/ERRPYO015CLOSED_MARKET
          /v1/payments/payouts/ERRPYO016CURRENCY_COMPLIANCE
          /v1/payments/payouts/ERRPYO017CURRENCY_NOT_SUPPORTED_FOR_RECEIVER
          /v1/payments/payouts/ERRPYO018DUPLICATE_ITEM
          /v1/payments/payouts/ERRPYO019RECEIVER_ACCOUNT_LOCKED
          /v1/payments/payouts/ERRPYO020RECEIVER_COUNTRY_NOT_ALLOWED
          /v1/payments/payouts/ERRPYO021RECEIVER_UNCONFIRMED
          /v1/payments/payouts/ERRPYO022RECEIVER_UNREGISTERED
          /v1/payments/payouts/ERRPYO023RECEIVER_YOUTH_ACCOUNT
          /v1/payments/payouts/ERRPYO024RECEIVING_LIMIT_EXCEEDED
          /v1/payments/payouts/ERRPYO025REGULATORY_BLOCKED
          /v1/payments/payouts/ERRPYO026REGULATORY_PENDING
          /v1/payments/payouts/ERRPYO027RISK_DECLINE
          /v1/payments/payouts/ERRPYO028SELF_PAY_NOT_ALLOWED
          /v1/payments/payouts/ERRPYO029TRANSACTION_LIMIT_EXCEEDED
          /v1/payments/payouts/ERRPYO030UNDEFINED
          /v1/payments/payouts/ERRPYO031ZERO_AMOUNT
          /v1/payments/payouts/ERRPYO032INVALID_RESOURCE_ID
          /v1/payments/payouts/ERRPYO033INTERNAL_ERROR
          /v1/payments/payouts/ERRPYO034INVALID_EMAIL
          /v1/payments/payouts/ERRPYO060RECEIVER_ACCOUNT_LIMITATION

          Cancel payout item

          Positive response test values

          Use the path parameter in the request URI method to simulate this response at POST v1/payments/payouts-item/payouts_item_id/cancel.

          Trigger or test valueSimulated response
          /v1/payments/payouts-item/POSPOI002/cancelPAYLOAD WITH 200 RESPONSE CODE

          Negative response test values

          Use the path parameter in the request URI method to simulate these error responses at POST v1/payments/payouts-item/payouts_item_id/cancel.

          Trigger or test valueSimulated response
          /v1/payments/payouts-item/ERRPOI001/cancelINVALID_RESOURCE_ID
          /v1/payments/payouts-item/ERRPYO004/cancelBATCH_NOT_COMPLETED
          /v1/payments/payouts-item/ERRPYO007/cancelITEM_ALREADY_CANCELLED
          /v1/payments/payouts-item/ERRPYO008/cancelITEM_CANCELLATION_FAILED
          /v1/payments/payouts-item/ERRPYO009/cancelITEM_INCORRECT_STATUS

          Show payout item details

          Positive response test values

          Use the path parameter in the request URI method to simulate this response at GET v1/payments/payouts-item/payouts_item_id.

          Trigger or test valueSimulated response
          /v1/payments/payouts-item/POSPOI001PAYLOAD WITH 200 RESPONSE CODE

          Negative response test values

          Use the path parameter in the request URI method to simulate these error responses at GET v1/payments/payouts-item/payouts_item_id.

          Trigger or test valueSimulated response
          /v1/payments/payouts-item/ERRPYO041CLOSED_MARKET
          /v1/payments/payouts-item/ERRPYO042CURRENCY_COMPLIANCE
          /v1/payments/payouts-item/ERRPYO043CURRENCY_NOT_SUPPORTED_FOR_RECEIVER
          /v1/payments/payouts-item/ERRPYO044RECEIVER_ACCOUNT_LOCKED
          /v1/payments/payouts-item/ERRPYO045RECEIVER_COUNTRY_NOT_ALLOWED
          /v1/payments/payouts-item/ERRPYO046RECEIVER_UNCONFIRMED
          /v1/payments/payouts-item/ERRPYO047RECEIVER_UNREGISTERED
          /v1/payments/payouts-item/ERRPYO048RECEIVER_YOUTH_ACCOUNT
          /v1/payments/payouts-item/ERRPYO049RECEIVING_LIMIT_EXCEEDED
          /v1/payments/payouts-item/ERRPYO050REGULATORY_BLOCKED
          /v1/payments/payouts-item/ERRPYO051REGULATORY_PENDING
          /v1/payments/payouts-item/ERRPYO052RISK_DECLINE
          /v1/payments/payouts-item/ERRPYO053SELF_PAY_NOT_ALLOWED
          /v1/payments/payouts-item/ERRPYO054TRANSACTION_LIMIT_EXCEEDED
          /v1/payments/payouts-item/ERRPYO055UNDEFINED
          /v1/payments/payouts-item/ERRPYO056ZERO_AMOUNT
          /v1/payments/payouts-item/ERRPYO057INVALID_RESOURCE_ID
          /v1/payments/payouts-item/ERRPYO058INTERNAL_ERROR
          /v1/payments/payouts-item/ERRPYO059INVALID_EMAIL
          /v1/payments/payouts-item/ERRPYO061RECEIVER_ACCOUNT_LIMITATION
          /v1/payments/payouts-items/ERRPYOB016ACCOUNT_RESTRICTED
          /v1/payments/payouts-items/ERRPYOB017ACCOUNT_UNCONFIRMED_EMAIL
          /v1/payments/payouts-items/ERRPYOB018APPROVER_DENIED
          /v1/payments/payouts-items/ERRPYOB019GAMER_FAILED_COUNTRY_OF_RESIDENCE_CHECK
          /v1/payments/payouts-items/ERRPYOB020GAMER_FAILED_FUNDING_SOURCE_CHECK
          /v1/payments/payouts-items/ERRPYOB021GAMING_INVALID_PAYMENT_FLOW
          /v1/payments/payouts-items/ERRPYOB022NON_HOLDING_CURRENCY
          /v1/payments/payouts-items/ERRPYOB023PENDING_RECIPIENT_NON_HOLDING_CURRENCY_PAYMENT_PREFERENCE
          /v1/payments/payouts-items/ERRPYOB024SENDER_STATE_RESTRICTED
          /v1/payments/payouts-items/ERRPYOB025SPENDING_LIMIT_EXCEEDED
          /v1/payments/payouts-items/ERRPYOB026TRANSACTION_DECLINED_BY_TRAVEL_RULE

          Batch processing

          Batch status test values

          Use the path parameter in the request URI method to simulate these error responses at GET v1/payments/payouts/payout_batch_id.

          Trigger or test valueSimulated response
          /v1/payments/payouts/ERRPYOB001SUCCESS
          /v1/payments/payouts/ERRPYOB002PENDING
          /v1/payments/payouts/ERRPYOB003PROCESSING
          /v1/payments/payouts/ERRPYOB004DENIED

          Next

          Add payouts features.

          If you accept cookies, we’ll use them to improve and customize your experience and enable our partners to show you personalized PayPal ads when you visit other sites. Manage cookies and learn more