Test and go live with invoicing

DOCSCURRENT

Last updated: Feb 27th, 7:56am

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

Know before you code

Required
Get your credentials

  • Before you trigger a simulation, you'll need to get an access token.
  • Use Postman to explore and test PayPal APIs.

Simulation methods

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

Test values are case sensitive.

Use a JSON pointer in the request payload

Trigger Test value Simulated error response
detail/reference ERRINV002 PERMISSION_DENIED
  1. Request
  2. Response
1curl -X POST \
2 https://api-m.sandbox.paypal.com/v2/invoicing/invoices \
3 -H 'Authorization: Bearer <Access Token>' \
4 -H 'Content-Type: application/json' \
5 -d '{
6 "detail":
7 {
8 "reference": "ERRINV002"
9 }
10}'

Use a path parameter in the request URI

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0010 INVOICE_NOT_FOUND
  1. Request
  2. Response
1curl -X GET \
2 https://api-m.sandbox.paypal.com/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0010 \
3 -H 'Authorization: Bearer <Access Token>' \
4 -H 'Content-Type: application/json'

Test values

Test values are case sensitive.

Generate invoice number

Use the path parameter in the request URI method to simulate the following error responses at POST /v2/invoicing/invoices/generate-next-invoice-number.

Trigger Test value Simulated error response
reference ERRINV066 INTERNAL_SERVER_ERROR
reference ERRINV067 PERMISSION_DENIED

Create invoices

Use the JSON pointer method to simulate the following error responses at POST v2/invoicing/invoices/.

Trigger Test value Simulated positive response
detail.reference ERRINV001 INTERNAL_SERVER_ERROR
detail.reference ERRINV002 PERMISSION_DENIED
detail.reference ERRINV003 UNSUPPORTED_MEDIA_TYPE
detail.reference ERRINV004 VALIDATION_ERROR_EMPTY_BODY
detail.reference ERRINV005 INVALID_REQUEST_GENERIC
detail.reference ERRINV006 INVALID_REQUEST_SCHEMA_VIOLATION

Get invoice

Use the path parameter in the request URI method to simulate the following error responses at GET /v2/invoicing/invoices/{invoice_id}.

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0007 INTERNAL_SERVER_ERROR
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0008 PERMISSION_DENIED
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0009 UNAUTHORIZED_ACCESS
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0010 INVOICE_NOT_FOUND

Delete invoice

Use the path parameter in the request URI method to simulate the following response at DELETE /v2/invoicing/invoices/{invoice_id}.

Trigger or test value Simulated positive response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0059 PAYLOAD WITH 200 RESPONSE CODE

Use the path parameter in the request URI method to simulate the following error responses at DELETE /v2/invoicing/invoices/{invoice_id}.

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0055 INTERNAL_SERVER_ERROR
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0056 PERMISSION_DENIED
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0057 UNAUTHORIZED_ACCESS
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0058 INVOICE_NOT_FOUND

Fully update invoice details

Use the path parameter in the request URI method to simulate the following error responses at PUT /v2/invoicing/invoices/{invoice_id}.

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0060 INTERNAL_SERVER_ERROR
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0061 PERMISSION_DENIED
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0062 UNSUPPORTED_MEDIA_TYPE
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0063 VALIDATION_ERROR_EMPTY_BODY
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0064 INVALID_REQUEST_GENERIC
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0065 INVALID_REQUEST_SCHEMA_VIOLATION

Cancel sent invoice

Use the path parameter in the request URI method to simulate the following response at POST /v2/invoicing/invoices/{invoice_id}/cancel.

Trigger or test value Simulated positive response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0029/cancel PAYLOAD WITH 204 RESPONSE CODE

Use the path parameter in the request URI method to simulate the following error responses at POST /v2/invoicing/invoices/{invoice_id}/cancel.

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0024/cancel INTERNAL_SERVER_ERROR
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0025/cancel PERMISSION_DENIED
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0026/cancel UNAUTHORIZED_ACCESS
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0027/cancel INVOICE_NOT_FOUND
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0028/cancel CANT_CANCEL_INVOICE_IN_DRAFT_STATE

Record payment for invoice

Use the path parameter in the request URI method to simulate the following response at POST /v2/invoicing/invoices/{invoice_id}/payments.

Trigger or test value Simulated positive response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0037/payments PAYLOAD WITH 200 RESPONSE CODE

Use the path parameter in the request URI method to simulate the following error responses at POST /v2/invoicing/invoices/{invoice_id}/payments.

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0031/payments INTERNAL_SERVER_ERROR
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0032/payments PERMISSION_DENIED
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0033/payments UNAUTHORIZED_ACCESS
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0034/payments INVOICE_NOT_FOUND
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0035/payments CANT_PAY_AN_PAID_OR_CANCELED_INVOICE
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0036/payments CANT_PAY_MORE_THAN_INVOICE_AMOUNT

Delete payment

Use the path parameter in the request URI method to simulate the following response at DELETE /v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/payments/{transaction_id}.

Trigger or test value Simulated positive response
/v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/payments/EXT-ABCDEFGHERRINV042 PAYLOAD WITH 200 RESPONSE CODE

Use the path parameter in the request URI method to simulate the following error responses at DELETE /v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/payments/{transaction_id}.

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/payments/EXT-ABCDEFGHERRINV038 INTERNAL_SERVER_ERROR
/v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/payments/EXT-ABCDEFGHERRINV039 PERMISSION_DENIED
/v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/payments/EXT-ABCDEFGHERRINV040 UNAUTHORIZED_ACCESS
/v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/payments/EXT-ABCDEFGHERRINV041 PAYMENT_OR_INVOICE_NOT_FOUND

Record refund for invoice

Use the path parameter in the request URI method to simulate the following response at POST /v2/invoicing/invoices/{invoice_id}/refunds.

Trigger or test value Simulated positive response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0049/refunds PAYLOAD WITH 200 RESPONSE CODE

Use the path parameter in the request URI method to simulate the following error responses at POST /v2/invoicing/invoices/{invoice_id}/refunds.

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0043/refunds INTERNAL_SERVER_ERROR
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0044/refunds PERMISSION_DENIED
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0045/refunds UNAUTHORIZED_ACCESS
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0046/refunds INVOICE_NOT_FOUND
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0047/refunds CANT_REFUND_A_CANCELED_INVOICE
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0048/refunds CANT_REFUND_MORE_THAN_PAYMENT_AMOUNT

Delete refund

Use the path parameter in the request URI method to simulate the following response at DELETE /v2/invoicing/invoices/{invoice_id}/refunds/{transaction_id}.

Trigger or test value Simulated positive response
/v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/refunds/EXT-ABCDEFGHERRINV054 PAYLOAD WITH 200 RESPONSE CODE

Use the path parameter in the request URI method to simulate the following error responses at DELETE /v2/invoicing/invoices/{invoice_id}/refunds/{transaction_id}/delete.

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/refunds/EXT-ABCDEFGHERRINV050 INTERNAL_SERVER_ERROR
/v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/refunds/EXT-ABCDEFGHERRINV051 PERMISSION_DENIED
/v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/refunds/EXT-ABCDEFGHERRINV052 UNAUTHORIZED_ACCESS
/v2/invoicing/invoices/INV2-ABCD-1234-EFGH-5678/refunds/EXT-ABCDEFGHERRINV053 REFUND_OR_INVOICE_NOT_FOUND

Send invoice reminder

Use the path parameter in the request URI method to simulate the following response at POST /v2/invoicing/invoices/{invoice_id}/remind.

Trigger or test value Simulated positive response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0023/remind PAYLOAD WITH 200 RESPONSE CODE

Use the path parameter in the request URI method to simulate the following error responses at POST /v2/invoicing/invoices/{invoice_id}/remind.

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0017/remind INTERNAL_SERVER_ERROR
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0018/remind PERMISSION_DENIED
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0019/remind UNAUTHORIZED_ACCESS
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0020/remind INVOICE_NOT_FOUND
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0021/remind CANT_REMIND_INVOICE_IN_DRAFT_STATE
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0022/remind CANT_REMIND_INVOICE_WITHOUT_BILLING_INFO

Send invoice

Use the path parameter in the request URI method to simulate the following response at POST /v2/invoicing/invoices/{invoice_id}/send.

Trigger or test value Simulated positive response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0016/send PAYLOAD WITH 200 RESPONSE CODE

Use the path parameter in the request URI method to simulate the following error responses at POST /v2/invoicing/invoices/{invoice_id}/send.

Trigger or test value Simulated error response
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0011/send INTERNAL_SERVER_ERROR
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0012/send PERMISSION_DENIED
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0013/send UNAUTHORIZED_ACCESS
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0014/send INVOICE_NOT_FOUND
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0015/send CANT_SEND_INVOICE_WITHOUT_EMAIL
/v2/invoicing/invoices/INV2-ABCD-1234-EINV-0030/send CANT_SEND_ALREADY_SENT_INVOICE

Search invoices

Use the path parameter in the request URI method to simulate the following error responses at POST /v2/invoicing/search-invoices.

Trigger or test value Simulated error response
ERRINV068 INTERNAL_SERVER_ERROR
ERRINV069 PERMISSION_DENIED
ERRINV070 INVALID_REQUEST

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