openapi: 3.0.3 info: title: Paypal Subscriptions Authorizations Templates API description: You can use billing plans and subscriptions to create subscriptions that process recurring PayPal payments for physical or digital goods, or services. A plan includes pricing and billing cycle information that defines the amount and frequency of charge for a subscription. You can also define a fixed plan, such as a $5 basic plan or a volume- or graduated-based plan with pricing tiers based on the quantity purchased. For more information, see Subscriptions Overview. version: '1.6' contact: {} servers: - url: https://api-m.sandbox.paypal.com description: PayPal Sandbox Environment - url: https://api-m.paypal.com description: PayPal Live Environment tags: - name: Templates description: Use the `/templates` resource to create, list, show details for, update, and delete invoice templates. Use the `/templates` resource when you create a third-party invoicing application. For instance, a business can create a template with predefined invoice data. Later, the business can select the template to populate the invoice data.
Note: To upload a logo to display on an invoice, you can use the Template Settings dashboard to create a template. When you create an invoice, you can use the URI for that logo.paths: /v2/invoicing/templates: get: summary: Paypal List templates description: Lists merchant-created templates with associated details. The associated details include the emails, addresses, and phone numbers from the user's PayPal profile.
Note: Every merchant starts with three PayPal system templates that are optimized for the unit type billed. The template includes `Quantity`, `Hours`, and `Amount`.operationId: templates.create responses: '201': description: A successful request returns the HTTP `201 Created` status code. A JSON response body that shows template details is returned if you set
prefer=return=representation.
content:
application/json:
schema:
$ref: '#/components/schemas/template'
multipart/mixed:
schema:
$ref: '#/components/schemas/template'
'400':
description: Invalid request.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/error_400'
- $ref: '#/components/schemas/templates.create-400'
multipart/mixed:
schema:
allOf:
- $ref: '#/components/schemas/error_400'
- $ref: '#/components/schemas/templates.create-400'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/error_422'
- $ref: '#/components/schemas/templates.create-422'
multipart/mixed:
schema:
allOf:
- $ref: '#/components/schemas/error_422'
- $ref: '#/components/schemas/templates.create-422'
default:
$ref: '#/components/responses/default'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/template'
required: true
security:
- Oauth2:
- https://uri.paypal.com/services/invoicing/invoices/readwrite
tags:
- Templates
/v2/invoicing/templates/{template_id}:
get:
summary: Paypal Show template details
description: Shows details for a template, by ID.
operationId: templates.get
responses:
'200':
description: A successful request returns the HTTP `200 OK` status code and a JSON response body that shows template details.
content:
application/json:
schema:
$ref: '#/components/schemas/template'
examples:
'0':
$ref: '#/components/examples/template'
'1':
$ref: '#/components/examples/template_1'
multipart/mixed:
schema:
$ref: '#/components/schemas/template'
'403':
description: Authorization Error.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/error_403'
- $ref: '#/components/schemas/templates.get-403'
multipart/mixed:
schema:
allOf:
- $ref: '#/components/schemas/error_403'
- $ref: '#/components/schemas/templates.get-403'
'404':
description: Resource Not Found.
content:
application/json:
schema:
$ref: '#/components/schemas/error_404'
multipart/mixed:
schema:
$ref: '#/components/schemas/error_404'
default:
$ref: '#/components/responses/default'
parameters:
- $ref: '#/components/parameters/template_id'
security:
- Oauth2:
- https://uri.paypal.com/services/invoicing/invoices/read
tags:
- Templates
put:
summary: Paypal Fully update template
description: Fully updates a template, by ID. In the JSON request body, include a complete `template` object. This call does not support partial updates.
operationId: templates.update
responses:
'200':
description: A successful request returns the HTTP `200 OK` status code. A JSON response body that shows template details is returned if you set prefer=return=representation.
content:
application/json:
schema:
$ref: '#/components/schemas/template'
'400':
description: Invalid request.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/error_400'
- $ref: '#/components/schemas/templates.update-400'
'403':
description: Authorization Error.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/error_403'
- $ref: '#/components/schemas/403'
'404':
description: Resource Not Found.
content:
application/json:
schema:
$ref: '#/components/schemas/error_404'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/error_422'
- $ref: '#/components/schemas/templates.update-422'
default:
$ref: '#/components/responses/default'
parameters:
- $ref: '#/components/parameters/template_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/template'
description: A representation of changes to make in the template.
required: true
security:
- Oauth2:
- https://uri.paypal.com/services/invoicing/invoices/readwrite
tags:
- Templates
delete:
summary: Paypal Delete template
description: Deletes a template, by ID.
operationId: templates.delete
responses:
'204':
description: A successful request returns the HTTP `204 No Content` status code with no JSON response body.
'400':
description: Invalid request.
content:
application/json:
schema:
$ref: '#/components/schemas/error_400'
multipart/mixed:
schema:
$ref: '#/components/schemas/error_400'
'403':
description: Authorization Error.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/error_403'
- $ref: '#/components/schemas/templates.delete-403'
multipart/mixed:
schema:
allOf:
- $ref: '#/components/schemas/error_403'
- $ref: '#/components/schemas/templates.delete-403'
'404':
description: Resource Not Found.
content:
application/json:
schema:
$ref: '#/components/schemas/error_404'
multipart/mixed:
schema:
$ref: '#/components/schemas/error_404'
'422':
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: '#/components/schemas/error_422'
multipart/mixed:
schema:
$ref: '#/components/schemas/error_422'
default:
$ref: '#/components/responses/default'
parameters:
- $ref: '#/components/parameters/template_id'
security:
- Oauth2:
- https://uri.paypal.com/services/invoicing/invoices/readwrite
tags:
- Templates
components:
schemas:
file_reference:
type: object
title: File Reference
description: The file reference. Can be a file in PayPal MediaServ, PayPal DMS, or other custom store.
properties:
id:
type: string
description: The ID of the referenced file.
minLength: 1
maxLength: 255
reference_url:
type: string
description: The reference URL for the file.
format: uri
minLength: 1
maxLength: 2000
content_type:
type: string
description: The [Internet Assigned Numbers Authority (IANA) media type of the file](https://www.iana.org/assignments/media-types/media-types.xhtml).
create_time:
$ref: '#/components/schemas/date_time'
description: The date and time when the file was created, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
size:
type: string
description: The size of the file, in bytes.
pattern: ^[0-9]+$
templates.update-400:
properties:
details:
type: array
items:
anyOf:
- title: TEMPLATE_NAME_ALREADY_EXISTS
properties:
issue:
type: string
enum:
- TEMPLATE_NAME_ALREADY_EXISTS
description:
type: string
enum:
- Template name already exists.
- title: INVALID_STRING_LENGTH
properties:
issue:
type: string
enum:
- INVALID_STRING_LENGTH
description:
type: string
enum:
- Template name length should be between 1 and 500.
- title: INVALID_STRING_LENGTH
properties:
issue:
type: string
enum:
- INVALID_STRING_LENGTH
description:
type: string
enum:
- Currency code length should be 3 characters.
- title: INVALID_STRING_LENGTH
properties:
issue:
type: string
enum:
- INVALID_STRING_LENGTH
description:
type: string
enum:
- Value of the field is either too short or too long.
- title: INVALID_STRING_MAX_LENGTH
properties:
issue:
type: string
enum:
- INVALID_STRING_MAX_LENGTH
description:
type: string
enum:
- Value of the field is too long.
- title: INVALID_PARAMETER_SYNTAX
properties:
issue:
type: string
enum:
- INVALID_PARAMETER_SYNTAX
description:
type: string
enum:
- Value of the field does not conform to the expected format.
error_404:
type: object
title: Not found Error
description: The server has not found anything matching the request URI. This either means that the URI is incorrect or the resource is not available.
properties:
name:
type: string
enum:
- RESOURCE_NOT_FOUND
message:
type: string
enum:
- The specified resource does not exist.
details:
type: array
items:
$ref: '#/components/schemas/error_details'
debug_id:
type: string
description: The PayPal internal ID. Used for correlation purposes.
links:
description: An array of request-related [HATEOAS links](https://en.wikipedia.org/wiki/HATEOAS).
type: array
minItems: 0
maxItems: 10000
items:
$ref: '#/components/schemas/error_link_description'
error_409:
type: object
title: Resource Conflict Error
description: The server has detected a conflict while processing this request.
properties:
name:
type: string
enum:
- RESOURCE_CONFLICT
message:
type: string
enum:
- The server has detected a conflict while processing this request.
details:
type: array
items:
$ref: '#/components/schemas/error_details'
debug_id:
type: string
description: The PayPal internal ID. Used for correlation purposes.
links:
description: An array of request-related [HATEOAS links](https://en.wikipedia.org/wiki/HATEOAS).
type: array
minItems: 0
maxItems: 10000
items:
$ref: '#/components/schemas/error_link_description'
language:
type: string
description: The [language tag](https://tools.ietf.org/html/bcp47#section-2) for the language in which to localize the error-related strings, such as messages, issues, and suggested actions. The tag is made up of the [ISO 639-2 language code](https://www.loc.gov/standards/iso639-2/php/code_list.php), the optional [ISO-15924 script tag](https://www.unicode.org/iso15924/codelists.html), and the [ISO-3166 alpha-2 country code](/docs/integration/direct/rest/country-codes/).
format: ppaas_common_language_v3
maxLength: 10
minLength: 2
pattern: ^[a-z]{2}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}))?$
payment_term:
type: object
title: Payment Term
description: The payment term of the invoice. Payment can be due upon receipt, a specified date, or in a set number of days.
properties:
term_type:
description: The payment term. Payment can be due upon receipt, a specified date, or in a set number of days.
$ref: '#/components/schemas/payment_term_type'
phone_type:
type: string
title: Phone Type
description: The phone type.
enum:
- FAX
- HOME
- MOBILE
- OTHER
- PAGER
'403':
properties:
details:
type: array
items:
anyOf:
- title: PERMISSION_DENIED
properties:
issue:
type: string
enum:
- PERMISSION_DENIED
description:
type: string
enum:
- The requested invoice is not associated with the requested user.
link_description:
type: object
title: Link Description
description: The request-related [HATEOAS link](/docs/api/reference/api-responses/#hateoas-links) information.
required:
- href
- rel
properties:
href:
type: string
description: The complete target URL. To make the related call, combine the method with this [URI Template-formatted](https://tools.ietf.org/html/rfc6570) link. For pre-processing, include the `$`, `(`, and `)` characters. The `href` is the key HATEOAS component that links a completed call with a subsequent call.
rel:
type: string
description: The [link relation type](https://tools.ietf.org/html/rfc5988#section-4), which serves as an ID for a link that unambiguously describes the semantics of the link. See [Link Relations](https://www.iana.org/assignments/link-relations/link-relations.xhtml).
method:
type: string
description: The HTTP method required to make the related call.
enum:
- GET
- POST
- PUT
- DELETE
- HEAD
- CONNECT
- OPTIONS
- PATCH
item:
type: object
title: Invoice Item
description: An array of invoice line item information. The maximum items for an invoice is `100`.
properties:
id:
type: string
description: The ID of the invoice line item.
readOnly: true
maxLength: 22
name:
type: string
description: The item name for the invoice line item.
maxLength: 200
description:
type: string
description: The item description for the invoice line item.
maxLength: 1000
quantity:
type: string
maxLength: 14
minLength: 0
description: The quantity of the item that the invoicer provides to the payer. Value is from `-1000000` to `1000000`. Supports up to five decimal places.
unit_amount:
$ref: '#/components/schemas/money'
description: The unit price of the item. This does not include tax and discount. Value is from `-1000000` to `1000000`. Supports up to two decimal places.
tax:
$ref: '#/components/schemas/tax'
description: The tax associated with the item. The tax amount is added to the item total. Value is from `0` to `100`. Supports up to five decimal places.
item_date:
$ref: '#/components/schemas/date_no_time'
description: The date when the item or service was provided, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6). For example, *yyyy*-*MM*-*dd*T*z*.
discount:
$ref: '#/components/schemas/discount'
description: Discount as a percent or amount at invoice level. The invoice discount amount is subtracted from the item total.
unit_of_measure:
description: The unit of measure for the invoiced item. For `AMOUNT` the `unit_amount` and `quantity` are not shown on the invoice.Note: If your specify different `unit_of_measure` values for the same invoice, the invoice uses the first value.$ref: '#/components/schemas/unit_of_measure' required: - name - quantity - unit_amount payment_term_type: type: string title: Payment Term Type description: The payment term. Payment can be due upon receipt, a specified date, or in a set number of days. enum: - DUE_ON_RECEIPT - DUE_ON_DATE_SPECIFIED - NET_10 - NET_15 - NET_30 - NET_45 - NET_60 - NET_90 - NO_DUE_DATE date_no_time: type: string description: The stand-alone date, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6). To represent special legal values, such as a date of birth, you should use dates with no associated time or time-zone data. Whenever possible, use the standard `date_time` type. This regular expression does not validate all dates. For example, February 31 is valid and nothing is known about leap years. format: ppaas_date_notime_v2 minLength: 10 maxLength: 10 pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$ aggregated_discount: type: object title: Aggregated Discount description: The discount. Can be an item- or invoice-level discount, or both. Can be applied as a percent or amount. If you provide both amount and percent, amount takes precedent. properties: invoice_discount: $ref: '#/components/schemas/discount' description: The discount as a percent or amount at invoice level. The invoice discount amount is subtracted from the item total. item_discount: $ref: '#/components/schemas/money' description: The discount as a percent or amount at item level. The item discount amount is subtracted from each item amount. error_403: type: object title: Not Authorized Error description: 'The client is not authorized to access this resource, although it may have valid credentials. ' properties: name: type: string enum: - NOT_AUTHORIZED message: type: string enum: - Authorization failed due to insufficient permissions. details: type: array items: $ref: '#/components/schemas/error_details' debug_id: type: string description: The PayPal internal ID. Used for correlation purposes. links: description: An array of request-related [HATEOAS links](https://en.wikipedia.org/wiki/HATEOAS). type: array minItems: 0 maxItems: 10000 items: $ref: '#/components/schemas/error_link_description' error_422: type: object title: Unprocessable Entity Error description: The requested action cannot be performed and may require interaction with APIs or processes outside of the current request. This is distinct from a 500 response in that there are no systemic problems limiting the API from performing the request. properties: name: type: string enum: - UNPROCESSABLE_ENTITY message: type: string enum: - The requested action could not be performed, semantically incorrect, or failed business validation. details: type: array items: $ref: '#/components/schemas/error_details' debug_id: type: string description: The PayPal internal ID. Used for correlation purposes. links: description: An array of request-related [HATEOAS links](https://en.wikipedia.org/wiki/HATEOAS). type: array minItems: 0 maxItems: 10000 items: $ref: '#/components/schemas/error_link_description' template_item_field: type: string title: Template Item Field description: The field names for the invoice line items in the template. enum: - ITEMS_QUANTITY - ITEMS_DESCRIPTION - ITEMS_DATE - ITEMS_DISCOUNT - ITEMS_TAX templates.update-422: properties: details: type: array items: anyOf: - title: CANNOT_CANCEL_DRAFT_INVOICE properties: issue: type: string enum: - CANNOT_CANCEL_DRAFT_INVOICE description: type: string enum: - Cannot cancel a draft invoice. template_display_preference: type: object title: Template Display Preference description: The template display preference. properties: hidden: type: boolean description: Indicates whether to show or hide this field. default: false error_details: title: Error Details type: object description: The error details. Required for client-side `4XX` errors. properties: field: type: string description: The field that caused the error. If this field is in the body, set this value to the field's JSON pointer value. Required for client-side errors. value: type: string description: The value of the field that caused the error. location: type: string description: The location of the field that caused the error. Value is `body`, `path`, or `query`. default: body issue: type: string description: The unique, fine-grained application-level error code. description: type: string description: The human-readable description for an issue. The description can change over the lifetime of an API, so clients must not depend on this value. required: - issue name: type: object title: Name description: The name of the party. properties: prefix: type: string description: The prefix, or title, to the party's name. maxLength: 140 given_name: type: string description: When the party is a person, the party's given, or first, name. maxLength: 140 surname: type: string description: When the party is a person, the party's surname or family name. Also known as the last name. Required when the party is a person. Use also to store multiple surnames including the matronymic, or mother's, surname. maxLength: 140 middle_name: type: string description: When the party is a person, the party's middle name. Use also to store multiple middle names including the patronymic, or father's, middle name. maxLength: 140 suffix: type: string description: The suffix for the party's name. maxLength: 140 alternate_full_name: type: string description: DEPRECATED. The party's alternate name. Can be a business name, nickname, or any other name that cannot be split into first, last name. Required when the party is a business. maxLength: 300 full_name: type: string description: When the party is a person, the party's full name. maxLength: 300 error_link_description: title: Link Description description: The request-related [HATEOAS link](/api/rest/responses/#hateoas-links) information. type: object required: - href - rel properties: href: description: The complete target URL. To make the related call, combine the method with this [URI Template-formatted](https://tools.ietf.org/html/rfc6570) link. For pre-processing, include the `$`, `(`, and `)` characters. The `href` is the key HATEOAS component that links a completed call with a subsequent call. type: string minLength: 0 maxLength: 20000 pattern: ^.*$ rel: description: The [link relation type](https://tools.ietf.org/html/rfc5988#section-4), which serves as an ID for a link that unambiguously describes the semantics of the link. See [Link Relations](https://www.iana.org/assignments/link-relations/link-relations.xhtml). type: string minLength: 0 maxLength: 100 pattern: ^.*$ method: description: The HTTP method required to make the related call. type: string minLength: 3 maxLength: 7 pattern: ^[A-Z]*$ enum: - CONNECT - DELETE - GET - HEAD - OPTIONS - PATCH - POST - PUT phone_detail: type: object title: Phone Detail description: The phone details. Includes the phone number and type. required: - phone_type allOf: - $ref: '#/components/schemas/phone' - properties: phone_type: $ref: '#/components/schemas/phone_type' templates.delete-403: properties: details: type: array items: anyOf: - title: PERMISSION_DENIED properties: issue: type: string enum: - PERMISSION_DENIED description: type: string enum: - The requested template is not associated with the requested user. - title: CANNOT_DELETE_GLOBAL_TEMPLATE properties: issue: type: string enum: - CANNOT_DELETE_GLOBAL_TEMPLATE description: type: string enum: - Global templates cannot be deleted. template_subtotal_setting: type: object title: Template Subtotal Setting description: The template subtotal setting. Includes the field name and display preference. properties: field_name: description: The field name in `template_data` for which to map corresponding display preferences. $ref: '#/components/schemas/template_subtotal_field' display_preference: description: The display preference. $ref: '#/components/schemas/template_display_preference' phone: type: object title: Phone description: The phone number, in its canonical international [E.164 numbering plan format](https://www.itu.int/rec/T-REC-E.164/en). properties: country_code: type: string description: The country calling code (CC), in its canonical international [E.164 numbering plan format](https://www.itu.int/rec/T-REC-E.164/en). The combined length of the CC and the national number must not be greater than 15 digits. The national number consists of a national destination code (NDC) and subscriber number (SN). minLength: 1 maxLength: 3 pattern: ^[0-9]{1,3}?$ national_number: type: string description: The national number, in its canonical international [E.164 numbering plan format](https://www.itu.int/rec/T-REC-E.164/en). The combined length of the country calling code (CC) and the national number must not be greater than 15 digits. The national number consists of a national destination code (NDC) and subscriber number (SN). minLength: 1 maxLength: 14 pattern: ^[0-9]{1,14}?$ extension_number: type: string description: The extension number. minLength: 1 maxLength: 15 pattern: ^[0-9]{1,15}?$ required: - country_code - national_number templates.get-403: properties: details: type: array items: anyOf: - title: PERMISSION_DENIED properties: issue: type: string enum: - PERMISSION_DENIED description: type: string enum: - The requested template is not associated with the requested user. amount_summary_detail: type: object title: Invoice Amount Summary description: The invoice amount summary of item total, discount, tax total, and shipping. properties: currency_code: $ref: '#/components/schemas/currency_code' value: type: string description: The value, which might be:
Note: This feature is not available for users in `India`, `Brazil`, or `Israel`.default: false minimum_amount_due: $ref: '#/components/schemas/money' description: The minimum amount allowed for a partial payment. Valid only when `allow_partial_payment` is `true`. templates.create-422: properties: details: type: array items: anyOf: - title: CANNOT_CANCEL_DRAFT_INVOICE properties: issue: type: string enum: - CANNOT_CANCEL_DRAFT_INVOICE description: type: string enum: - Cannot cancel a draft invoice. detail: title: Invoice_Detail description: The details of the invoice like notes, terms and conditions, memo, attachments. required: - currency_code properties: reference: type: string description: The reference data. Includes a post office (PO) number. maxLength: 120 currency_code: $ref: '#/components/schemas/currency_code' description: The [three-character ISO-4217 currency code](/docs/integration/direct/rest/currency-codes/) that identifies the currency. note: type: string description: A note to the invoice recipient. Also appears on the invoice notification email. maxLength: 4000 terms_and_conditions: type: string description: The general terms of the invoice. Can include return or cancellation policy and other terms and conditions. maxLength: 4000 memo: type: string description: A private bookkeeping memo for the user. maxLength: 500 attachments: type: array description: An array of PayPal IDs for the files that are attached to an invoice. maximum: 5 items: $ref: '#/components/schemas/file_reference' '400': properties: details: type: array items: anyOf: - title: INVALID_INTEGER_MAX_VALUE properties: issue: type: string enum: - INVALID_INTEGER_MAX_VALUE description: type: string enum: - Value exceeds max value. - title: INVALID_INTEGER_MIN_VALUE properties: issue: type: string enum: - INVALID_INTEGER_MIN_VALUE description: type: string enum: - Value less than minimum value. templates: type: object title: Templates minItems: 1 description: An array of merchant-created templates with associated details that include the emails, addresses, and phone numbers from the user's PayPal profile. properties: addresses: type: array description: An array of addresses in the user's PayPal profile. items: $ref: '#/components/schemas/address_portable' readOnly: true emails: description: An array of emails in the user's PayPal profile. $ref: '#/components/schemas/email_address' readOnly: true phones: type: array description: An array of phone numbers in the user's PayPal profile. items: $ref: '#/components/schemas/phone_detail' templates: type: array description: An array of details for each template. If `fields` is `none`, returns only the template name, ID, and default status. items: $ref: '#/components/schemas/template' links: type: array description: An array of request-related [HATEOAS links](/docs/api/reference/api-responses/#hateoas-links). readOnly: true items: $ref: '#/components/schemas/link_description' readOnly: true discount: type: object title: Discount description: The discount as a percent or amount at invoice level. The invoice discount amount is subtracted from the item total. properties: percent: $ref: '#/components/schemas/percentage' description: The discount as a percentage value. Value is from `0` to `100`. Supports up to five decimal places. amount: $ref: '#/components/schemas/money' description: The invoice level discount amount. Value is from `0` to `1000000`. Supports up to two decimal places. money: type: object title: Money description: The currency and amount for a financial transaction, such as a balance or payment due. properties: currency_code: $ref: '#/components/schemas/currency_code' value: type: string description: The value, which might be:
Note: The template name must be unique.maxLength: 500 minLength: 1 default_template: type: boolean description: Indicates whether this template is the default template. A invoicer can have one default template. template_info: $ref: '#/components/schemas/template_info' description: The template details. Includes invoicer business information, invoice recipients, items, and configuration. settings: description: The template settings. Describes which fields to show or hide when you create an invoice. $ref: '#/components/schemas/template_settings' unit_of_measure: $ref: '#/components/schemas/unit_of_measure' description: The unit of measure for the template. Value is quantity, hours, or amount. standard_template: type: boolean description: Indicates whether this template is a invoicer-created custom template. The system generates non-custom templates. readOnly: true links: type: array description: An array of request-related [HATEOAS links](/docs/api/reference/api-responses/#hateoas-links). readOnly: true items: $ref: '#/components/schemas/link_description' readOnly: true template_info: type: object title: Template Information description: The template details. Includes invoicer business information, invoice recipients, items, and configuration. properties: detail: $ref: '#/components/schemas/template_detail' description: The template-related details. Includes notes, terms and conditions, memo, and attachments. invoicer: $ref: '#/components/schemas/invoicer_info' description: The invoicer information. Includes business name, email, address, phone, fax, tax ID, additional notes, and logo URL. primary_recipients: type: array items: $ref: '#/components/schemas/recipient_info' maxItems: 100 description: The billing and shipping information. Includes name, email, address, phone, and language. additional_recipients: type: array maxItems: 100 description: 'An array of one or more CC: emails to which notifications are sent. If you omit this parameter, a notification is sent to all CC: email addresses that are part of the invoice.
Note: Valid values are email addresses in the `additional_recipients` value associated with the invoice.' items: $ref: '#/components/schemas/email_address' items: type: array description: An array of invoice line-item information. maxItems: 100 items: $ref: '#/components/schemas/item' configuration: $ref: '#/components/schemas/template_configuration' description: The template configuration details. Includes tax information, tip, and partial payment. amount: $ref: '#/components/schemas/amount_summary_detail' description: The invoice amount summary of the item total, discount, tax total, and shipping. due_amount: $ref: '#/components/schemas/money' description: The amount due for the invoice. readOnly: true business_name: type: object title: Business Name description: The business name of the party. properties: business_name: type: string description: Required. The business name of the party. maxLength: 300 amount_with_breakdown: type: object title: Amount with Breakdown description: The breakdown of the amount. Includes total item amount, total tax amount, custom amount, and shipping and discounts, if any. properties: item_total: $ref: '#/components/schemas/money' description: The subtotal for all items. Must equal the sum of (`items[].unit_amount` * `items[].quantity`) for all items. discount: $ref: '#/components/schemas/aggregated_discount' description: The discount can be at the item or invoice level, or both. Can be applied as a percent or amount. If you provide both amount and percent, amount takes precedent. tax_total: $ref: '#/components/schemas/money' description: The aggregated amount of the item and shipping taxes. shipping: $ref: '#/components/schemas/shipping_cost' description: The shipping fee for all items. Includes tax on shipping. custom: $ref: '#/components/schemas/custom_amount' description: The custom amount to apply to an invoice. If you include a label, you must include the custom amount. template_configuration: type: object title: Template Configuration description: The template configuration details. Includes tax information, tip, and partial payment. properties: tax_calculated_after_discount: type: boolean description: Indicates whether the tax is calculated before or after a discount. If `false`, the tax is calculated before a discount. If `true`, the tax is calculated after a discount. default: true tax_inclusive: type: boolean description: Indicates whether the unit price includes tax. default: false allow_tip: type: boolean description: Indicates whether the invoice enables the customer to enter a tip amount during payment. If `true`, the invoice shows a tip amount field so that the customer can enter a tip amount. If `false`, the invoice does not show a tip amount field.
Note: This feature is not available for users in `Hong Kong`, `Taiwan`, `India`, or `Japan`.default: false partial_payment: $ref: '#/components/schemas/partial_payment' description: The partial payment details. Includes the minimum amount that the invoicer wants the payer to pay. address_portable: type: object title: Portable Postal Address (Medium-Grained) description: 'The portable international postal address. Maps to [AddressValidationMetadata](https://github.com/googlei18n/libaddressinput/wiki/AddressValidationMetadata) and HTML 5.1 [Autofilling form controls: the autocomplete attribute](https://www.w3.org/TR/html51/sec-forms.html#autofilling-form-controls-the-autocomplete-attribute).' properties: address_line_1: type: string description: The first line of the address. For example, number or street. For example, `173 Drury Lane`. Required for data entry and compliance and risk checks. Must contain the full address. maxLength: 300 address_line_2: type: string description: The second line of the address. For example, suite or apartment number. maxLength: 300 address_line_3: type: string description: The third line of the address, if needed. For example, a street complement for Brazil, direction text, such as `next to Walmart`, or a landmark in an Indian address. maxLength: 100 admin_area_4: type: string description: The neighborhood, ward, or district. Smaller than `admin_area_level_3` or `sub_locality`. Value is:
Craven House.
maxLength: 100
sub_building:
type: string
description: The first-order entity below a named building or location that represents the sub-premise. Usually a single building within a collection of buildings with a common name. Can be a flat, story, floor, room, or apartment.
maxLength: 100
required:
- country_code
template_subtotal_field:
type: string
title: Template Subtotal Field
description: The field names in the template for discount, shipping, and custom amounts.
enum:
- DISCOUNT
- SHIPPING
- CUSTOM
error_503:
type: object
title: Service Unavailable Error
description: The server is temporarily unable to handle the request, for example, because of planned maintenance or downtime.
properties:
name:
type: string
enum:
- SERVICE_UNAVAILABLE
message:
type: string
enum:
- Service Unavailable.
debug_id:
type: string
description: The PayPal internal ID. Used for correlation purposes.
links:
description: An array of request-related [HATEOAS links](https://en.wikipedia.org/wiki/HATEOAS).
type: array
minItems: 0
maxItems: 10000
items:
$ref: '#/components/schemas/error_link_description'
example:
name: SERVICE_UNAVAILABLE
message: Service Unavailable.
debug_id: 90957fca61718
information_link: https://developer.paypal.com/docs/api/orders/v2/#error-SERVICE_UNAVAILABLE
error_400:
type: object
title: Bad Request Error
description: Request is not well-formed, syntactically incorrect, or violates schema.
properties:
name:
type: string
enum:
- INVALID_REQUEST
message:
type: string
enum:
- Request is not well-formed, syntactically incorrect, or violates schema.
details:
type: array
items:
$ref: '#/components/schemas/error_details'
debug_id:
type: string
description: The PayPal internal ID. Used for correlation purposes.
links:
description: An array of request-related [HATEOAS links](https://en.wikipedia.org/wiki/HATEOAS).
type: array
minItems: 0
maxItems: 10000
items:
$ref: '#/components/schemas/error_link_description'
template_detail:
type: object
title: Template Detail
description: The template-related details. Includes notes, terms and conditions, memo, and attachments.
allOf:
- $ref: '#/components/schemas/detail'
- properties:
payment_term:
$ref: '#/components/schemas/payment_term'
description: The payment due date for the invoice. Value is either but not both term_type or due_date.
metadata:
$ref: '#/components/schemas/template_metadata'
description: The audit metadata. Captures all template actions on create and update.
currency_code:
description: The [three-character ISO-4217 currency code](/docs/integration/direct/rest/currency-codes/) that identifies the currency.
type: string
format: ppaas_common_currency_code_v2
minLength: 3
maxLength: 3
template_item_setting:
type: object
title: Template Item Setting
description: The template item setting. Sets a template as the default template or edit template.
properties:
field_name:
description: The field name in `template_data` for which to map corresponding display preferences.
$ref: '#/components/schemas/template_item_field'
display_preference:
description: The display preference.
$ref: '#/components/schemas/template_display_preference'
contact_name_address:
type: object
title: Contact Information
description: The contact information of the user. Includes name and address.
allOf:
- $ref: '#/components/schemas/business_name'
- properties:
name:
$ref: '#/components/schemas/name'
description: The first and Last name of the recipient.
address:
$ref: '#/components/schemas/address_portable'
description: The address of the recipient.
shipping_cost:
type: object
title: Shipping Cost
description: The shipping fee for all items. Includes tax on shipping.
properties:
amount:
$ref: '#/components/schemas/money'
description: The shipping amount. Value is from `0` to `1000000`. Supports up to two decimal places.
tax:
$ref: '#/components/schemas/tax'
description: The tax associated with the shipping.
country_code:
type: string
description: The [two-character ISO 3166-1 code](/docs/integration/direct/rest/country-codes/) that identifies the country or region.Note: The country code for Great Britain isformat: ppaas_common_country_code_v2 maxLength: 2 minLength: 2 pattern: ^([A-Z]{2}|C2)$ tax: type: object title: Tax description: The tax information. Includes the tax name and tax rate of invoice items. The tax amount is added to the item total. properties: name: type: string description: The name of the tax applied on the invoice items. maxLength: 100 percent: $ref: '#/components/schemas/percentage' description: The tax rate. Value is from `0` to `100`. Supports up to five decimal places. amount: $ref: '#/components/schemas/money' description: The calculated tax amount. The tax amount is added to the item total. readOnly: true required: - name - percent template_settings: type: object title: Template Settings description: The template settings. Sets a template as the default template or edit template. properties: template_item_settings: type: array description: The template item headers display preference. items: $ref: '#/components/schemas/template_item_setting' template_subtotal_settings: type: array description: The template subtotal headers display preference. items: $ref: '#/components/schemas/template_subtotal_setting' error_401: type: object title: Unauthorized Error description: Authentication failed due to missing Authorization header, or invalid authentication credentials. properties: name: type: string enum: - AUTHENTICATION_FAILURE message: type: string enum: - Authentication failed due to missing authorization header, or invalid authentication credentials. details: type: array items: $ref: '#/components/schemas/error_details' debug_id: type: string description: The PayPal internal ID. Used for correlation purposes. links: description: An array of request-related [HATEOAS links](https://en.wikipedia.org/wiki/HATEOAS). type: array minItems: 0 maxItems: 10000 items: $ref: '#/components/schemas/error_link_description' billing_info: type: object title: Billing Information description: The billing information of the invoice recipient. Includes name, address, email, phone, and language. allOf: - $ref: '#/components/schemas/contact_name_address' - properties: email_address: $ref: '#/components/schemas/email_address' description: The invoice recipient email address. If you omit this value, the invoice is payable and a notification email is not sent. phones: type: array items: $ref: '#/components/schemas/phone_detail' description: The invoice recipient's phone numbers. Extension number is not supported. additional_info: type: string description: Any additional information about the recipient. maxLength: 40 language: $ref: '#/components/schemas/language' description: The language in which to show the invoice recipient's email message. Used only when the recipient does not have a PayPal account. If you omit the language and the recipient does not have a PayPal account, the email message is sent in the language of the merchant's PayPal account. templates.create-400: properties: details: type: array items: anyOf: - title: TEMPLATE_NAME_ALREADY_EXISTS properties: issue: type: string enum: - TEMPLATE_NAME_ALREADY_EXISTS description: type: string enum: - Template name already exists. - title: INVALID_STRING_LENGTH properties: issue: type: string enum: - INVALID_STRING_LENGTH description: type: string enum: - Template name length should be between 1 and 500. - title: INVALID_STRING_LENGTH properties: issue: type: string enum: - INVALID_STRING_LENGTH description: type: string enum: - Currency code length should be 3 characters. - title: INVALID_STRING_LENGTH properties: issue: type: string enum: - INVALID_STRING_LENGTH description: type: string enum: - the value of a field is either too short or too long. - title: INVALID_STRING_MAX_LENGTH properties: issue: type: string enum: - INVALID_STRING_MAX_LENGTH description: type: string enum: - Value of the field is too long. - title: INVALID_PARAMETER_SYNTAX properties: issue: type: string enum: - INVALID_PARAMETER_SYNTAX description: type: string enum: - the value of a field does not conform to the expected format. invoicer_info: type: object title: Invoicer Information description: The invoicer business information that appears on the invoice. allOf: - $ref: '#/components/schemas/contact_name_address' - properties: email_address: $ref: '#/components/schemas/email_address' description: The invoicer email address, which must be listed in the user's PayPal profile. If you omit this value, notifications are sent from and to the primary email address but do not appear on the invoice. phones: type: array items: $ref: '#/components/schemas/phone_detail' description: An array of invoicer's phone numbers. The invoicer can choose to hide the phone number on the invoice. website: type: string format: uri description: The invoicer's website. maxLength: 2048 tax_id: type: string description: The invoicer's tax ID. maxLength: 100 additional_notes: type: string description: Any additional information. Includes business hours. maxLength: 400 logo_url: type: string format: uri description: The full URL to an external logo image. The logo image must not be larger than 250 pixels wide by 90 pixels high. maxLength: 2000 error_415: type: object title: Unsupported Media Type Error description: The server does not support the request payload's media type. properties: name: type: string enum: - UNSUPPORTED_MEDIA_TYPE message: type: string enum: - The server does not support the request payload's media type. details: type: array items: $ref: '#/components/schemas/error_details' debug_id: type: string description: The PayPal internal ID. Used for correlation purposes. links: description: An array of request-related [HATEOAS links](https://en.wikipedia.org/wiki/HATEOAS). type: array minItems: 0 maxItems: 10000 items: $ref: '#/components/schemas/error_link_description' unit_of_measure: type: string description: The unit of measure for the invoiced item. enum: - QUANTITY - HOURS - AMOUNT percentage: type: string description: The percentage, as a fixed-point, signed decimal number. For example, define a 19.99% interest rate as `19.99`. format: ppaas_common_percentage_v2 pattern: ^((-?[0-9]+)|(-?([0-9]+)?[.][0-9]+))$ error_500: type: object title: Internal Server Error description: This is either a system or application error, and generally indicates that although the client appeared to provide a correct request, something unexpected has gone wrong on the server. properties: name: type: string enum: - INTERNAL_SERVER_ERROR message: type: string enum: - An internal server error occurred. debug_id: type: string description: The PayPal internal ID. Used for correlation purposes. links: description: An array of request-related [HATEOAS links](https://en.wikipedia.org/wiki/HATEOAS). type: array minItems: 0 maxItems: 10000 items: $ref: '#/components/schemas/error_link_description' example: name: INTERNAL_SERVER_ERROR message: An internal server error occurred. debug_id: 90957fca61718 links: - href: https://developer.paypal.com/api/orders/v2/#error-INTERNAL_SERVER_ERROR rel: information_link email_address: type: string description: The internationalized email address.GBand notUKas used in the top-level domain names for that country. Use the `C2` country code for China worldwide for comparable uncontrolled price (CUP) method, bank card, and cross-border transactions.
Note: Up to 64 characters are allowed before and 255 characters are allowed after theformat: ppaas_common_email_address_v2 minLength: 3 maxLength: 254 pattern: ^.+@[^"\-].+$ date_time: type: string description: The date and time, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6). Seconds are required while fractional seconds are optional.@sign. However, the generally accepted maximum length for an email address is 254 characters. The pattern verifies that an unquoted@sign exists.
Note: The regular expression provides guidance but does not reject all invalid dates.format: ppaas_date_time_v3 minLength: 20 maxLength: 64 pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])[T,t]([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)([.][0-9]+)?([Zz]|[+-][0-9]{2}:[0-9]{2})$ custom_amount: type: object title: Custom Amount description: The custom amount to apply to an invoice. If you include a label, you must include a custom amount. required: - label properties: label: type: string description: The label to the custom amount of the invoice. maxLength: 50 amount: $ref: '#/components/schemas/money' description: The custom amount value. Value is from `-1000000` to `1000000`. Supports up to two decimal places. parameters: page_size: name: page_size in: query description: The maximum number of templates to return in the response. schema: type: integer minimum: 1 maximum: 100 default: 20 template_id: name: template_id in: path required: true description: The ID of the template to delete. schema: type: string fields: name: fields in: query description: The fields to return in the response. Value is `all` or `none`. To return only the template name, ID, and default attributes, specify `none`. schema: type: string pattern: (?i)^(all|none)$ default: all page: name: page in: query description: The page number to be retrieved, for the list of templates. So, a combination of `page=1` and `page_size=20` returns the first 20 templates. A combination of `page=2` and `page_size=20` returns the next 20 templates. schema: type: integer minimum: 1 maximum: 1000 default: 1 examples: template: value: default_template: true template_info: configuration: tax_calculated_after_discount: true tax_inclusive: false allow_tip: true partial_payment: allow_partial_payment: true minimum_amount_due: currency_code: USD value: '20.00' detail: reference: deal-ref note: Thank you for your business. currency_code: USD terms_and_conditions: No refunds after 30 days. memo: This is a long contract attachments: - id: Screen Shot 2018-11-23 at 16.45.01.png reference_url: https://api-m.paypal.com/invoice/payerView/attachments/RkG9ggQbd4Mwm1tYdcF6uuixfFTFq32bBdbE1VbtQLdKSoS2ZOYpfjw9gPp7eTrZmVaFaDWzixHXm-OXWHbmigHigHzURDxJs8IIKqcqP8jawnBEZcraEAPVMULxf5iTyOSpAUc2ugW0PWdwDbM6mg-guFAUyj3Z98H7htWNjQY95jb9heOlcSXUe.sbDUR9smAszzzJoA1NXT6rEEegwQ&version=1&sig=JNODB0xEayW8txMQm6ZsIwDnd4eh3hd6ijiRLi4ipHE payment_term: term_type: NET_10 invoicer: name: given_name: David surname: Larusso address: address_line_1: 1234 First Street address_line_2: 337673 Hillside Court admin_area_2: Anytown admin_area_1: CA postal_code: '98765' country_code: US email_address: merchant@example.com phones: - country_code: '001' national_number: '4085551234' phone_type: MOBILE website: www.test.com tax_id: ABcNkWSfb5ICTt73nD3QON1fnnpgNKBy-Jb5SeuGj185MNNw6g logo_url: https://example.com/logo.PNG additional_notes: 2-4 primary_recipients: - billing_info: name: given_name: Stephanie surname: Meyers address: address_line_1: 1234 Main Street admin_area_2: Anytown admin_area_1: CA postal_code: '98765' country_code: US email_address: bill-me@example.com phones: - country_code: '001' national_number: '4884551234' phone_type: MOBILE additional_info: add-info shipping_info: name: given_name: Stephanie surname: Meyers address: address_line_1: 1234 Main Street admin_area_2: Anytown admin_area_1: CA postal_code: '98765' country_code: US additional_recipients: - inform-me@example.com items: - name: Yoga Mat description: new watch quantity: '1' unit_amount: currency_code: USD value: '50.00' tax: name: Sales Tax percent: '7.25' discount: percent: '5' unit_of_measure: QUANTITY - name: Yoga T Shirt quantity: '1' unit_amount: currency_code: USD value: '10.00' tax: name: Sales Tax percent: '7.25' discount: amount: currency_code: USD value: '5.00' unit_of_measure: QUANTITY amount: currency_code: USD value: '74.21' breakdown: custom: label: Packing Charges amount: currency_code: USD value: '10.00' shipping: amount: currency_code: USD value: '10.00' tax: name: Sales Tax percent: '7.25' discount: invoice_discount: percent: '5' settings: template_item_settings: - field_name: ITEMS_DATE display_preference: hidden: true - field_name: ITEMS_DISCOUNT display_preference: hidden: false - field_name: ITEMS_TAX display_preference: hidden: false - field_name: ITEMS_DESCRIPTION display_preference: hidden: false - field_name: ITEMS_QUANTITY display_preference: hidden: true template_subtotal_settings: - field_name: CUSTOM display_preference: hidden: false - field_name: DISCOUNT display_preference: hidden: false - field_name: SHIPPING display_preference: hidden: false unit_of_measure: QUANTITY standard_template: false template_1: value: default_template: true template_info: configuration: tax_calculated_after_discount: true tax_inclusive: false allow_tip: true partial_payment: allow_partial_payment: true minimum_amount_due: currency_code: USD value: '20.00' detail: reference: deal-ref note: Thank you for your business. currency_code: USD terms_and_conditions: No refunds after 30 days. memo: This is a long contract attachments: - id: Screen Shot 2018-11-23 at 16.45.01.png reference_url: https://api-m.paypal.com/invoice/payerView/attachments/RkG9ggQbd4Mwm1tYdcF6uuixfFTFq32bBdbE1VbtQLdKSoS2ZOYpfjw9gPp7eTrZmVaFaDWzixHXm-OXWHbmigHigHzURDxJs8IIKqcqP8jawnBEZcraEAPVMULxf5iTyOSpAUc2ugW0PWdwDbM6mg-guFAUyj3Z98H7htWNjQY95jb9heOlcSXUe.sbDUR9smAszzzJoA1NXT6rEEegwQ&version=1&sig=JNODB0xEayW8txMQm6ZsIwDnd4eh3hd6ijiRLi4ipHE payment_term: term_type: NET_10 invoicer: name: given_name: David surname: Larusso address: address_line_1: 1234 First Street address_line_2: 337673 Hillside Court admin_area_2: Anytown admin_area_1: CA postal_code: '98765' country_code: US email_address: merchant@example.com phones: - country_code: '001' national_number: '4085551234' phone_type: MOBILE website: www.test.com tax_id: ABcNkWSfb5ICTt73nD3QON1fnnpgNKBy-Jb5SeuGj185MNNw6g logo_url: https://example.com/logo.PNG additional_notes: 2-4 primary_recipients: - billing_info: name: given_name: Stephanie surname: Meyers address: address_line_1: 1234 Main Street admin_area_2: Anytown admin_area_1: CA postal_code: '98765' country_code: US email_address: bill-me@example.com phones: - country_code: '001' national_number: '4884551234' phone_type: MOBILE additional_info: add-info shipping_info: name: given_name: Stephanie surname: Meyers address: address_line_1: 1234 Main Street admin_area_2: Anytown admin_area_1: CA postal_code: '98765' country_code: US additional_recipients: - inform-me@example.com items: - name: Yoga Mat description: new watch quantity: '1' unit_amount: currency_code: USD value: '50.00' tax: name: Sales Tax percent: '7.25' discount: percent: '5' unit_of_measure: QUANTITY - name: Yoga T Shirt quantity: '1' unit_amount: currency_code: USD value: '10.00' tax: name: Sales Tax percent: '7.25' discount: amount: currency_code: USD value: '5.00' unit_of_measure: QUANTITY amount: currency_code: USD value: '74.21' breakdown: custom: label: Packing Charges amount: currency_code: USD value: '10.00' shipping: amount: currency_code: USD value: '10.00' tax: name: Sales Tax percent: '7.25' discount: invoice_discount: percent: '5' settings: template_item_settings: - field_name: ITEMS_DATE display_preference: hidden: true - field_name: ITEMS_DISCOUNT display_preference: hidden: false - field_name: ITEMS_TAX display_preference: hidden: false - field_name: ITEMS_DESCRIPTION display_preference: hidden: false - field_name: ITEMS_QUANTITY display_preference: hidden: true template_subtotal_settings: - field_name: CUSTOM display_preference: hidden: false - field_name: DISCOUNT display_preference: hidden: false - field_name: SHIPPING display_preference: hidden: false unit_of_measure: QUANTITY standard_template: false responses: default: description: The default response. content: application/json: schema: $ref: '#/components/schemas/error_default' securitySchemes: Oauth2: type: oauth2 description: Oauth 2.0 authentication flows: clientCredentials: tokenUrl: /v1/oauth2/token scopes: https://uri.paypal.com/services/subscriptions: Manage plan & subscription externalDocs: url: https://developer.paypal.com/docs/api/subscriptions/v1/