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.