openapi: 3.1.0 info: title: SAP Sales and Distribution (SD) SAP Billing Document API description: >- Read, cancel, and retrieve billing documents in PDF format from SAP S/4HANA. This OData service (API_BILLING_DOCUMENT_SRV) provides access to billing document headers, items, partners, and pricing elements. Supports invoices, credit memos, debit memos, and other billing document types as part of the order-to-cash cycle. version: 1.0.0 contact: name: SAP Support url: https://support.sap.com license: name: SAP Developer License url: https://www.sap.com/about/agreements/product-use-and-support-terms.html servers: - url: https://sandbox.api.sap.com/s4hanacloud/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV description: SAP S/4HANA Cloud Sandbox - url: https://{host}:{port}/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV description: SAP S/4HANA On-Premise variables: host: default: localhost port: default: '443' security: - basicAuth: [] - oauth2: [] tags: - name: Billing Document description: Operations on billing document header (A_BillingDocument) - name: Billing Document Item description: Operations on billing document items (A_BillingDocumentItem) - name: Billing Document Partner description: Operations on billing document partners (A_BillingDocumentPartner) paths: /A_BillingDocument: get: operationId: listBillingDocuments summary: Retrieve a list of billing documents description: >- Returns a collection of billing document headers. Use OData query options to filter by billing date, billing type, sales organization, customer, or cancellation status. tags: - Billing Document parameters: - $ref: '#/components/parameters/top' - $ref: '#/components/parameters/skip' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/orderby' - $ref: '#/components/parameters/select' - $ref: '#/components/parameters/expand' - $ref: '#/components/parameters/inlinecount' responses: '200': description: Successfully retrieved billing documents content: application/json: schema: type: object properties: d: type: object properties: results: type: array items: $ref: '#/components/schemas/BillingDocument' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '500': $ref: '#/components/responses/InternalServerError' /A_BillingDocument('{BillingDocument}'): get: operationId: getBillingDocument summary: Retrieve a single billing document description: >- Returns a single billing document header by its key. Use $expand to include related items, partners, and pricing elements. tags: - Billing Document parameters: - name: BillingDocument in: path required: true description: Billing document number (10 characters) schema: type: string maxLength: 10 - $ref: '#/components/parameters/select' - $ref: '#/components/parameters/expand' responses: '200': description: Successfully retrieved the billing document content: application/json: schema: type: object properties: d: $ref: '#/components/schemas/BillingDocument' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' /A_BillingDocument('{BillingDocument}')/to_Item: get: operationId: listBillingDocumentItems summary: Retrieve items for a billing document description: >- Returns a collection of line items for the specified billing document. tags: - Billing Document Item parameters: - name: BillingDocument in: path required: true description: Billing document number schema: type: string maxLength: 10 - $ref: '#/components/parameters/top' - $ref: '#/components/parameters/skip' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/select' responses: '200': description: Successfully retrieved billing document items content: application/json: schema: type: object properties: d: type: object properties: results: type: array items: $ref: '#/components/schemas/BillingDocumentItem' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' /A_BillingDocument('{BillingDocument}')/to_Partner: get: operationId: listBillingDocumentPartners summary: Retrieve partners for a billing document description: >- Returns a collection of business partners associated with the billing document. tags: - Billing Document Partner parameters: - name: BillingDocument in: path required: true description: Billing document number schema: type: string maxLength: 10 - $ref: '#/components/parameters/top' - $ref: '#/components/parameters/skip' - $ref: '#/components/parameters/select' responses: '200': description: Successfully retrieved billing document partners content: application/json: schema: type: object properties: d: type: object properties: results: type: array items: $ref: '#/components/schemas/BillingDocumentPartner' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' /CancelBillingDocument: post: operationId: cancelBillingDocument summary: Cancel a billing document description: >- Cancels a billing document by creating a cancellation document. The original document is flagged as cancelled and a new reversal document is generated. tags: - Billing Document parameters: - name: BillingDocument in: query required: true description: Billing document number to cancel schema: type: string maxLength: 10 responses: '200': description: Billing document successfully cancelled content: application/json: schema: type: object properties: d: $ref: '#/components/schemas/BillingDocument' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '500': $ref: '#/components/responses/InternalServerError' /GetPDF: get: operationId: getBillingDocumentPDF summary: Retrieve a billing document as PDF description: >- Returns the billing document output as a PDF binary stream. The PDF is generated based on the configured output type and form. tags: - Billing Document parameters: - name: BillingDocument in: query required: true description: Billing document number schema: type: string maxLength: 10 responses: '200': description: PDF document successfully retrieved content: application/pdf: schema: type: string format: binary '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' components: securitySchemes: basicAuth: type: http scheme: basic oauth2: type: oauth2 flows: clientCredentials: tokenUrl: https://{tenant}.authentication.{landscape}.hana.ondemand.com/oauth/token scopes: API_BILLING_DOCUMENT_SRV: Access to Billing Document API parameters: top: name: $top in: query description: Maximum number of records to return schema: type: integer minimum: 0 skip: name: $skip in: query description: Number of records to skip schema: type: integer minimum: 0 filter: name: $filter in: query description: OData filter expression schema: type: string orderby: name: $orderby in: query description: Sort order schema: type: string select: name: $select in: query description: Comma-separated properties to include schema: type: string expand: name: $expand in: query description: Navigation properties to expand schema: type: string inlinecount: name: $inlinecount in: query description: Include total count schema: type: string enum: - allpages - none ifMatch: name: If-Match in: header description: ETag value for concurrency control required: true schema: type: string schemas: BillingDocument: type: object description: Billing document header entity (A_BillingDocument) properties: BillingDocument: type: string maxLength: 10 description: Billing document number BillingDocumentType: type: string maxLength: 4 description: Billing document type (F2=Invoice, G2=Credit Memo, L2=Debit Memo) BillingDocumentCategory: type: string maxLength: 1 description: Billing document category SDDocumentCategory: type: string maxLength: 4 description: SD document category BillingDocumentDate: type: string format: date description: Billing date CreationDate: type: string format: date description: Date the document was created CreationTime: type: string description: Time the document was created LastChangeDate: type: string format: date description: Date of last change LastChangeDateTime: type: string format: date-time description: Timestamp of last change SalesOrganization: type: string maxLength: 4 description: Sales organization DistributionChannel: type: string maxLength: 2 description: Distribution channel Division: type: string maxLength: 2 description: Division SoldToParty: type: string maxLength: 10 description: Sold-to party PayerParty: type: string maxLength: 10 description: Payer TotalNetAmount: type: string description: Net value in document currency TotalGrossAmount: type: string description: Gross value in document currency TransactionCurrency: type: string maxLength: 5 description: SD document currency TotalTaxAmount: type: string description: Tax amount in document currency CustomerPaymentTerms: type: string maxLength: 4 description: Terms of payment key PaymentMethod: type: string maxLength: 1 description: Payment method BillingDocumentIsCancelled: type: boolean description: Indicates if the billing document is cancelled CancelledBillingDocument: type: string maxLength: 10 description: Cancelled billing document number AccountingDocument: type: string maxLength: 10 description: Accounting document number AccountingPostingStatus: type: string maxLength: 1 description: Accounting posting status IncotermsClassification: type: string maxLength: 3 description: Incoterms (part 1) CompanyCode: type: string maxLength: 4 description: Company code BillingDocumentItem: type: object description: Billing document item entity (A_BillingDocumentItem) properties: BillingDocument: type: string maxLength: 10 description: Billing document number BillingDocumentItem: type: string maxLength: 6 description: Billing item number Material: type: string maxLength: 40 description: Material number Plant: type: string maxLength: 4 description: Plant BillingQuantity: type: string description: Billing quantity in sales unit BillingQuantityUnit: type: string maxLength: 3 description: Sales unit NetAmount: type: string description: Net value of the item GrossAmount: type: string description: Gross value of the item TaxAmount: type: string description: Tax amount TransactionCurrency: type: string maxLength: 5 description: SD document currency SalesDocument: type: string maxLength: 10 description: Reference sales document SalesDocumentItem: type: string maxLength: 6 description: Reference sales document item ReferenceSDDocument: type: string maxLength: 10 description: Reference delivery document ReferenceSDDocumentItem: type: string maxLength: 6 description: Reference delivery item MaterialGroup: type: string maxLength: 9 description: Material group Batch: type: string maxLength: 10 description: Batch number BillingDocumentPartner: type: object description: Billing document partner entity (A_BillingDocumentPartner) properties: BillingDocument: type: string maxLength: 10 description: Billing document number PartnerFunction: type: string maxLength: 2 description: Partner function Customer: type: string maxLength: 10 description: Customer number Supplier: type: string maxLength: 10 description: Vendor account number Error: type: object properties: error: type: object properties: code: type: string message: type: object properties: lang: type: string value: type: string responses: BadRequest: description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Authentication required content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' InternalServerError: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Error'