{"templateId":"api_docs","sharedDataIds":{"apiDocsStore":"api-docs-apis/receipts-service.yaml","sidebar":"sidebar-sidebars.yaml"},"props":{"definitionId":"apis/receipts-service.yaml","settings":{"baseUrlPath":"/apis/receipts-service"},"disableAutoScroll":true,"seo":{"title":"Receipt Service API"},"dynamicMarkdocComponents":[],"metadata":{"type":"openapi","title":"Receipt Service API","version":"1.0.0","description":"The Receipt Service generates and delivers branded payment receipts.\n\n## Key Concepts\n\n### Two Receipt Types\n- **Invoice-Based**: Payment applied to one or more invoices\n- **Payment-Only**: Standalone payment (e.g., one-time service fee) with no invoices\n\n### Receipt Generation\n- Branded with merchant configuration using Liquid templates\n- Delivered via email through OSI Push Notification Service\n- MVP: HTML rendering on-demand (PDF generation and S3 storage are post-MVP)\n\n## Error Handling\n\nAll API responses use HTTP status 200. Success and failure are expressed in the NPS response envelope.\n- `responseCode` **A100** indicates success; the payload is in the `object` field when present.\n- `responseCode` values **E4xx** (and **E500**) indicate errors; `responseMessage` carries details.\n- **E422** (**VALIDATION_ERROR**) is returned for standard request validation failures.\n\nAdditional application error codes include **E400_VALIDATION** (request validation failure, for example malformed `entityId`), **E403_ACCESS** (caller lacks permission for the requested resource), and **E403_TENANT** (entity ID is outside the caller's hierarchy).\n\n**Exception to HTTP 200 convention:** Requests with a syntactically invalid `entityId` (non-numeric or negative) receive HTTP 400 with a minimal JSON body (`responseCode: \"E400_VALIDATION\"`) before reaching the application layer. This is enforced by the tenant isolation interceptor and does not use the standard NPS envelope.\n\n**Null field omission:** Success and error responses use `@JsonInclude(NON_NULL)`. Fields with null values (including `object` on void successes and `responseDetails` when absent) are omitted from the JSON response rather than serialized as explicit `null`.\n\n## Authentication Note\n\nOpenAPI security schemes in this specification reference OAuth2 for documentation tooling compatibility.\nIn deployed environments, all service-to-service authentication uses S2S JWT (signed JWTs from the hierarchy key tree).\n"},"compilationErrors":[],"markdown":{"partials":{},"variables":{"rbac":{"teams":["anonymous"]},"user":{},"remoteAddr":{"hostname":"docs.nelnetpay.com","port":4000,"ipAddress":"216.73.216.134"},"lang":"default_locale","env":{"PUBLIC_REDOCLY_BRANCH_NAME":"main"}}},"pagePropGetterError":{"message":"","name":""}},"slug":"/apis/receipts-service","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}