openapi: 3.1.0 info: version: 1.0.0 title: Accrue Merchant API x-links: - name: View Alternative Version url: /api-fs/ description: >- View API documentation with alternative enum-based WebhookIncluded schema servers: - description: Production API url: https://merchant-api.accruesavings.com - description: Sandbox API url: https://merchant-api-sandbox.accruesavings.com tags: - name: Introduction description: > ## Sandbox Welcome to the Accrue API! Our detailed documentation will guide you through essential topics, including authentication, request formatting, and the handling of financial transactions, with a current focus on payments. Accrue treats every client as a unique entity. This approach allows for the management of critical components such as API tokens and user access, directly through our API, ensuring that each organization can tailor its use of our services to fit its specific needs. The introductory section aims to familiarize you with the core concepts required to effectively utilize the services offered by our platform. ## Environments Accrue offers its API across two distinct environments: | Environment | Description | API URL | | ----------------------- | ------------------------------------- |---------------------------------------------------------------------------------------------------| | **Sandbox Environment** | Designed for testing and development. | [https://merchant-api-sandbox.accruesavings.com](https://merchant-api-sandbox.accruesavings.com/) | | **Live Environment** | For real-time production operations. | [https://merchant-api.accruesavings.com/](https://merchant-api.accruesavings.com/) | ## Authentication Accrue's API leverages the Bearer Token for request authentication. Every API call requires the inclusion of a bearer token, which is a `Client Secret` associated with the `Client` for which you are making requests. :::caution Any issues with the token, such as being invalid, missing, or expired, will lead to `HTTP 401` Unauthorized responses. ::: ```http title="Example" GET /payments HTTP/1.1 Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef ``` ## Retrying API Requests When API requests fail due to network issues, rate limits, timeouts, or service incidents, it's a best practice to implement a retry mechanism. Guidelines for this mechanism include: - **Retryable HTTP Status Codes:** - `5xx`: Server errors. - `429`: Rate Limits. - `408`: Timeouts. - **Retry Strategy:** - Use an exponential backoff and/or jitter for retries. - Implement idempotency keys where necessary. ## Rate Limits The rate limit, based on your IP address, is set at 10,000 requests per minute, applicable to both the sandbox and live environments separately. Exceeding this limit triggers `HTTP 429` status codes and relevant messages in responses. ## Timeouts To ensure prompt failure and allow for retries, our APIs are designed with timeouts. It's recommended to set similar request timeouts on the client side. Timeouts are categorized as follows: - **Short Timeout:** A default timeout of 10 seconds for most APIs. - **Long Timeout:** Some APIs require up to 90 seconds for longer processes. Refer to the specific API documentation to ascertain the timeout applicable to your request. - name: API Design description: > ## OpenAPI Specification OpenAPI, a widely-recognized standard for defining RESTful APIs, enhances API usability and integration. It facilitates client library (SDK) generation, testing, and integration with various development tools. The Accrue API conforms to OpenAPI 3.1, with its specification accessible [here](https://spec.openapis.org/oas/v3.1.0). The Accrue OpenAPI specification can be used in conjunction with tools like Swagger or OpenAPI generators to create Accrue API client libraries in your preferred programming language. Please note, while SDKs can be auto-generated, their full compatibility with our API and coverage of all endpoints isn't guaranteed. Contributions, including feedback, bug reports, and pull requests from the Accrue SDKs community, are welcome to help improve and address any issues. ## Full-Text Search Accrue's List operation for resources like Users, Linked Accounts, or Transactions includes full-text search functionality, enhancing your ability to locate specific resources easily. This feature is especially useful for improving end-customer experiences, such as implementing a search box that allows customers to find transactions by descriptions (e.g., 'plane ticket') within their account transactions. **Full-Text Search Rules:** - **Unquoted Text:** Searches for words separated by 'And'. Example: 'john doe' finds resources containing both 'john' and 'doe'. - **OR Operator:** Searches for words separated by 'Or'. Example: 'john or doe' finds resources containing either 'john' or 'doe'. - **Minus Sign (-):** Excludes words following the minus. Example: 'john -doe' finds resources containing 'john' but not 'doe'. ## Pagination List operations, like 'List Users', return a collection of resources. To navigate through a long list, use: - `page[limit]`: Limits the number of resources returned (1-50, default is 10). A larger value is capped at 50 rather than rejected. - `page[offset]`: Specifies the number of resources to skip (default is 0). ## Idempotency Accrue supports idempotency for certain API operations, allowing multiple requests while ensuring the operation is performed only once. Use any string up to 255 characters as an idempotency key (UUID version 4 is recommended). Idempotency is vital for situations like network errors during sensitive operations (e.g., payment creation). It ensures that an operation, like a payment, is not duplicated despite multiple attempts. **Key Points:** - Idempotency keys remain effective for 48 hours. - They are not shared across different API operations, but the same key can technically be used for different operations (not recommended). ## About JSON API Accrue's API is REST-based and adheres to the JSON:API specification. JSON:API outlines how clients should request resources and how servers should respond. Accrue's resources encompass applications, customers, cards, accounts, transactions, among others. Designed for efficiency, JSON:API reduces the number of requests and data transferred between clients and servers, achieving this without sacrificing readability, flexibility, or discoverability. JSON:API mandates the use of the JSON:API media type (`application/vnd.api+json`) for data exchange. ### Request and Response Structure JSON:API structures all requests and responses as JSON documents. These documents must contain one of the following top-level members: - **Data:** Represents the document's "primary data". For example, in creating an application resource, the primary data includes personal information. - **Errors:** An array of error objects. Primary data must be either: - A single resource object for requests targeting individual resources. - An array of resource objects for requests targeting resource collections. ```js title="Singe resource example" { "data": { "type": "User", "id": "123e4567-e89b-12d3-a456-426614174000", "attributes": { // ... this users's attributes }, "relationships": { // ... this users's relationships } } } ``` ```js title="Array of Resources Example" { "data": [ { "type": "User", "id": "123e4567-e89b-12d3-a456-426614174000", "attributes": { // ... this users's attributes }, "relationships": { // ... this users's relationships } }, { "type": "User", "id": "123e4567-e89b-12d3-a456-426614174001", "attributes": { // ... this users's attributes }, "relationships": { // ... this users's relationships } } ] } ``` ### Resource Object In JSON:API documents, resource objects are used to depict entities within the business domain, such as applications, customers, cards, accounts, transactions, etc., within Accrue's API. Every resource object must include these two members: - **id:** The unique identifier of the resource. - **type:** The type of resource. > **Note:** The `id` member is not required for resource objects created on the client side that represent new resources to be created on the server. Optional members of a resource object include: - **attributes:** This object represents the resource's data, like name, address, email, etc. - **relationships:** Describes connections between the current resource and other resources. ```js title="Resource example" { "type": "User", "id": "123e4567-e89b-12d3-a456-426614174000", "attributes": { "disabled": false, "attachedProfile": { "referenceId": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "email": "user@email.com", "phoneNumber": "+12125559999" } "updatedAt":"2020-01-12T19:41:01.323Z", "createdAt":"2020-01-11T19:40:01.323Z" }, "relationships": { //relationships listed here } } ``` ### Relationships The `relationships` object in JSON:API defines the connections between the current resource and other related resources. Each entry in this object signifies a unique reference. For instance, the relationship between a `User` and `UserProfile` is depicted here. ### Relationship Object A "relationship object" is required to include a `data` member, which can be one of the following: - **Null:** Indicating an empty 'to-one' relationship. - **Empty Array (`[]`):** For empty 'to-many' relationships. - **Single Resource Identifier:** With 'type' and 'id', for non-empty 'to-one' relationships. - **Array of Resource Identifiers:** Each with 'type' and 'id', for non-empty 'to-many' relationships. ```js title="Relationships example" { "type": "Wallet", "id": "123e4567-e89b-12d3-a456-426614174000", "attributes": { //attributes here } }, "relationships":{ "User":{ "data":{ "type": "User", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" } } } } ``` ### Getting Related Resources Accrue's API supports the `include` query parameter in GET operations on specific resources like Cards. This parameter allows fetching multiple related resources in a single response. You can specify one or several relationships, separated by commas, in the query (refer to the example below). The response will include an `included` key containing these related resources. Utilizing this feature simplifies the API interaction by consolidating what would typically be multiple calls into a single request. This not only streamlines your code but also addresses common data integrity concerns associated with ```bash title="Include query parameter example" curl -X GET 'https://merchant-api.accruesavings.com/wallets/123e4567-e89b-12d3-a456-426614174000?include=User' \-H "Authorization: Bearer ${TOKEN}" ``` ```js title="Included resources example" { "type": "Wallet", "id": "123e4567-e89b-12d3-a456-426614174000", "attributes": { //attributes here }, "relationships":{ "User":{ "data":{ "type": "User", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" } } } }, "included": [ { "type": "User", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "attributes":{ //attributes here }, ] } ``` ## Errors Accrue's API communicates the status of requests using standard HTTP Status Codes. Errors may occur at any point during processing, either as single or multiple instances. For example, schema validation issues often lead to multiple errors, while server processing problems typically result in a single error. Regardless, the response includes all identified errors. An "error object" is required to have an HTTP status code. It may also include: - **code:** (Optional) A unique, underscored Accrue-specific code detailing the error. A comprehensive list of error codes is available in the Accrue Errors documentation. - **detail:** (Optional) A human-readable explanation providing more insights about the error. - **Meta:** (Optional) This object contains name/value pairs relevant to the error - name: Wallets description: >- Wallets are where users save money and collect rewards for future payments to merchants. Each wallet is linked to a specific merchant and tracks the balance of deposits and rewards. Users can contribute to their wallet's balance as part of their payment planning, while also accruing rewards. - name: PaymentIntents description: >- Payment Intents represent a commitment to pay a specified amount, allowing for a structured process to handle payments from initiation to completion. This resource serves as a provisional step in the payment process, where the amount, payment method, and other details are specified by the initiator (e.g., a user, support staff, or merchant). Payment Intents can go through several states, such as requiring action, being canceled, or being promoted to an actual payment upon successful authorization. - name: Payments description: >- Payments are the realization of payment intents, representing the actual transfer or authorization of funds. This resource encapsulates the details of completed transactions, including the payment status, amount, and any adjustments or refunds that have occurred post-initial authorization. Payments can have various statuses reflecting their current state, from pending to refunded, providing a comprehensive view of the transaction lifecycle. - name: Simulations description: >- Simulations are used to simulate payments authorizations and captures for Card Rails (Virtual Debit Cards). - name: Users description: >- Users represent the end users and are the parent container of Wallets. A user is automatically created when the end-user signs into the Accrue product through various different methods using their phone number. - name: Identity Verification description: >- Identity Verification provides knowledge-based authentication for sensitive account changes. Use these endpoints to challenge a user with profile and wallet questions, then apply verified phone or email updates with a single-use verification token. - name: Banking description: >- Banking APIs provide KYC (Know Your Customer) verification functionality to enable users to comply with financial regulations when using banking features. These endpoints manage identity verification through document submission, status tracking, and automated compliance checks. - name: Counterparties description: >- Counterparties define bank accounts where funds are settled for captured payments. Settlement details live on `externalBankAccount`. There can be multiple counterparties. - name: CounterpartyTransfers description: >- Counterparty Transfers represent movements of funds between two counterparties owned by the same partner. Use these endpoints to initiate, list, and retrieve counterparty-to-counterparty transfers. - name: LinkedAccounts description: >- Linked Accounts represent payment methods that users have connected to their Accrue account. These accounts can be used for funding payments or topping up the wallet. - name: Widgets description: >-

Widgets are components that are embedded into applications to enrich the user experience. Some of those require additional data loaded through API endpoints.

Learn more about the different widget types here.

- name: Sweepstakes description: >- Sweepstakes campaigns give users the chance to win prizes by participating in merchant-sponsored promotions. Each campaign is linked to a specific merchant and tracks user entries. Users can earn entries through actions like purchases, and winners are selected based on campaign rules. Sweepstakes add an engaging layer of excitement and reward to the user experience. - name: Rewards description: >- Partner-issued rewards let trusted integrations credit customer wallets or create pre-issued rewards for recipients identified by phone number. When a recipient has an active wallet, rewards are deposited immediately. When no active wallet exists, a pre-issued reward is created for the user to claim when they sign up. All issue requests require an idempotency key. - name: Gifts description: >- Gifts expose remaining spendable balance for a scanned lookUpId. Point-of-sale remaining lookup is GET /api/v1/gifts/{lookUpId}. Spend still uses payment intents with the same scanned string as lookUpId — never send Gift.id as walletId. Amounts are integer cents. - name: ExternalTransactions description: >- External transactions are records of transfers that happened outside the Accrue system. E.g. purchases in an online shop using a non-Accrue payment method. - name: Webhooks description: Webhook management APIs - name: WebhookEvents description: Webhook Event management APIs - name: Webhook Topics description: Webhook Topics x-tagGroups: - name: Overview tags: - Introduction - API Design - name: Users tags: - Users - LinkedAccounts - Identity Verification - name: Wallets tags: - Wallets - name: Gifts tags: - Gifts - name: Payments tags: - PaymentIntents - Payments - ExternalTransactions - Simulations - name: Banking & KYC tags: - Banking - Counterparties - CounterpartyTransfers - name: Sweepstakes tags: - Sweepstakes - name: Rewards tags: - Rewards - name: Widgets tags: - Widgets - name: Webhooks tags: - Webhooks - WebhookEvents - Webhook Topics components: schemas: PaymentIntentBalanceInformation: type: object properties: available: type: integer description: Available wallet balance in cents format: int32 example: 1500 eligibleReward: type: integer description: Eligible reward amount for this transaction in cents format: int32 example: 500 upperLimit: type: integer description: Maximum checkout amount supported for this purchase, in cents format: int32 example: 103600 required: - available - eligibleReward - upperLimit description: >- Balance for this payment intent. `available` is the remaining spendable amount in cents (gift remaining for a gift lookUpId, or wallet available for a wallet). x-tags: - Model CreatePaymentIntentResponse: type: object properties: data: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - PaymentIntent attributes: type: object properties: balance: $ref: '#/components/schemas/PaymentIntentBalanceInformation' billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. example: Promotable userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - balance - updatedAt - createdAt required: - id - type - attributes required: - data CreatePaymentIntentInvalidResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidAmountOrWalletIdentifier description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidAmountOrWalletIdentifier title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Invalid amount or wallet identifier validation failed meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payment-intents required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payment-intents required: - id - status - code - title - detail - meta CreatePaymentIntentWalletAccessDeniedResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 403 code: type: string enum: - WalletAccessDenied description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletAccessDenied title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Wallet identifier merchant mismatch meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payment-intents required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payment-intents required: - id - status - code - title - detail - meta CreatePaymentIntentWalletNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - WalletIdentifierNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletIdentifierNotFound title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Wallet identifier not found meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payment-intents required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payment-intents required: - id - status - code - title - detail - meta CreatePaymentIntent: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - CreatePaymentIntent attributes: type: object properties: amount: type: integer description: Amount to be charged in cents format: int32 example: 3600 walletId: type: string format: uuid description: >- Wallet identifier to validate. Optional alternative to `lookUpId`. Provide exactly one of `walletId` or `lookUpId`. example: 123e4567-e89b-12d3-a456-426614174000 lookUpId: type: string description: >- Scanned lookup identifier. Optional alternative to `walletId`. May be a wallet barcode or a gift identifier; wallet barcode resolution wins. For gift spend, send this same string — never send the gift `data.id` as `walletId`. See [Get Gift by lookUpId](/api#tag/Gifts/operation/getGiftByLookUpId). required: - amount oneOf: - required: - walletId - required: - lookUpId required: - id - type - attributes description: CreatePaymentIntent x-tags: - Model PaymentIntent: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - PaymentIntent attributes: type: object properties: balance: allOf: - $ref: '#/components/schemas/PaymentIntentBalanceInformation' - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. userId: type: - string - 'null' walletId: type: - string - 'null' description: The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt relationships: type: object properties: payments: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid type: type: string enum: - Payment required: - id - type required: - data required: - id - type - attributes - relationships description: A transaction x-tags: - Model GetPaymentIntentResponse: type: object properties: data: allOf: - $ref: '#/components/schemas/PaymentIntent' - type: object properties: attributes: type: object properties: balance: allOf: - $ref: '#/components/schemas/PaymentIntentBalanceInformation' - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: >- Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. example: PromotedToPayment userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt description: A transaction x-tags: - Model included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Payment attributes: type: object properties: id: type: string format: uuid example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 status: type: string enum: - Canceled - Created - Failed - Processing - Returned - Sent description: >- After authorize, the payment is typically `Created` until capture or settlement advances it. example: Created amount: type: integer format: int32 example: 9999 channel: type: - string - 'null' description: >- External system identifier used to identify the payment channel. E.g. App Name, Activity ID, Checkout Interface, etc. example: ORG-1 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 fee: type: integer description: >- The fee assigned to this particular disbursement based on the whole payment fee, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 deprecated: true example: 10 remit: type: boolean description: >- Deprecated. Always returns `true`. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount - fee - remit description: >- Array of disbursements associated with this payment, including counterparty IDs, amounts, and fees. example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 800 fee: 10 remit: true - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 200 fee: 5 remit: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier example: pay_by_wallet required: - amount - type description: Processing fee details rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 description: Charges applied to this payment. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 fees: type: integer minimum: 0 description: Processing fees charged, in cents format: int32 example: 150 required: - rewards - fees description: Legacy charges breakdown. Use `charges` instead. deprecated: true expiresAt: type: string format: date-time readOnly: true updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - amount - expiresAt - updatedAt - createdAt links: type: object properties: virtualDebitCard: type: string example: >- https://secure-api.accruesavings.com/api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/card required: - virtualDebitCard meta: type: object properties: processor: description: >- Opaque object reflecting the raw response from a third-party processor API call. The structure varies depending on which upstream call produced it and is not part of a stable, versioned contract. description: >- Optional metadata on the Payment resource. Omitted when no processor payload is attached to the response. required: - id - type - attributes - links required: - data - included PaymentIntentNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string title: type: string description: Generic title for the error. example: NotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'NotFoundException: Not Found' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000 required: - id - status - title - detail - meta ListPaymentIntentsResponse: type: object properties: data: type: array items: allOf: - $ref: '#/components/schemas/PaymentIntent' - type: object properties: attributes: type: object properties: balance: allOf: - $ref: >- #/components/schemas/PaymentIntentBalanceInformation - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: >- Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. example: RequiresAction userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt description: A transaction x-tags: - Model meta: type: object properties: total: type: number example: 1 limit: type: number example: 10 offset: type: number example: 0 required: - total - limit - offset required: - data - meta PaymentIntentQueryValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'Validation failed for page[limit]: expected number' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payment-intents required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payment-intents required: - id - status - code - title - detail - meta AuthorizePaymentResponse: type: object properties: data: allOf: - $ref: '#/components/schemas/PaymentIntent' - type: object properties: attributes: type: object properties: balance: allOf: - $ref: '#/components/schemas/PaymentIntentBalanceInformation' - description: Balance information for a payment intent billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: >- Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. example: PromotedToPayment userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt description: A transaction x-tags: - Model included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Payment attributes: type: object properties: id: type: string format: uuid example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 status: type: string enum: - Canceled - Created - Failed - Processing - Returned - Sent description: >- After authorize, the payment is typically `Created` until capture or settlement advances it. example: Created amount: type: integer format: int32 example: 9999 channel: type: - string - 'null' description: >- External system identifier used to identify the payment channel. E.g. App Name, Activity ID, Checkout Interface, etc. example: ORG-1 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 fee: type: integer description: >- The fee assigned to this particular disbursement based on the whole payment fee, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 deprecated: true example: 10 remit: type: boolean description: >- Deprecated. Always returns `true`. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount - fee - remit description: >- Array of disbursements associated with this payment, including counterparty IDs, amounts, and fees. example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 800 fee: 10 remit: true - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 200 fee: 5 remit: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier example: pay_by_wallet required: - amount - type description: Processing fee details rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 description: Charges applied to this payment. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 fees: type: integer minimum: 0 description: Processing fees charged, in cents format: int32 example: 150 required: - rewards - fees description: Legacy charges breakdown. Use `charges` instead. deprecated: true expiresAt: type: string format: date-time readOnly: true updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - amount - expiresAt - updatedAt - createdAt links: type: object properties: virtualDebitCard: type: string example: >- https://secure-api.accruesavings.com/api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/card required: - virtualDebitCard meta: type: object properties: processor: description: >- Opaque object reflecting the raw response from a third-party processor API call. The structure varies depending on which upstream call produced it and is not part of a stable, versioned contract. description: >- Optional metadata on the Payment resource. Omitted when no processor payload is attached to the response. required: - id - type - attributes - links required: - data - included AuthorizePaymentIntentFailedResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 402 code: type: string enum: - Failed description: A unique, camel-cased Accrue-specific code detailing the error. example: Failed title: type: string description: Generic title for the error. example: PaymentAuthorizationFailedException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Authorization failed for the desired amount meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payment-intents/{paymentIntentId}/authorize required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payment-intents/{paymentIntentId}/authorize required: - id - status - code - title - detail - meta AuthorizePaymentIntentForbiddenResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 403 code: type: string enum: - Forbidden description: A unique, camel-cased Accrue-specific code detailing the error. example: Forbidden title: type: string description: Generic title for the error. example: ForbiddenException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Client does not have access to this payment intent meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payment-intents/{paymentIntentId}/authorize required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payment-intents/{paymentIntentId}/authorize required: - id - status - code - title - detail - meta AuthorizePaymentIntent: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - AuthorizePaymentIntent attributes: type: object properties: amount: type: integer description: Total purchase amount in cents format: int32 reference: type: string description: >- Reference to the payment inside an external system (e.g. cart or order ID). example: order-12345 channel: anyOf: - type: string description: >- External channel identifier (e.g. app name, store outlet ID, checkout interface). example: ORG-1 - type: object properties: type: type: string enum: - App - Store description: Channel type. id: type: string description: Channel identifier in the external system. example: ORG-1 required: - type - id description: Structured payment channel reference. risk: type: object properties: deviceSessionId: type: string description: >- Device session ID used for risk assessment. Optional but recommended for production traffic. required: - deviceSessionId required: - amount meta: type: object properties: processor: description: >- Pass-through object sent to the active card processor integration. The shape is integration-specific and is not a stable, versioned public contract. Accrue provides the required fields during merchant onboarding. example: type: card-terminal posId: POS-001 description: >- Optional JSON:API `meta` on the authorize request. Omit when the processor does not require additional parameters. required: - id - type - attributes description: AuthorizePaymentIntent x-tags: - Model CreatePaymentResponse: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Payment attributes: type: object properties: id: type: string format: uuid example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 status: type: string enum: - Canceled - Created - Failed - Processing - Returned - Sent description: >- The current status of the payment. Each status indicates a specific phase in the payment process, such as waiting for authorization, being processed, or having been successfully completed or canceled. example: Processing amount: type: integer description: >- The total amount of the payment processed, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. This amount may differ from the initially intended amount due to adjustments, fees, or additional charges. format: int32 example: 9999 channel: type: - string - 'null' description: >- External system identifier used to identify the payment channel. E.g. App Name, Activity ID, Checkout Interface, etc. example: ORG-1 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 fee: type: integer description: >- The fee assigned to this particular disbursement based on the whole payment fee, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 deprecated: true example: 10 remit: type: boolean description: >- Deprecated. Always returns `true`. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount - fee - remit description: >- Array of disbursements associated with this payment, including counterparty IDs, amounts, and fees. example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 800 fee: 10 remit: true - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 200 fee: 5 remit: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier example: pay_by_wallet required: - amount - type description: Processing fee details rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 description: Charges applied to this payment. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 fees: type: integer minimum: 0 description: Processing fees charged, in cents format: int32 example: 150 required: - rewards - fees description: Legacy charges breakdown. Use `charges` instead. deprecated: true expiresAt: type: string format: date-time description: >- The field indicates the date and time until which the payment is valid. After this date, the payment will either be automatically cancelled or completed. readOnly: true updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes PaymentValidationResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidPayment description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidPayment title: type: string description: Generic title for the error. example: PaymentValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Payment intent not found for the given payment. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments required: - id - status - code - title - detail - meta CreatePayment: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - CreatePayment attributes: type: object properties: walletId: type: string format: uuid description: Wallet ID example: 123e4567-e89b-12d3-a456-426614174000 amount: type: integer description: Amount to capture in cents format: int32 example: 1000 linkedAccountId: type: string format: uuid description: The ID of the linked account to use for funding this payment. example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 channel: type: - string - 'null' description: >- External system identifier used to identify the payment channel. E.g. App Name, Activity ID, Checkout Interface, etc. example: ORG-1 reference: type: - string - 'null' description: >- Reference to the payment inside an external system. E.g. Cart ID. example: cart-123 externalPayments: type: array items: type: object properties: amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 method: type: string enum: - Cash - DebitCard - CreditCard - Wire - GiftCard - Wallet - Other - Unknown default: Unknown description: The method used for the split payment. required: - amount example: - method: Cash amount: 100 disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 remit: type: boolean description: >- Deprecated. This field is accepted but always treated as `true` regardless of the value provided. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 800 - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 200 remit: true required: - walletId - amount required: - id - type - attributes description: CreatePayment x-tags: - Model Payment: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Payment attributes: type: object properties: id: type: string format: uuid example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 status: type: string enum: - Canceled - Created - Failed - Processing - Returned - Sent description: >- The current status of the payment. Each status indicates a specific phase in the payment process, such as waiting for authorization, being processed, or having been successfully completed or canceled. example: Sent amount: type: integer description: >- The total amount of the payment processed, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. This amount may differ from the initially intended amount due to adjustments, fees, or additional charges. format: int32 example: 9999 channel: type: - string - 'null' description: >- External system identifier used to identify the payment channel. E.g. App Name, Activity ID, Checkout Interface, etc. example: ORG-1 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 fee: type: integer description: >- The fee assigned to this particular disbursement based on the whole payment fee, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 deprecated: true example: 10 remit: type: boolean description: >- Deprecated. Always returns `true`. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount - fee - remit description: >- Array of disbursements associated with this payment, including counterparty IDs, amounts, and fees. example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 800 fee: 10 remit: true - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 200 fee: 5 remit: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier example: pay_by_wallet required: - amount - type description: Processing fee details rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 description: Charges applied to this payment. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 fees: type: integer minimum: 0 description: Processing fees charged, in cents format: int32 example: 150 required: - rewards - fees description: Legacy charges breakdown. Use `charges` instead. deprecated: true expiresAt: type: string format: date-time description: >- The field indicates the date and time until which the payment is valid. After this date, the payment will either be automatically cancelled or completed. readOnly: true updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt relationships: type: object properties: paymentIntent: type: object properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - PaymentIntent required: - id - type links: type: object properties: self: type: string format: uri example: >- /api/v1/payment-intents/497f6eca-6276-4993-bfeb-53cbbbba6f08 required: - self required: - data - links required: - paymentIntent links: type: object properties: virtualDebitCard: type: string example: >- https://secure-api.accruesavings.com/api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/card required: - virtualDebitCard required: - id - type - attributes - relationships - links description: A payment x-tags: - Model GetPaymentResponse: type: object properties: data: allOf: - $ref: '#/components/schemas/Payment' - type: object properties: {} description: A payment x-tags: - Model included: type: array items: anyOf: - type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - PaymentIntent attributes: type: object properties: balance: allOf: - $ref: >- #/components/schemas/PaymentIntentBalanceInformation - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: >- Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes - type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Refund attributes: type: object properties: status: type: string enum: - Failed - Pending - Sent - Waiting description: The current status of the refund. amount: type: integer description: >- The amount refunded, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 9999 message: type: string description: >- A human-readable message describing the refund status or outcome. example: 'Refund processed. Fee: 59 cents' reference: type: - string - 'null' description: >- Reference inherited from the parent Payment. This is not a direct field on the Refund entity. example: MERCHANT-GENERATED-TOKEN charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 59 type: type: string description: >- Fee type identifier. For refunds, this is `pay_by_wallet_refund`. example: pay_by_wallet_refund required: - amount - type description: Processing fee details for this refund rewards: type: integer minimum: 0 description: >- Rewards amount. Always 0 for refunds (rewards are not applicable to refunds). format: int32 example: 0 description: Charges applied to this refund. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount. Always 0 for refunds. format: int32 example: 0 fees: type: integer minimum: 0 description: >- Processing fees charged for this refund, in cents. Same value as `charges.fee.amount`. format: int32 example: 59 required: - rewards - fees description: Legacy charges breakdown. Use `charges` instead. deprecated: true id: type: string format: uuid example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - data - included PaymentAccessCheckNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string title: type: string description: Generic title for the error. example: NotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'NotFoundException: Not Found' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000 required: - id - status - title - detail - meta VirtualDebitCard: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - VirtualDebitCard attributes: type: object properties: number: type: string description: The card number. example: card_12a3b45cdefghi expirationMonth: type: string description: The card expiration month. example: '6' expirationYear: type: string description: The card expiration year. example: '2028' cvc: type: string description: The virtual card security code. example: '123' billingAddress: type: object properties: street: type: string description: The billing address line 1. example: 123 Main St. street2: type: string description: The billing address line 2. example: Apt. 1 city: type: string description: The billing address city. example: San Francisco state: type: string description: The billing address state. example: CA postalCode: type: string description: The billing address postal code. example: '94107' country: type: string description: The billing address country. example: US required: - street - city - state - postalCode - country required: - number - expirationMonth - expirationYear - cvc - billingAddress relationships: type: object properties: payment: type: object properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - Payment required: - id - type required: - data paymentIntent: type: object properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - PaymentIntent required: - id - type required: - data required: - payment - paymentIntent required: - id - type - attributes - relationships description: A virtual debit card x-tags: - Model GetVirtualDebitCardResponse: type: object properties: data: $ref: '#/components/schemas/VirtualDebitCard' required: - data InvalidPaymentIntentForCardDetailsResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidPaymentIntent description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidPaymentIntent title: type: string description: Generic title for the error. example: PaymentException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- PaymentException (code='InvalidPaymentIntent' message='Payment Intent cannot be used to get card details' metaData=undefined) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card required: - id - status - code - title - detail - meta InvalidPaymentForCardDetailsResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidPayment description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidPayment title: type: string description: Generic title for the error. example: PaymentException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- PaymentException (code='InvalidPayment' message='Payment is not in a state where card details can be retrieved' metaData=undefined) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card required: - id - status - code - title - detail - meta PaymentNotFoundForCardDetailsResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - PaymentNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: PaymentNotFound title: type: string description: Generic title for the error. example: PaymentException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- PaymentException (code='PaymentNotFound' message='Wallet not found for the given payment' metaData=undefined) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card required: - id - status - code - title - detail - meta WalletNotReadyForPaymentResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidWalletState description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidWalletState title: type: string description: Generic title for the error. example: PaymentException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- PaymentException (code='InvalidWalletState' message='Wallet not ready to accept payments' metaData=undefined) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card required: - id - status - code - title - detail - meta GetVirtualDebitCardErrorResponse: anyOf: - $ref: '#/components/schemas/InvalidPaymentIntentForCardDetailsResponse' - $ref: '#/components/schemas/InvalidPaymentForCardDetailsResponse' - $ref: '#/components/schemas/PaymentNotFoundForCardDetailsResponse' - $ref: '#/components/schemas/WalletNotReadyForPaymentResponse' ForbiddenForCardDetailsResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 403 code: type: string enum: - AccessDenied description: A unique, camel-cased Accrue-specific code detailing the error. example: AccessDenied title: type: string description: Generic title for the error. example: PaymentException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- PaymentException (code='AccessDenied' message='You are not allowed to access this card' metaData=undefined) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card required: - id - status - code - title - detail - meta ListPaymentsResponse: type: object properties: data: type: array items: allOf: - $ref: '#/components/schemas/Payment' - type: object properties: links: type: object properties: self: type: string example: https://merchant-api.accruesavings.com/api/v1/payments virtualDebitCard: type: string example: >- https://secure-api.accruesavings.com/api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/card required: - self - virtualDebitCard description: A payment x-tags: - Model meta: type: object properties: total: type: number example: 1 limit: type: number example: 10 offset: type: number example: 0 required: - total - limit - offset required: - data - meta PaymentQueryValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'Validation failed for page[limit]: expected number' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments required: - id - status - code - title - detail - meta CapturePaymentResponse: type: object properties: data: allOf: - $ref: '#/components/schemas/Payment' - type: object properties: meta: type: object properties: processor: description: >- Opaque object reflecting the raw response from a third-party processor API call. The structure varies depending on which upstream call produced it and is not part of a stable, versioned contract. description: >- Optional metadata on the Payment resource. Omitted when no processor payload is attached to the response. description: A payment x-tags: - Model links: type: object properties: self: type: string example: /api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/capture required: - self included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - PaymentIntent attributes: type: object properties: balance: allOf: - $ref: '#/components/schemas/PaymentIntentBalanceInformation' - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - data - links - included CapturePayment: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - CapturePayment attributes: type: object properties: amount: type: integer description: Amount to capture in cents format: int32 required: - amount required: - id - type - attributes description: CapturePayment x-tags: - Model IncreasePaymentAuthorizationResponse: type: object properties: data: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Payment attributes: type: object properties: id: type: string format: uuid example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 status: type: string enum: - Canceled - Created - Failed - Processing - Returned - Sent description: >- The current status of the payment. Each status indicates a specific phase in the payment process, such as waiting for authorization, being processed, or having been successfully completed or canceled. example: Authorized amount: type: integer format: int32 example: 10500 channel: type: - string - 'null' description: >- External system identifier used to identify the payment channel. E.g. App Name, Activity ID, Checkout Interface, etc. example: ORG-1 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 fee: type: integer description: >- The fee assigned to this particular disbursement based on the whole payment fee, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 deprecated: true example: 10 remit: type: boolean description: >- Deprecated. Always returns `true`. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount - fee - remit description: >- Array of disbursements associated with this payment, including counterparty IDs, amounts, and fees. example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 800 fee: 10 remit: true - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 200 fee: 5 remit: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier example: pay_by_wallet required: - amount - type description: Processing fee details rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 description: Charges applied to this payment. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 fees: type: integer minimum: 0 description: Processing fees charged, in cents format: int32 example: 150 required: - rewards - fees description: Legacy charges breakdown. Use `charges` instead. deprecated: true expiresAt: type: string format: date-time description: >- The field indicates the date and time until which the payment is valid. After this date, the payment will either be automatically cancelled or completed. readOnly: true updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - amount - updatedAt - createdAt relationships: type: object properties: paymentIntent: type: object properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - PaymentIntent required: - id - type links: type: object properties: self: type: string format: uri example: >- /api/v1/payment-intents/497f6eca-6276-4993-bfeb-53cbbbba6f08 required: - self required: - data - links required: - paymentIntent required: - id - type - attributes - relationships links: type: object properties: self: type: string example: >- /api/v1/payments/4cf95060-dd01-42ac-9020-8ca42004920d/increase-authorization required: - self included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - PaymentIntent attributes: type: object properties: balance: allOf: - $ref: '#/components/schemas/PaymentIntentBalanceInformation' - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - data - links - included IncreaseAuthorization: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - IncreaseAuthorization attributes: type: object properties: increase: type: integer description: Amount to increase in cents format: int32 required: - increase required: - id - type - attributes description: IncreaseAuthorization x-tags: - Model CancelPaymentResponse: type: object properties: data: allOf: - $ref: '#/components/schemas/Payment' - type: object properties: attributes: type: object properties: id: type: string format: uuid example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 status: type: string enum: - Canceled - Created - Failed - Processing - Returned - Sent description: >- The current status of the payment. Each status indicates a specific phase in the payment process, such as waiting for authorization, being processed, or having been successfully completed or canceled. example: Canceled amount: type: integer description: >- The total amount of the payment processed, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. This amount may differ from the initially intended amount due to adjustments, fees, or additional charges. format: int32 example: 9999 channel: type: - string - 'null' description: >- External system identifier used to identify the payment channel. E.g. App Name, Activity ID, Checkout Interface, etc. example: ORG-1 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 fee: type: integer description: >- The fee assigned to this particular disbursement based on the whole payment fee, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 deprecated: true example: 10 remit: type: boolean description: >- Deprecated. Always returns `true`. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount - fee - remit description: >- Array of disbursements associated with this payment, including counterparty IDs, amounts, and fees. example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 800 fee: 10 remit: true - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 200 fee: 5 remit: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier example: pay_by_wallet required: - amount - type description: Processing fee details rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 description: Charges applied to this payment. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 fees: type: integer minimum: 0 description: Processing fees charged, in cents format: int32 example: 150 required: - rewards - fees description: Legacy charges breakdown. Use `charges` instead. deprecated: true expiresAt: type: string format: date-time description: >- The field indicates the date and time until which the payment is valid. After this date, the payment will either be automatically cancelled or completed. readOnly: true updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt meta: type: object properties: processor: description: >- Opaque object reflecting the raw response from a third-party processor API call. The structure varies depending on which upstream call produced it and is not part of a stable, versioned contract. description: >- Optional metadata on the Payment resource. Omitted when no processor payload is attached to the response. description: A payment x-tags: - Model links: type: object properties: self: type: string example: /api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/cancel required: - self included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - PaymentIntent attributes: type: object properties: balance: allOf: - $ref: '#/components/schemas/PaymentIntentBalanceInformation' - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - data - links - included CancelPaymentErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - IllegalOperation description: A unique, camel-cased Accrue-specific code detailing the error. example: IllegalOperation title: type: string description: Generic title for the error. example: PaymentException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- PaymentException (code='IllegalOperation' message='Payment cannot be canceled in sent state' metaData=undefined) - >- PaymentException (code='IllegalOperation' message='Cannot cancel a captured payment' metaData=undefined) - >- PaymentException (code='IllegalOperation' message='Cannot cancel payment that is already approved' metaData=undefined) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel required: - id - status - code - title - detail - meta PaymentNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - PaymentNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: PaymentNotFound title: type: string description: Generic title for the error. example: PaymentNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- PaymentNotFoundException (code='PaymentNotFound' message='Payment with ID '{paymentId}' not found.' metaData=undefined) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel required: - id - status - code - title - detail - meta CompletePaymentResponse: type: object properties: data: allOf: - $ref: '#/components/schemas/Payment' - type: object properties: {} description: A payment x-tags: - Model links: type: object properties: self: type: string example: /api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/complete required: - self included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - PaymentIntent attributes: type: object properties: balance: allOf: - $ref: '#/components/schemas/PaymentIntentBalanceInformation' - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - data - links - included Refund: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Refund attributes: type: object properties: status: type: string enum: - Failed - Pending - Sent - Waiting description: The current status of the refund. amount: type: integer description: >- The amount refunded, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 9999 message: type: string description: >- A human-readable message describing the refund status or outcome. example: 'Refund processed. Fee: 59 cents' reference: type: - string - 'null' description: >- Reference inherited from the parent Payment. This is not a direct field on the Refund entity. example: MERCHANT-GENERATED-TOKEN charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 59 type: type: string description: >- Fee type identifier. For refunds, this is `pay_by_wallet_refund`. example: pay_by_wallet_refund required: - amount - type description: Processing fee details for this refund rewards: type: integer minimum: 0 description: >- Rewards amount. Always 0 for refunds (rewards are not applicable to refunds). format: int32 example: 0 description: Charges applied to this refund. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount. Always 0 for refunds. format: int32 example: 0 fees: type: integer minimum: 0 description: >- Processing fees charged for this refund, in cents. Same value as `charges.fee.amount`. format: int32 example: 59 required: - rewards - fees description: Legacy charges breakdown. Use `charges` instead. deprecated: true id: type: string format: uuid example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes description: A refund x-tags: - Model Capture: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Capture attributes: type: object properties: id: type: string format: uuid method: type: string enum: - Direct - BankRails - VirtualDebitCard description: The method used for the capture. amount: type: integer description: The captured amount in cents. format: int32 externalPayments: type: object additionalProperties: {} description: Optional external payment references. reference: type: - string - 'null' description: Optional reference string. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - id - method - amount - updatedAt - createdAt required: - id - type - attributes description: A capture included in the refund response x-tags: - Model Client: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Client attributes: type: object properties: id: type: string format: uuid allowedOrigins: type: array items: type: string description: Allowed origins for this client. preferredStorage: type: object properties: Web: type: string enum: - localStorage - sessionStorage RN: type: string enum: - localStorage - sessionStorage description: Preferred storage type. merchantId: type: string format: uuid description: The merchant ID associated with this client. merchantName: type: string description: The merchant name. programName: type: string description: The program name. cardClearingTime: type: string enum: - Instant - TwoDays - ThreeDays - FourDays - FiveDays - Default description: >- Card clearing time. One of Instant, TwoDays, ThreeDays, FourDays, FiveDays, Default. achClearingTime: type: string enum: - Instant - TwoDays - ThreeDays - FourDays - FiveDays - Default description: >- ACH clearing time. One of Instant, TwoDays, ThreeDays, FourDays, FiveDays, Default. containerPlacements: type: object properties: Wallet: type: array items: type: object properties: type: type: string enum: - background - selector - css value: anyOf: - type: string - type: array items: type: string - type: object additionalProperties: {} variant: type: string enum: - Inline - Popup - Redirect isDefault: type: boolean isFixedPositionPlacement: type: boolean required: - type - value - variant PaymentMethods: type: array items: type: object properties: type: type: string enum: - background - selector - css value: anyOf: - type: string - type: array items: type: string - type: object additionalProperties: {} variant: type: string enum: - Inline - Popup - Redirect isDefault: type: boolean isFixedPositionPlacement: type: boolean required: - type - value - variant WalletBalance: type: array items: type: object properties: type: type: string enum: - background - selector - css value: anyOf: - type: string - type: array items: type: string - type: object additionalProperties: {} variant: type: string enum: - Inline - Popup - Redirect isDefault: type: boolean isFixedPositionPlacement: type: boolean required: - type - value - variant WalletRewards: type: array items: type: object properties: type: type: string enum: - background - selector - css value: anyOf: - type: string - type: array items: type: string - type: object additionalProperties: {} variant: type: string enum: - Inline - Popup - Redirect isDefault: type: boolean isFixedPositionPlacement: type: boolean required: - type - value - variant WalletPaymentSuccess: type: array items: type: object properties: type: type: string enum: - background - selector - css value: anyOf: - type: string - type: array items: type: string - type: object additionalProperties: {} variant: type: string enum: - Inline - Popup - Redirect isDefault: type: boolean isFixedPositionPlacement: type: boolean required: - type - value - variant description: >- Container placements per Flow (Wallet, PaymentMethods) and Widget (WalletBalance, WalletRewards, WalletPaymentSuccess). Every key is optional. containerDisplayRules: type: object properties: Wallet: type: array items: type: object properties: order: type: integer expectedResult: type: string enum: - show - hide lookupPlace: type: string enum: - url - document lookupType: type: string enum: - string - regex - selector lookupValue: type: string placementOverride: type: object properties: type: type: string enum: - background - selector - css value: anyOf: - type: string - type: array items: type: string - type: object additionalProperties: {} variant: type: string enum: - Inline - Popup - Redirect isDefault: type: boolean isFixedPositionPlacement: type: boolean required: - type - value - variant required: - order - expectedResult - lookupPlace - lookupType - lookupValue PaymentMethods: type: array items: type: object properties: order: type: integer expectedResult: type: string enum: - show - hide lookupPlace: type: string enum: - url - document lookupType: type: string enum: - string - regex - selector lookupValue: type: string placementOverride: type: object properties: type: type: string enum: - background - selector - css value: anyOf: - type: string - type: array items: type: string - type: object additionalProperties: {} variant: type: string enum: - Inline - Popup - Redirect isDefault: type: boolean isFixedPositionPlacement: type: boolean required: - type - value - variant required: - order - expectedResult - lookupPlace - lookupType - lookupValue WalletBalance: type: array items: type: object properties: order: type: integer expectedResult: type: string enum: - show - hide lookupPlace: type: string enum: - url - document lookupType: type: string enum: - string - regex - selector lookupValue: type: string placementOverride: type: object properties: type: type: string enum: - background - selector - css value: anyOf: - type: string - type: array items: type: string - type: object additionalProperties: {} variant: type: string enum: - Inline - Popup - Redirect isDefault: type: boolean isFixedPositionPlacement: type: boolean required: - type - value - variant required: - order - expectedResult - lookupPlace - lookupType - lookupValue WalletRewards: type: array items: type: object properties: order: type: integer expectedResult: type: string enum: - show - hide lookupPlace: type: string enum: - url - document lookupType: type: string enum: - string - regex - selector lookupValue: type: string placementOverride: type: object properties: type: type: string enum: - background - selector - css value: anyOf: - type: string - type: array items: type: string - type: object additionalProperties: {} variant: type: string enum: - Inline - Popup - Redirect isDefault: type: boolean isFixedPositionPlacement: type: boolean required: - type - value - variant required: - order - expectedResult - lookupPlace - lookupType - lookupValue WalletPaymentSuccess: type: array items: type: object properties: order: type: integer expectedResult: type: string enum: - show - hide lookupPlace: type: string enum: - url - document lookupType: type: string enum: - string - regex - selector lookupValue: type: string placementOverride: type: object properties: type: type: string enum: - background - selector - css value: anyOf: - type: string - type: array items: type: string - type: object additionalProperties: {} variant: type: string enum: - Inline - Popup - Redirect isDefault: type: boolean isFixedPositionPlacement: type: boolean required: - type - value - variant required: - order - expectedResult - lookupPlace - lookupType - lookupValue description: >- Container display rules per Flow and Widget. Every key is optional. containerIntegrityEffects: type: object properties: Wallet: type: array items: type: string enum: - EnsureContainerPersistence - LimitChildrenCount PaymentMethods: type: array items: type: string enum: - EnsureContainerPersistence - LimitChildrenCount WalletBalance: type: array items: type: string enum: - EnsureContainerPersistence - LimitChildrenCount WalletRewards: type: array items: type: string enum: - EnsureContainerPersistence - LimitChildrenCount WalletPaymentSuccess: type: array items: type: string enum: - EnsureContainerPersistence - LimitChildrenCount description: >- Container integrity effects per Flow and Widget. Every key is optional. copyAdjustments: type: object properties: balanceSuccessIcon: type: string balanceSuccessMessage: type: string description: Optional copy overrides. rewardsFlowType: type: string enum: - Delayed - Instant description: Rewards flow type. One of Delayed, Instant. rewardsRateType: type: string enum: - Savings - Purchase description: Rewards rate type. One of Savings, Purchase. widgetCustomizations: type: object properties: walletIconUrl: type: string togglePosition: type: string enum: - left - right toggleStyle: type: string enum: - switch - checkbox showToggleStatus: type: boolean textStyle: type: string enum: - small - smallSemibold paymentSuccessTitle: type: string paymentSuccessDescription: type: string paymentWalletButtonType: type: string enum: - button - link paymentWalletButtonText: type: string rewardsBackgroundColor: type: string rewardsCopyColor: type: string balanceBreakdownPadding: type: string enum: - auto - tiny - small - medium rewardsBadgeSignedOutLabel: type: string description: Partial widget customization overrides. Every field is optional. rewardProfile: type: object properties: level1pct: type: number level2pct: type: number level3pct: type: number required: - level1pct - level2pct - level3pct description: Reward profile with percentage levels. onBoardingReward: type: number description: Onboarding reward amount. purchaseReward: type: number description: Purchase reward amount. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - id - allowedOrigins - preferredStorage - merchantId - merchantName - containerPlacements - containerDisplayRules - containerIntegrityEffects - copyAdjustments - rewardsFlowType - rewardsRateType - widgetCustomizations - updatedAt - createdAt required: - id - type - attributes description: A client included in the refund response x-tags: - Model RefundPaymentResponse: type: object properties: data: type: object properties: id: type: string example: 123e4567-e89b-12d3-a456-426614174000 type: type: string enum: - Payment relationships: type: object properties: paymentIntent: type: object properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - PaymentIntent required: - id - type links: type: object properties: self: type: string format: uri example: >- /api/v1/payment-intents/497f6eca-6276-4993-bfeb-53cbbbba6f08 required: - self required: - data - links refunds: type: object properties: data: type: array items: type: object properties: id: type: string type: type: string required: - id - type example: - id: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 type: Refund required: - data captures: type: object properties: data: type: array items: type: object properties: id: type: string type: type: string required: - id - type example: - id: 4cf95060-dd01-42ac-9020-8ca42004920d type: Capture required: - data required: - paymentIntent - refunds - captures links: type: object properties: virtualDebitCard: type: string example: >- https://secure-api.accruesavings.com/api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/card required: - virtualDebitCard meta: type: object properties: processor: description: >- Opaque object reflecting the raw response from a third-party processor API call. The structure varies depending on which upstream call produced it and is not part of a stable, versioned contract. description: >- Optional metadata on the Payment resource. Omitted when no processor payload is attached to the response. attributes: type: object properties: id: type: string example: 123e4567-e89b-12d3-a456-426614174000 status: type: string enum: - Canceled - Created - Failed - Processing - Returned - Sent description: >- The current status of the payment. Each status indicates a specific phase in the payment process, such as waiting for authorization, being processed, or having been successfully completed or canceled. example: Sent amount: type: integer description: >- The total amount of the payment processed, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. This amount may differ from the initially intended amount due to adjustments, fees, or additional charges. format: int32 example: 9999 channel: type: - string - 'null' description: >- External system identifier used to identify the payment channel. E.g. App Name, Activity ID, Checkout Interface, etc. example: ORG-1 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 fee: type: integer description: >- The fee assigned to this particular disbursement based on the whole payment fee, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 deprecated: true example: 10 remit: type: boolean description: >- Deprecated. Always returns `true`. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount - fee - remit description: >- Array of disbursements associated with this payment, including counterparty IDs, amounts, and fees. example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 800 fee: 10 remit: true - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 200 fee: 5 remit: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier example: pay_by_wallet required: - amount - type description: Processing fee details rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 description: Charges applied to this payment. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount spent from wallet balance, in cents format: int32 example: 1000 fees: type: integer minimum: 0 description: Processing fees charged, in cents format: int32 example: 150 required: - rewards - fees description: Legacy charges breakdown. Use `charges` instead. deprecated: true expiresAt: type: string format: date-time description: >- The field indicates the date and time until which the payment is valid. After this date, the payment will either be automatically cancelled or completed. readOnly: true updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - id - updatedAt - createdAt required: - id - type - relationships - links - attributes links: type: object properties: self: type: string example: /api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/refund required: - self included: type: array items: anyOf: - $ref: '#/components/schemas/Refund' - type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - PaymentIntent attributes: type: object properties: balance: allOf: - $ref: >- #/components/schemas/PaymentIntentBalanceInformation - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: >- Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt relationships: type: object properties: client: type: object properties: data: type: object properties: id: type: string type: type: string enum: - Client required: - id - type required: - data required: - client required: - id - type - attributes - relationships - $ref: '#/components/schemas/Capture' - $ref: '#/components/schemas/Client' example: - id: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 type: Refund attributes: status: Sent amount: 1000 message: 'Refund processed. Fee: 59 cents' reference: MERCHANT-GENERATED-TOKEN charges: fee: amount: 59 type: pay_by_wallet_refund rewards: 0 deductions: rewards: 0 fees: 59 id: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 createdAt: '2024-06-19T12:19:17.031Z' updatedAt: '2024-06-19T12:19:17.064Z' - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 type: PaymentIntent attributes: status: PromotedToPayment amount: 9999 id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 expiresAt: '2024-12-19T10:39:59.447Z' createdAt: '2024-06-19T10:39:59.452Z' updatedAt: '2024-06-19T10:43:59.337Z' relationships: client: data: id: b5f8c9d2-1a3e-4f5b-8c7d-9e0f1a2b3c4d type: Client - id: 4cf95060-dd01-42ac-9020-8ca42004920d type: Capture attributes: id: 4cf95060-dd01-42ac-9020-8ca42004920d createdAt: '2024-06-19T12:00:00.000Z' updatedAt: '2024-06-19T12:00:00.000Z' method: Direct amount: 9999 - id: b5f8c9d2-1a3e-4f5b-8c7d-9e0f1a2b3c4d type: Client attributes: id: b5f8c9d2-1a3e-4f5b-8c7d-9e0f1a2b3c4d createdAt: '2024-01-01T00:00:00.000Z' updatedAt: '2024-06-19T10:00:00.000Z' allowedOrigins: - https://example.com preferredStorage: Web: localStorage merchantId: 123e4567-e89b-12d3-a456-426614174000 merchantName: Example Merchant containerPlacements: {} containerDisplayRules: {} containerIntegrityEffects: {} copyAdjustments: {} rewardsFlowType: Instant rewardsRateType: Purchase widgetCustomizations: {} meta: type: object properties: message: type: string example: >- Full refund will be initiated after the original payment is successfully received. required: - message required: - data - links - included - meta RefundValidationResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidRefund description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidRefund title: type: string description: Generic title for the error. example: PaymentValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - The payment cannot be refunded for the requested amount. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/refund required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/payments/123e4567-e89b-12d3-a456-426614174000/refund required: - id - status - code - title - detail - meta RefundPayment: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - RefundPayment attributes: type: object properties: amount: type: integer description: Amount to refund in cents format: int32 idempotencyKey: type: string minLength: 1 maxLength: 255 description: >- A unique key to prevent duplicate refund operations. Must be between 1 and 255 characters. If a refund with the same idempotency key already exists, the existing refund will be returned. example: refund-order-12345 disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 remit: type: boolean description: >- Deprecated. This field is accepted but always treated as `true` regardless of the value provided. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount description: >- Optional array of disbursement reversals for pay-by-wallet refunds. Each entry specifies a counterparty to debit and the amount to reverse. The sum of all disbursement amounts must equal the refund amount. When omitted, the system automatically derives proportional disbursements from the original payment's disbursement breakdown. example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 500 - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 500 required: - amount - idempotencyKey required: - id - type - attributes description: RefundPayment x-tags: - Model PaymentResponse: type: object properties: data: $ref: '#/components/schemas/Payment' required: - data SimulationCardAuthorizationValidationResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidAmount description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidAmount title: type: string description: Generic title for the error. example: SimulationValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Amount must be greater than 0. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth required: - id - status - code - title - detail - meta SimulationCardNotSupportedResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - WalletNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletNotFound title: type: string description: Generic title for the error. example: SimulationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'Payment does not support VDC authorization: {paymentId}' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth required: - id - status - code - title - detail - meta SimulateCardErrorResponse: anyOf: - $ref: '#/components/schemas/SimulationCardAuthorizationValidationResponse' - $ref: '#/components/schemas/SimulationCardNotSupportedResponse' SimulationPaymentNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - NotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: NotFound title: type: string description: Generic title for the error. example: SimulationNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'Payment not found for paymentId: {paymentId}' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth required: - id - status - code - title - detail - meta SimulateCardAuthorization: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - SimulateCardAuthorization attributes: type: object properties: amount: type: integer description: Amount to authorize in cents format: int32 required: - amount required: - id - type - attributes description: SimulateCardAuthorization x-tags: - Model AuthorizationRequest: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - AuthorizationRequest attributes: type: object properties: paymentId: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 walletId: type: string format: uuid description: Wallet ID example: 123e4567-e89b-12d3-a456-426614174000 status: type: string enum: - Declined - Approved - Pending - Canceled description: Status example: Approved amount: type: integer description: Amount format: int32 example: 9999 createdAt: type: string format: date-time readOnly: true updatedAt: type: string format: date-time readOnly: true required: - paymentId - walletId - status - amount - createdAt - updatedAt required: - id - type - attributes description: AuthorizationRequest x-tags: - Model ListAuthorizationRequestsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/AuthorizationRequest' required: - data SimulateCardCapture: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - SimulateCardCapture attributes: type: object properties: authorizationRequestId: type: string format: uuid description: Authorization Request ID amount: type: integer description: Amount to capture in cents format: int32 required: - authorizationRequestId - amount required: - id - type - attributes description: SimulateCardCapture x-tags: - Model CardCapture: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Capture attributes: type: object properties: id: type: string format: uuid description: Capture ID example: 123e4567-e89b-12d3-a456-426614174000 amount: type: integer description: >- The total amount of the payment captured, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 9999 success: type: boolean description: Indicates whether the capture was successful. example: true method: type: string enum: - BankRails - VirtualDebitCard description: The payment method used to capture the payment. example: VirtualDebitCard reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - id - amount - success - method - updatedAt - createdAt required: - id - type - attributes description: CardCapture x-tags: - Model CardCapturesRequestsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/CardCapture' required: - data SimulateCardAuthorizationCapture: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - SimulateCardAuthorizationCapture attributes: type: object properties: amount: type: integer description: Amount to authorize/capture in cents format: int32 required: - amount required: - id - type - attributes description: SimulateCardAuthorizationCapture x-tags: - Model DemoBackupPaymentMethod: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - DemoBackupPaymentMethod attributes: type: object properties: linkedAccountId: type: string format: uuid description: >- The ID of the created linked account that serves as the backup payment method example: 123e4567-e89b-12d3-a456-426614174000 accountMask: type: string description: The last 4 digits of the account number example: '1234' institutionName: type: string description: The name of the financial institution example: Test Bank accountType: type: string description: The type of account (e.g., checking, savings) example: checking status: type: string description: The status of the linked account example: active updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - linkedAccountId - accountMask - institutionName - accountType - status - updatedAt - createdAt required: - id - type - attributes description: Demo Backup Payment Method x-tags: - Model CreateDemoBackupPaymentMethodResponse: type: object properties: data: $ref: '#/components/schemas/DemoBackupPaymentMethod' required: - data InvalidTransactionTypeResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidTransactionType description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidTransactionType title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Invalid transaction type meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank required: - id - status - code - title - detail - meta WalletNotFoundForSimulationResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - WalletNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletNotFound title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Wallet not found meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank required: - id - status - code - title - detail - meta WalletBarcode: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - WalletBarcode attributes: type: object properties: lookUpId: type: string description: >- Lookup identifier for the barcode. Used when creating payment intents or fetching the barcode. example: SCAN-LOOKUP-ID expiresAt: type: - string - 'null' format: date-time description: When the barcode expires. Null if no expiry. example: '2025-12-31T23:59:59.000Z' usageLimit: type: - integer - 'null' description: >- Maximum number of times the barcode can be used. Null if unlimited. format: int32 usageCount: type: integer description: >- Number of times the barcode has been used. Present in list/generate responses. format: int32 referenceId: type: - string - 'null' description: >- External reference ID. Present when fetching barcode by lookUpId. example: customer-reference-id createdAt: type: string format: date-time readOnly: true updatedAt: type: string format: date-time readOnly: true required: - lookUpId - expiresAt - createdAt - updatedAt required: - id - type - attributes description: WalletBarcode x-tags: - Model ListWalletBarcodesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/WalletBarcode' required: - data GenerateWalletBarcodeResponse: type: object properties: data: $ref: '#/components/schemas/WalletBarcode' required: - data GenerateBarcodeValidationResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidTransaction description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidTransaction title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- Cannot generate barcode for wallet. Ensure the wallet is active and KYC is approved. - Failed to generate barcode for wallet. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes required: - id - status - code - title - detail - meta GenerateWalletBarcode: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - GenerateWalletBarcode attributes: type: object properties: expiresAt: type: string format: date-time description: When the barcode should expire. Omit for default expiration. example: '2025-12-31T23:59:59.000Z' usageLimit: type: integer description: >- Maximum number of times the barcode can be used. Omit for unlimited. format: int32 reuseActive: type: boolean description: >- If true, reuses an active barcode when one exists instead of creating a new one. required: - id - type - attributes description: Generate Wallet Barcode request x-tags: - Model GetWalletBarcodeResponse: type: object properties: data: $ref: '#/components/schemas/WalletBarcode' required: - data BarcodeExpiredOrInvalidResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidTransaction description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidTransaction title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Barcode has expired. - Barcode has exceeded maximum uses. - Barcode does not belong to this merchant. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/simulation/barcodes/SCAN-LOOKUP-ID required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/simulation/barcodes/SCAN-LOOKUP-ID required: - id - status - code - title - detail - meta BarcodeNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - BarcodeNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: BarcodeNotFound title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Barcode not found meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/simulation/barcodes/SCAN-LOOKUP-ID required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/simulation/barcodes/SCAN-LOOKUP-ID required: - id - status - code - title - detail - meta InvalidTransactionResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidTransaction description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidTransaction title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Invalid transaction meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/fail-transaction required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/fail-transaction required: - id - status - code - title - detail - meta FailPendingTransactionRequest: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - FailPendingTransaction attributes: type: object properties: transactionId: type: string format: uuid description: >- Optional transaction ID. If not provided, the first pending transaction will be failed. example: 123e4567-e89b-12d3-a456-426614174000 reason: type: string enum: - Canceled - HardDecline - SoftDecline - Expired - InsufficientFunds - Reversed - Unknown description: >- Transaction failure reason applied when failing the pending transaction (ACH or card). If not provided, defaults to Unknown. example: InsufficientFunds required: - id - type - attributes description: Fail Pending Transaction request x-tags: - Model CounterpartyDepositSimulationValidationResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidAmount description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidAmount title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Amount must be a positive integer. - >- Counterparty does not have an Accrue deposit account to receive external deposits. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits required: - id - status - code - title - detail - meta CounterpartyNotFoundForSimulationResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - NotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: NotFound title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Counterparty not found meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits required: - id - status - code - title - detail - meta SimulateCounterpartyDeposit: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - SimulateCounterpartyDeposit attributes: type: object properties: amount: type: integer minimum: 1 description: Amount to deposit in cents format: int32 example: 10000 required: - amount required: - id - type - attributes description: SimulateCounterpartyDeposit x-tags: - Model Wallet: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Wallet attributes: type: object properties: status: type: string enum: - Active - ClosingWithClosedLoop - ManualReview - Closed default: Active description: The current status of the wallet. closedAt: type: - string - 'null' format: date-time description: The date and time when the wallet was closed. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt relationships: type: object properties: user: type: object properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - User required: - id - type required: - data required: - id - type - attributes - relationships description: A wallet x-tags: - Model GetWalletResponse: type: object properties: data: $ref: '#/components/schemas/Wallet' included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - User attributes: type: object properties: disabled: type: boolean description: Flag to indicate if the user account is disabled. publicId: type: string description: The public identifier for the user. profile: type: object properties: firstName: type: string lastName: type: string email: type: string format: email phoneNumber: type: string attachedProfile: type: object properties: referenceId: type: string description: >- Deprecated. Use stableReferenceId instead. Legacy merchant-scoped user identifier. Immutable once set. deprecated: true example: Any string identifier provided by you. stableReferenceId: type: string description: >- Stable merchant-scoped user identifier. Required for all new integrations; immutable once set. The field remains absent in some requests only to support existing merchants migrating from referenceId. When set, becomes the effectiveReferenceId. example: stable-abc-123 effectiveReferenceId: type: string description: >- Computed field (read-only). Equals stableReferenceId when set, otherwise falls back to referenceId. Use as the canonical user identifier. example: stable-abc-123 email: type: string example: User email address kept in your system. phoneNumber: type: string example: User phone number kept in your system. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - data - included GetWalletErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'invalid input syntax for type uuid: "{uuid}"' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta WalletNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - WalletNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletNotFound title: type: string description: Generic title for the error. example: WalletNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Wallet with ID '{walletId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta UnexpectedErrorForWalletResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: WalletException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - An unexpected error occurred. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets required: - id - status - code - title - detail - meta GetWalletByBarcodeResponse: type: object properties: data: $ref: '#/components/schemas/Wallet' included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - User attributes: type: object properties: disabled: type: boolean description: Flag to indicate if the user account is disabled. publicId: type: string description: The public identifier for the user. profile: type: object properties: firstName: type: string lastName: type: string email: type: string format: email phoneNumber: type: string attachedProfile: type: object properties: referenceId: type: string description: >- Deprecated. Use stableReferenceId instead. Legacy merchant-scoped user identifier. Immutable once set. deprecated: true example: Any string identifier provided by you. stableReferenceId: type: string description: >- Stable merchant-scoped user identifier. Required for all new integrations; immutable once set. The field remains absent in some requests only to support existing merchants migrating from referenceId. When set, becomes the effectiveReferenceId. example: stable-abc-123 effectiveReferenceId: type: string description: >- Computed field (read-only). Equals stableReferenceId when set, otherwise falls back to referenceId. Use as the canonical user identifier. example: stable-abc-123 email: type: string example: User email address kept in your system. phoneNumber: type: string example: User phone number kept in your system. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - data - included WalletBarcodeExpiredOrInvalidResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - WalletIdentifierExpired description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletIdentifierExpired title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Barcode has expired. - Barcode has exceeded maximum uses. - Barcode does not belong to this merchant. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/barcode/SCAN-LOOKUP-ID required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/barcode/SCAN-LOOKUP-ID required: - id - status - code - title - detail - meta WalletForBarcodeNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - WalletForBarcodeNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletForBarcodeNotFound title: type: string description: Generic title for the error. example: ErrorResponseDto detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Wallet for barcode not found meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/barcode/SCAN-LOOKUP-ID required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/barcode/SCAN-LOOKUP-ID required: - id - status - code - title - detail - meta CreateWalletResponse: type: object properties: data: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Wallet attributes: type: object properties: status: type: string enum: - Active - ClosingWithClosedLoop - ManualReview - Closed default: Active description: The current status of the wallet. closedAt: type: - string - 'null' format: date-time description: The date and time when the wallet was closed. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - data WalletUserNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - UserNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: UserNotFound title: type: string description: Generic title for the error. example: WalletValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - User with ID '{userId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets required: - id - status - code - title - detail - meta WalletAlreadyExistsResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - WalletAlreadyExists description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletAlreadyExists title: type: string description: Generic title for the error. example: WalletValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - A wallet for this user and merchant already exists. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets required: - id - status - code - title - detail - meta PhoneNumberBannedForWalletResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - NotAllowed description: A unique, camel-cased Accrue-specific code detailing the error. example: NotAllowed title: type: string description: Generic title for the error. example: WalletValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - The given phone number is not allowed to create a wallet. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets required: - id - status - code - title - detail - meta MerchantIsDisabledForWalletResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - MerchantIsDisabled description: A unique, camel-cased Accrue-specific code detailing the error. example: MerchantIsDisabled title: type: string description: Generic title for the error. example: WalletValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - The merchant is currently disabled. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets required: - id - status - code - title - detail - meta InvalidIdentifierForWalletResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidIdentifier description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidIdentifier title: type: string description: Generic title for the error. example: WalletValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Invalid merchant or reward profile identifier provided. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets required: - id - status - code - title - detail - meta InvalidUuidSyntaxForWalletResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'invalid input syntax for type uuid: "{uuid}"' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta CreateWalletErrorResponse: anyOf: - $ref: '#/components/schemas/WalletUserNotFoundResponse' - $ref: '#/components/schemas/WalletAlreadyExistsResponse' - $ref: '#/components/schemas/PhoneNumberBannedForWalletResponse' - $ref: '#/components/schemas/MerchantIsDisabledForWalletResponse' - $ref: '#/components/schemas/InvalidIdentifierForWalletResponse' - $ref: '#/components/schemas/InvalidUuidSyntaxForWalletResponse' GetWalletBalanceResponse: type: object properties: data: allOf: - $ref: '#/components/schemas/Wallet' - type: object properties: attributes: type: object properties: status: type: string enum: - Active - ClosingWithClosedLoop - ManualReview - Closed default: Active description: The current status of the wallet. closedAt: type: - string - 'null' format: date-time description: The date and time when the wallet was closed. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true balance: type: object properties: available: type: object properties: deposit: type: number description: Funds deposited by the user. reward: type: object properties: accrue: type: number merchant: type: number total: type: number required: - accrue - merchant - total description: Issued rewards. total: type: number description: Deposits and rewards combined. required: - deposit - reward - total description: Funds available immediately. pending: type: object properties: deposit: type: number description: Funds deposited by the user. reward: type: object properties: accrue: type: number merchant: type: number total: type: number required: - accrue - merchant - total description: Issued rewards. total: type: number description: Deposits and rewards combined. required: - deposit - reward - total description: Funds currently pending for funding transactions. reserved: type: object properties: total: type: number description: Deposits and rewards combined. required: - total description: >- Funds currently reserved for upcoming payment captures. total: type: object properties: deposit: type: number description: Funds deposited by the user. reward: type: object properties: accrue: type: number merchant: type: number total: type: number required: - accrue - merchant - total description: Issued rewards. total: type: number description: Deposits and rewards combined. required: - deposit - reward - total description: Total balance with all funds combined. required: - available - pending - reserved - total required: - updatedAt - createdAt - balance example: balance: available: deposit: 1000 reward: accrue: 20 merchant: 180 total: 200 total: 1200 pending: deposit: 0 reward: accrue: 0 merchant: 0 total: 0 total: 0 reserved: total: 600 total: deposit: 1500 reward: accrue: 30 merchant: 270 total: 300 total: 1800 description: Balance of a Wallet x-tags: - Model required: - data MultipleWalletsFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - MultipleWalletsFound description: A unique, camel-cased Accrue-specific code detailing the error. example: MultipleWalletsFound title: type: string description: Generic title for the error. example: WalletValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- Multiple wallets found for the provided user reference. Please use a more specific identifier. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/balance required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/balance required: - id - status - code - title - detail - meta GetWalletBalanceErrorResponse: anyOf: - $ref: '#/components/schemas/MultipleWalletsFoundResponse' - $ref: '#/components/schemas/InvalidUuidSyntaxForWalletResponse' NoWalletFoundForBalanceResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - WalletNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletNotFound title: type: string description: Generic title for the error. example: WalletNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - No wallet found for the provided parameters. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/balance required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/balance required: - id - status - code - title - detail - meta ListWalletsResponse: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Wallet attributes: type: object properties: status: type: string enum: - Active - ClosingWithClosedLoop - ManualReview - Closed default: Active description: The current status of the wallet. closedAt: type: - string - 'null' format: date-time description: The date and time when the wallet was closed. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt relationships: type: object properties: user: type: object properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - User required: - id - type required: - data required: - id - type - attributes - relationships meta: type: object properties: total: type: number example: 1 limit: type: number example: 10 offset: type: number example: 0 required: - total - limit - offset required: - data - meta WalletQueryValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'Validation failed for page[limit]: expected number' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets required: - id - status - code - title - detail - meta CreateOneTimeDepositResponse: type: object properties: data: type: object properties: id: type: string format: uuid description: >- The transaction ID. This is the same value as `attributes.transactionId`. example: 123e4567-e89b-12d3-a456-426614174000 type: type: string enum: - OneTimeDeposit attributes: type: object properties: id: type: string format: uuid description: Transaction ID. example: 123e4567-e89b-12d3-a456-426614174000 transactionId: type: string format: uuid description: The ID of the created transaction. Same value as `id`. example: 123e4567-e89b-12d3-a456-426614174000 status: type: string enum: - Pending - Cleared - Failed description: >- The status of the created transaction. New deposits are typically created in `Pending` status until they are cleared or fail. example: Pending amount: type: integer description: >- The total amount charged to the user, represented in the smallest currency unit (e.g., cents for USD). format: int32 example: 1300 disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty who will receive the net disbursement. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total disbursement amount from the deposit, represented in the smallest currency unit (e.g., cents for USD). format: int32 example: 300 fee: type: integer description: >- Accrue's fee deducted from the disbursement amount. Always returns 0. format: int32 example: 0 deprecated: true remit: type: boolean description: >- Deprecated. Always returns `true`. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount - fee - remit description: >- Breakdown of fee disbursements included in the deposit, if any were provided. example: - counterpartyId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: 300 fee: 0 remit: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier (e.g., 'ACHFee', 'CardFee') example: ACHFee required: - amount - type description: Processing fee details description: Charges applied to this deposit. deductions: type: object properties: fee: type: integer minimum: 0 description: Accrue processing fee in cents format: int32 example: 150 required: - fee description: Legacy charges breakdown. Use `charges` instead. deprecated: true required: - id - transactionId - status - amount required: - id - type - attributes required: - data KycNotCompletedResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - NotAllowed description: A unique, camel-cased Accrue-specific code detailing the error. example: NotAllowed title: type: string description: Generic title for the error. example: WalletValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - KYC is not completed for this wallet. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/transactions required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/transactions required: - id - status - code - title - detail - meta DepositFailedAtCardProcessorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - DepositFailedAtCardProcessor description: A unique, camel-cased Accrue-specific code detailing the error. example: DepositFailedAtCardProcessor title: type: string description: Generic title for the error. example: WalletValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- Deposit failed at card processor. Please try again or contact support. meta: type: object properties: environment: type: string enum: - production - sandbox timestamp: type: string format: date-time path: type: string originalCode: type: string description: >- The original card processor response code. This field is only present for card deposit failures. For bank transfer (ACH) deposit failures, different error codes are returned (e.g., InsufficientFunds, ExceedACHLimit, LinkedAccountDisconnected) and this field is not included. Response codes are categorized by their prefix: - **10xxx**: Approved - The payment request was successful. - **20xxx**: Soft declines - The payment request was declined, though subsequent attempts may succeed. - **30xxx**: Hard declines - The request was declined. Most hard declines require the issuer or cardholder to fix any outstanding issues before you can retry. - **4xxxx**: Risk responses - The request raised a risk response. The response_code and status depend on the action specified in your Fraud Detection risk strategies. - **50xxx**: Card payout declines - The card payout request was declined. example: '20005' required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/transactions originalCode: '20005' required: - id - status - code - title - detail - meta ExceedsMaxOneTimeDepositAmountResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - ExceedsMaxOneTimeDepositAmount description: A unique, camel-cased Accrue-specific code detailing the error. example: ExceedsMaxOneTimeDepositAmount title: type: string description: Generic title for the error. example: WalletValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Deposit amount exceeds the merchant maximum. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/transactions required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/transactions required: - id - status - code - title - detail - meta CreateOneTimeDepositErrorResponse: anyOf: - $ref: '#/components/schemas/InvalidIdentifierForWalletResponse' - $ref: '#/components/schemas/KycNotCompletedResponse' - $ref: '#/components/schemas/DepositFailedAtCardProcessorResponse' - $ref: '#/components/schemas/ExceedsMaxOneTimeDepositAmountResponse' - $ref: '#/components/schemas/InvalidUuidSyntaxForWalletResponse' TransactionNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - TransactionNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: TransactionNotFound title: type: string description: Generic title for the error. example: TransactionNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Transaction with ID '{transactionId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/transactions/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000/transactions/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta CreateOneTimeDepositNotFoundResponse: anyOf: - $ref: '#/components/schemas/WalletNotFoundResponse' - $ref: '#/components/schemas/TransactionNotFoundResponse' ClosedLoopWithdrawResponse: type: object properties: data: type: object properties: id: type: string format: uuid description: The wallet ID. Same as the `walletId` path parameter. example: 123e4567-e89b-12d3-a456-426614174000 type: type: string enum: - Withdraw attributes: type: object properties: split: type: array items: type: object properties: linkedAccountId: type: string format: uuid description: >- The linked account ID that received (or will receive) this portion of the withdrawal. example: 123e4567-e89b-12d3-a456-426614174000 institutionName: type: string description: >- Name of the financial institution for the linked account. example: Example Bank accountMask: type: string description: >- Masked account number (e.g., last four digits) for display. example: '1234' amount: type: integer description: Amount in cents allocated to this linked account. example: 2500 required: - linkedAccountId - institutionName - accountMask - amount description: >- Breakdown of the withdrawal across linked accounts. Each item indicates how much is allocated to each account. required: - split required: - id - type - attributes required: - data ClosedLoopWithdrawErrorResponse: anyOf: - $ref: '#/components/schemas/InvalidIdentifierForWalletResponse' - $ref: '#/components/schemas/InvalidUuidSyntaxForWalletResponse' ClosedLoopWithdrawNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - WalletNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletNotFound title: type: string description: Generic title for the error. example: WalletNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Wallet with ID '{walletId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta Transaction: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Transaction attributes: type: object properties: id: type: string format: uuid description: Transaction ID example: 123e4567-e89b-12d3-a456-426614174000 walletId: type: string format: uuid description: The wallet ID associated with this transaction example: 123e4567-e89b-12d3-a456-426614174000 type: type: string description: The type of transaction example: NonRecurring status: type: string enum: - Pending - Cleared - Failed description: The current status of the transaction example: Cleared amount: type: integer description: >- The transaction amount, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 9999 createdAt: type: string format: date-time description: The date and time when the transaction was created example: '2024-01-15T10:30:00Z' clearedAt: type: string format: date-time description: >- The date and time when the transaction was cleared (undefined if not yet cleared) readOnly: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier (e.g., 'ACHFee', 'CardFee'). example: ACHFee required: - amount - type description: Processing fee details description: Charges applied to this transaction. required: - id - walletId - type - status - amount - createdAt required: - id - type - attributes description: A transaction x-tags: - Model ListTransactionsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Transaction' meta: type: object properties: total: type: number example: 1 limit: type: number example: 10 offset: type: number example: 0 required: - total - limit - offset required: - data - meta ListTransactionsErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'invalid input syntax for type uuid: "{uuid}"' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta ListTransactionsNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - WalletNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletNotFound title: type: string description: Generic title for the error. example: WalletNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Wallet with ID '{walletId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta GetTransactionResponse: type: object properties: data: $ref: '#/components/schemas/Transaction' required: - data GetTransactionErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'invalid input syntax for type uuid: "{uuid}"' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/wallets/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta GetTransactionNotFoundResponse: anyOf: - $ref: '#/components/schemas/WalletNotFoundResponse' - $ref: '#/components/schemas/TransactionNotFoundResponse' User: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - User attributes: type: object properties: disabled: type: boolean description: Flag to indicate if the user account is disabled. publicId: type: string description: The public identifier for the user. profile: type: object properties: firstName: type: string lastName: type: string email: type: string format: email phoneNumber: type: string attachedProfile: type: object properties: referenceId: type: string description: >- Deprecated. Use stableReferenceId instead. Legacy merchant-scoped user identifier. Immutable once set. deprecated: true example: Any string identifier provided by you. stableReferenceId: type: string description: >- Stable merchant-scoped user identifier. Required for all new integrations; immutable once set. The field remains absent in some requests only to support existing merchants migrating from referenceId. When set, becomes the effectiveReferenceId. example: stable-abc-123 effectiveReferenceId: type: string description: >- Computed field (read-only). Equals stableReferenceId when set, otherwise falls back to referenceId. Use as the canonical user identifier. example: stable-abc-123 email: type: string example: User email address kept in your system. phoneNumber: type: string example: User phone number kept in your system. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes description: A user x-tags: - Model ListUsersResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/User' meta: type: object properties: total: type: number example: 1 limit: type: number example: 10 offset: type: number example: 0 required: - total - limit - offset required: - data - meta UserQueryValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'Validation failed for page[limit]: expected number' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users required: - id - status - code - title - detail - meta UnexpectedErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: UserException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - An unexpected error occurred. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users required: - id - status - code - title - detail - meta InvalidIdentifierForAttachedProfileResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidIdentifier description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidIdentifier title: type: string description: Generic title for the error. example: UserValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - User with ID '{userReference}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/123e4567-e89b-12d3-a456-426614174000/attached-profile required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/users/123e4567-e89b-12d3-a456-426614174000/attached-profile required: - id - status - code - title - detail - meta InvalidUuidSyntaxResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'invalid input syntax for type uuid: "{uuid}"' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta UpdateUserAttachedProfileErrorResponse: anyOf: - $ref: '#/components/schemas/InvalidIdentifierForAttachedProfileResponse' - $ref: '#/components/schemas/InvalidUuidSyntaxResponse' AttachedProfile: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - AttachedProfile attributes: type: object properties: referenceId: type: string description: >- Deprecated. Use stableReferenceId instead. Legacy merchant-scoped user identifier. Immutable once set. deprecated: true example: Any string identifier provided by you. stableReferenceId: type: string description: >- Stable merchant-scoped user identifier. Required for all new integrations; immutable once set. Cannot be changed after initial assignment. Optional in the API only while legacy merchants transition from referenceId. example: stable-abc-123 email: type: string example: User email address kept in your system. phoneNumber: type: string example: User phone number kept in your system. required: - id - type - attributes description: AttachedProfile patch object x-tags: - Model ReducedUser: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - User attributes: type: object properties: disabled: type: boolean description: Flag to indicate if the user account is disabled. profile: type: object properties: firstName: type: string lastName: type: string email: type: string format: email phoneNumber: type: string updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - disabled - updatedAt - createdAt required: - id - type - attributes description: A user x-tags: - Model GetUserResponse: type: object properties: data: $ref: '#/components/schemas/ReducedUser' required: - data GetUserErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'invalid input syntax for type uuid: "{uuid}"' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta UserNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - UserNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: UserNotFound title: type: string description: Generic title for the error. example: UserNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - User with ID '{userId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta CreateUserResponse: type: object properties: data: $ref: '#/components/schemas/User' required: - data InvalidIdentifierResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidIdentifier description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidIdentifier title: type: string description: Generic title for the error. example: UserValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Invalid merchant identifier provided. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users required: - id - status - code - title - detail - meta PhoneNumberBannedResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - PhoneNumberBanned description: A unique, camel-cased Accrue-specific code detailing the error. example: PhoneNumberBanned title: type: string description: Generic title for the error. example: UserValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - The provided phone number has been banned. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users required: - id - status - code - title - detail - meta MerchantIsDisabledResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - MerchantIsDisabled description: A unique, camel-cased Accrue-specific code detailing the error. example: MerchantIsDisabled title: type: string description: Generic title for the error. example: UserException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - The merchant account is disabled and cannot create users. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users required: - id - status - code - title - detail - meta CreateUserErrorResponse: anyOf: - $ref: '#/components/schemas/InvalidIdentifierResponse' - $ref: '#/components/schemas/PhoneNumberBannedResponse' - $ref: '#/components/schemas/MerchantIsDisabledResponse' UserAlreadyExistsResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 409 code: type: string enum: - UserAlreadyExists description: A unique, camel-cased Accrue-specific code detailing the error. example: UserAlreadyExists title: type: string description: Generic title for the error. example: UserAlreadyExistsException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - A user with this email or phone number already exists. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users required: - id - status - code - title - detail - meta IdentityProviderFailureResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - IdentityProviderFailure description: A unique, camel-cased Accrue-specific code detailing the error. example: IdentityProviderFailure title: type: string description: Generic title for the error. example: IdentityProviderUserCreationFailed detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Failed to create user in identity provider. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users required: - id - status - code - title - detail - meta CreateUserInternalServerErrorResponse: anyOf: - $ref: '#/components/schemas/IdentityProviderFailureResponse' - $ref: '#/components/schemas/UnexpectedErrorResponse' CreateUser: type: object properties: type: type: string enum: - User attributes: type: object properties: email: type: string format: email description: User email address example: user@example.com phoneNumber: type: string description: User phone number example: '+12125550001' firstName: type: string description: User first name example: John lastName: type: string description: User last name example: Doe required: - email required: - type - attributes description: Create user request x-tags: - Model AcceptKycDisclosureDocumentsErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'invalid input syntax for type uuid: "{uuid}"' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta UserNotFoundForDisclosureResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - UserNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: UserNotFound title: type: string description: Generic title for the error. example: UserNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - User with ID '{userId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/123e4567-e89b-12d3-a456-426614174000/disclosures/kyc required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/disclosures/kyc required: - id - status - code - title - detail - meta IdentityVerificationChallenge: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - IdentityVerificationChallenge attributes: type: object properties: challengeId: type: string format: uuid description: Unique identifier for this verification challenge. example: 123e4567-e89b-12d3-a456-426614174000 expiresAt: type: string format: date-time description: >- ISO-8601 timestamp when the challenge expires. Challenges are valid for 30 minutes. example: '2026-06-17T12:30:00.000Z' questions: type: array items: type: object properties: id: type: string description: >- Opaque question identifier. Submit answers using this value. example: q_4e8d9f0a prompt: type: string description: Question text presented to the user. example: What is your full name? options: type: array items: type: object properties: id: type: string description: >- Opaque option identifier. Submit this value with the parent question. example: opt_7f3a2b1c label: type: string description: Human-readable option text shown to the user. example: Jane Doe required: - id - label minItems: 2 description: Multiple-choice options for the question. required: - id - prompt - options description: >- Three knowledge-based authentication questions generated from the user's profile, linked accounts, and wallet activity. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - challengeId - expiresAt - questions - updatedAt - createdAt required: - id - type - attributes description: >- An active identity verification challenge with multiple-choice questions. x-tags: - Model CreateIdentityVerificationChallengeResponse: type: object properties: data: $ref: '#/components/schemas/IdentityVerificationChallenge' required: - data CreateIdentityVerificationChallengeErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - CooldownActive description: A unique, camel-cased Accrue-specific code detailing the error. example: CooldownActive title: type: string description: Generic title for the error. example: Verification Cooldown Active detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- Identity verification is temporarily unavailable after a failed attempt. Try again later. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2026-06-17T12:00:00.000Z' path: type: string example: /api/v1/users/:userIdentifier/identity-verification/challenges retryAfter: type: string format: date-time description: ISO-8601 timestamp when a new challenge can be created. example: '2026-06-17T13:30:00.000Z' required: - environment - timestamp - path - retryAfter example: environment: sandbox timestamp: '2026-06-17T12:00:00.000Z' path: /api/v1/users/:userIdentifier/identity-verification/challenges retryAfter: '2026-06-17T13:30:00.000Z' required: - id - status - code - title - detail - meta InsufficientVerificationDataResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 403 code: type: string enum: - InsufficientVerificationData description: A unique, camel-cased Accrue-specific code detailing the error. example: InsufficientVerificationData title: type: string description: Generic title for the error. example: Insufficient Verification Data detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- This user does not have enough profile data to generate verification questions. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/:userIdentifier/identity-verification/challenges required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/:userIdentifier/identity-verification/challenges required: - id - status - code - title - detail - meta UserNotFoundForIdentityVerificationResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - UserNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: UserNotFound title: type: string description: Generic title for the error. example: User Not Found detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - The user was not found for this merchant. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/:userIdentifier/identity-verification/challenges required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/:userIdentifier/identity-verification/challenges required: - id - status - code - title - detail - meta UnexpectedIdentityVerificationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: Unexpected Error detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - An unexpected error occurred during identity verification. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/:userIdentifier/identity-verification required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/:userIdentifier/identity-verification required: - id - status - code - title - detail - meta IdentityVerificationResult: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - IdentityVerificationResult attributes: type: object properties: passed: type: boolean description: Whether the user answered all questions correctly. example: true verificationToken: type: - string - 'null' description: >- Single-use token required to apply a verified profile update. Present only when `passed` is `true`. Valid for 10 minutes. example: >- pvt_a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456 expiresAt: type: - string - 'null' format: date-time description: >- ISO-8601 timestamp when the verification token expires. Present only when `passed` is `true`. example: '2026-06-17T12:40:00.000Z' failureReason: type: - string - 'null' enum: - IncorrectAnswer - ChallengeExpired - MaxAttemptsExceeded description: >- Reason the submission did not pass. `null` when `passed` is `true`. example: IncorrectAnswer updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - passed - verificationToken - expiresAt - failureReason - updatedAt - createdAt required: - id - type - attributes description: Outcome of an identity verification challenge submission. x-tags: - Model SubmitIdentityVerificationChallengeResponse: type: object properties: data: $ref: '#/components/schemas/IdentityVerificationResult' required: - data ChallengeExpiredResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - ChallengeExpired description: A unique, camel-cased Accrue-specific code detailing the error. example: ChallengeExpired title: type: string description: Generic title for the error. example: Challenge Expired detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - The verification challenge has expired. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/:userIdentifier/identity-verification/challenges/123e4567-e89b-12d3-a456-426614174000/submissions required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/users/:userIdentifier/identity-verification/challenges/123e4567-e89b-12d3-a456-426614174000/submissions required: - id - status - code - title - detail - meta ChallengeFailedResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - ChallengeFailed description: A unique, camel-cased Accrue-specific code detailing the error. example: ChallengeFailed title: type: string description: Generic title for the error. example: Challenge Failed detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - The verification challenge is no longer active. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/:userIdentifier/identity-verification/challenges/123e4567-e89b-12d3-a456-426614174000/submissions required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/users/:userIdentifier/identity-verification/challenges/123e4567-e89b-12d3-a456-426614174000/submissions required: - id - status - code - title - detail - meta MaxAttemptsExceededResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - MaxAttemptsExceeded description: A unique, camel-cased Accrue-specific code detailing the error. example: MaxAttemptsExceeded title: type: string description: Generic title for the error. example: Max Attempts Exceeded detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - The maximum number of verification attempts has been exceeded. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/:userIdentifier/identity-verification/challenges/123e4567-e89b-12d3-a456-426614174000/submissions required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/users/:userIdentifier/identity-verification/challenges/123e4567-e89b-12d3-a456-426614174000/submissions required: - id - status - code - title - detail - meta IdentityVerificationValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - ValidationError description: A unique, camel-cased Accrue-specific code detailing the error. example: ValidationError title: type: string description: Generic title for the error. example: Validation Error detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- One or more identity verification fields are invalid. Ensure challengeId is a valid UUID in the URL path, question/option IDs match the active challenge, or the user identifier is unambiguous for your merchant. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/:userIdentifier/identity-verification/profile-updates required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/users/:userIdentifier/identity-verification/profile-updates required: - id - status - code - title - detail - meta SubmitIdentityVerificationChallengeErrorResponse: anyOf: - $ref: '#/components/schemas/ChallengeExpiredResponse' - $ref: '#/components/schemas/ChallengeFailedResponse' - $ref: '#/components/schemas/MaxAttemptsExceededResponse' - $ref: '#/components/schemas/IdentityVerificationValidationErrorResponse' ChallengeNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - ChallengeNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: ChallengeNotFound title: type: string description: Generic title for the error. example: Challenge Not Found detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - The verification challenge was not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/:userIdentifier/identity-verification/challenges/123e4567-e89b-12d3-a456-426614174000/submissions required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/users/:userIdentifier/identity-verification/challenges/123e4567-e89b-12d3-a456-426614174000/submissions required: - id - status - code - title - detail - meta SubmitIdentityVerificationChallengeRequest: type: object properties: data: type: object properties: type: type: string enum: - IdentityVerificationSubmission attributes: type: object properties: answers: type: array items: type: object properties: questionId: type: string description: The `id` of the question being answered. example: q_4e8d9f0a optionId: type: string description: The `id` of the selected option. example: opt_7f3a2b1c required: - questionId - optionId description: One answer per question in the active challenge. metadata: type: object additionalProperties: {} description: >- Optional partner metadata stored with the verification attempt. required: - answers required: - type - attributes required: - data ProfileUpdateResult: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - ProfileUpdateResult attributes: type: object properties: phoneNumber: type: - string - 'null' description: The user's phone number after the update, in E.164 format. example: '+12125551234' email: type: - string - 'null' description: The user's email address after the update. example: user@example.com appliedAt: type: string format: date-time description: ISO-8601 timestamp when the profile update was applied. example: '2026-06-17T12:35:00.000Z' updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - phoneNumber - email - appliedAt - updatedAt - createdAt required: - id - type - attributes description: Confirmation of a verified profile update. x-tags: - Model ApplyVerifiedProfileUpdateResponse: type: object properties: data: $ref: '#/components/schemas/ProfileUpdateResult' required: - data ApplyVerifiedProfileUpdateErrorResponse: anyOf: - $ref: '#/components/schemas/ChallengeExpiredResponse' - $ref: '#/components/schemas/IdentityVerificationValidationErrorResponse' ApplyVerifiedProfileUpdateNotFoundResponse: anyOf: - $ref: '#/components/schemas/UserNotFoundForIdentityVerificationResponse' - $ref: '#/components/schemas/ChallengeNotFoundResponse' ApplyVerifiedProfileUpdateRequest: type: object properties: data: type: object properties: type: type: string enum: - ProfileUpdate attributes: type: object properties: verificationToken: type: string description: Single-use token from a successful challenge submission. example: >- pvt_a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456 phoneNumber: type: string description: >- New phone number in E.164 format (for example, `+12125551234`). example: '+12125551234' email: type: string format: email description: New email address. example: user@example.com required: - verificationToken required: - type - attributes required: - data WalletWidgetData: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - WalletWidgetData attributes: type: object properties: payload: type: string description: Wallet Widget data encoded in base64. example: YmFzZTY0IGVuY29kZWQgZGF0YQ== dto: type: object properties: dynamic: type: object properties: value: type: number example: 1 required: - value required: - dynamic description: >- Payload decoded into a structured format. The actual shape and content are dynamic and must be evaluated by the client for a particular use-case. relationships: type: object properties: wallet: type: object properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - Wallet required: - id - type required: - data required: - wallet links: type: object properties: self: type: string example: >- https://merchant-api.accruesavings.com/api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000 required: - self required: - id - type - attributes - relationships - links description: Widgets x-tags: - Model GetWalletWidgetDataResponse: type: object properties: data: $ref: '#/components/schemas/WalletWidgetData' required: - data NoWalletFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - NoWalletFound description: A unique, camel-cased Accrue-specific code detailing the error. example: NoWalletFound title: type: string description: Generic title for the error. example: WidgetException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- WidgetException (code='NoWalletFound' message='No wallet found for defined filters.' metaData=undefined) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta InvalidIdentifierForWidgetResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidIdentifier description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidIdentifier title: type: string description: Generic title for the error. example: WidgetException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- WidgetException (code='InvalidIdentifier' message='No valid identifier passed for wallet identification.' metaData=undefined) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/widgets/wallet?filter[userReference]=123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/widgets/wallet?filter[userReference]=123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta MultipleWalletsFoundForWidgetResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - MultipleWalletsFound description: A unique, camel-cased Accrue-specific code detailing the error. example: MultipleWalletsFound title: type: string description: Generic title for the error. example: WidgetException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- WidgetException (code='MultipleWalletsFound' message='Multiple wallets found for defined filters.' metaData=undefined) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/widgets/wallet?filter[userReference]=123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/widgets/wallet?filter[userReference]=123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta WalletWidgetErrorResponse: anyOf: - $ref: '#/components/schemas/NoWalletFoundResponse' - $ref: '#/components/schemas/InvalidIdentifierForWidgetResponse' - $ref: '#/components/schemas/MultipleWalletsFoundForWidgetResponse' LinkedAccountWidgetData: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - LinkedAccountWidgetData attributes: type: object properties: payload: type: string description: Linked Account Widget data encoded in base64. example: YmFzZTY0IGVuY29kZWQgZGF0YQ== dto: type: object properties: institutionName: type: string example: Visa accountMask: type: string example: '1234' required: - institutionName - accountMask description: >- Payload decoded into a structured format. The actual shape and content are dynamic and must be evaluated by the client for a particular use-case. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - payload - dto - updatedAt - createdAt required: - id - type - attributes description: Widgets x-tags: - Model GetLinkedAccountWidgetDataResponse: type: object properties: data: $ref: '#/components/schemas/LinkedAccountWidgetData' required: - data InvalidPaymentIntentIdentifierResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidIdentifier description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidIdentifier title: type: string description: Generic title for the error. example: WidgetException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - No valid identifier passed for payment intent identification. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account required: - id - status - code - title - detail - meta NoLinkedAccountFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - NoLinkedAccountFound description: A unique, camel-cased Accrue-specific code detailing the error. example: NoLinkedAccountFound title: type: string description: Generic title for the error. example: WidgetException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - No linked account found for payment intent. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account required: - id - status - code - title - detail - meta LinkedAccountWidgetErrorResponse: anyOf: - $ref: '#/components/schemas/InvalidPaymentIntentIdentifierResponse' - $ref: '#/components/schemas/NoLinkedAccountFoundResponse' UnexpectedWidgetErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: WidgetException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - An unexpected error occurred. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account required: - id - status - code - title - detail - meta GetWalletWidgetDataV2Response: type: object properties: data: anyOf: - $ref: '#/components/schemas/WalletWidgetData' - type: 'null' - type: 'null' required: - data WalletWidgetV2ErrorResponse: anyOf: - $ref: '#/components/schemas/InvalidIdentifierForWidgetResponse' - $ref: '#/components/schemas/MultipleWalletsFoundForWidgetResponse' FindWalletWidgetDataV2Response: type: object properties: data: anyOf: - $ref: '#/components/schemas/WalletWidgetData' - type: 'null' - type: 'null' required: - data WidgetSession: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - WidgetSession attributes: type: object properties: sessionToken: type: string description: The session token used to authenticate widget requests example: wgt_session_1234567890abcdef createdAt: type: string format: date-time description: The timestamp when the session was created example: '2025-01-15T10:30:00.000Z' required: - sessionToken - createdAt required: - id - type - attributes description: Widget Session x-tags: - Model CreateWidgetSessionResponse: type: object properties: data: $ref: '#/components/schemas/WidgetSession' required: - data WidgetSessionValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Validation failed for data.attributes.widgetType meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/widgets/session required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/widgets/session required: - id - status - code - title - detail - meta CreateWidgetSessionRequest: type: object properties: data: type: object properties: type: type: string enum: - CreateWidgetSession attributes: type: object properties: widgetType: type: string enum: - PaymentMethods description: The type of widget for which to create a session example: PaymentMethods required: - widgetType required: - type - attributes required: - data SweepstakesRequestInvalidResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidRequest title: type: string description: Generic title for the error. example: SweepstakesException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Invalid request. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/sweepstakes/{sweepstakesId}/results required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/sweepstakes/{sweepstakesId}/results required: - id - status - code - title - detail - meta SweepstakesNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - SweepstakesNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: SweepstakesNotFound title: type: string description: Generic title for the error. example: SweepstakesException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Sweepstakes not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/sweepstakes/{sweepstakesId}/results required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/sweepstakes/{sweepstakesId}/results required: - id - status - code - title - detail - meta AddSweepstakesResultsErrorResponse: anyOf: - $ref: '#/components/schemas/SweepstakesRequestInvalidResponse' - $ref: '#/components/schemas/SweepstakesNotFoundResponse' UnexpectedSweepstakesErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: SweepstakesException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - An unexpected error occurred. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/sweepstakes/{sweepstakesId}/results required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/sweepstakes/{sweepstakesId}/results required: - id - status - code - title - detail - meta SweepstakesResults: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - SweepstakesResults attributes: type: object properties: customer: type: object properties: idType: type: string enum: - ID - PhoneNumber default: PhoneNumber description: Type of ID used to identify the customer. example: PhoneNumber id: type: string description: User phone number recorded during checkout. example: '+12125550001' required: - id required: - customer required: - id - type - attributes description: SweepstakesResults x-tags: - Model RewardResponse: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Reward attributes: type: object properties: kind: type: string enum: - immediate - preIssued description: >- Informational discriminator only. Use `canUpdate` and `canCancel` to decide which operations are allowed — do not branch behavior on `kind` alone. example: immediate amount: type: integer exclusiveMinimum: 0 description: Reward amount in cents. format: int32 example: 500 walletId: type: - string - 'null' format: uuid description: >- Wallet that received the reward. Set for immediate credits; `null` for pre-issued rewards awaiting claim. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 status: type: string enum: - Credited - Created - Claimed - Expired - Cancelled description: >- Unified lifecycle status. Immediate wallet credits are `Credited`; pre-issued rewards use `Created`, `Claimed`, `Expired`, or `Cancelled`. example: Credited canUpdate: type: boolean description: Whether `PATCH /api/v1/rewards/{id}` is allowed for this reward. example: false canCancel: type: boolean description: >- Whether `DELETE /api/v1/rewards/{id}` is allowed for this reward. example: false claimExpiresAt: type: - string - 'null' format: date-time description: >- When a pre-issued reward must be claimed before it expires. `null` for immediate wallet credits. example: '2026-09-15T12:00:00.000Z' message: type: - string - 'null' description: Optional message attached to the reward. example: Thank you for your loyalty! reasonCode: type: - string - 'null' description: Partner-defined reason code for reporting and reconciliation. example: CX-COMPENSATION-001 costCenter: type: - string - 'null' description: Partner-defined cost center for reporting. example: CX-SUPPORT notificationEmail: type: - string - 'null' format: email description: Email address to notify when a pre-issued reward is claimed. example: agent@partner.example required: - kind - amount - walletId - status - canUpdate - canCancel - claimExpiresAt - message - reasonCode - costCenter - notificationEmail required: - id - type - attributes description: >- Unified reward resource for both immediate wallet credits and pre-issued rewards awaiting claim. x-tags: - Model IssueRewardResponse: type: object properties: data: $ref: '#/components/schemas/RewardResponse' required: - data InvalidRewardRequestResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidRequest title: type: string description: Generic title for the error. example: RewardException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Invalid phone number format - Amount must be greater than 0 - Invalid notification email format meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards required: - id - status - code - title - detail - meta IssueRewardWalletNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - WalletNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletNotFound title: type: string description: Generic title for the error. example: RewardException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Wallet not found for recipient. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards required: - id - status - code - title - detail - meta MultipleActiveWalletsResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - MultipleActiveWallets description: A unique, camel-cased Accrue-specific code detailing the error. example: MultipleActiveWallets title: type: string description: Generic title for the error. example: RewardException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Multiple active wallets match this phone number. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards required: - id - status - code - title - detail - meta IssueRewardErrorResponse: anyOf: - $ref: '#/components/schemas/InvalidRewardRequestResponse' - $ref: '#/components/schemas/IssueRewardWalletNotFoundResponse' - $ref: '#/components/schemas/MultipleActiveWalletsResponse' WalletNotIssuableResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 409 code: type: string enum: - WalletNotIssuable description: A unique, camel-cased Accrue-specific code detailing the error. example: WalletNotIssuable title: type: string description: Generic title for the error. example: RewardConflictException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- The recipient wallet cannot receive issued rewards in its current state. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards required: - id - status - code - title - detail - meta PreIssuedConflictResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 409 code: type: string enum: - PreIssuedConflict description: A unique, camel-cased Accrue-specific code detailing the error. example: PreIssuedConflict title: type: string description: Generic title for the error. example: RewardConflictException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - A pre-issued reward already exists for this recipient. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards required: - id - status - code - title - detail - meta IdempotencyConflictResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 409 code: type: string enum: - IdempotencyConflict description: A unique, camel-cased Accrue-specific code detailing the error. example: IdempotencyConflict title: type: string description: Generic title for the error. example: RewardConflictException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Idempotency key reused with a different payload. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards required: - id - status - code - title - detail - meta IssueRewardConflictResponse: anyOf: - $ref: '#/components/schemas/WalletNotIssuableResponse' - $ref: '#/components/schemas/PreIssuedConflictResponse' - $ref: '#/components/schemas/IdempotencyConflictResponse' IssueRewardUnexpectedErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: RewardIssuanceError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Failed to issue reward. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards required: - id - status - code - title - detail - meta IssueRewardRequest: type: object properties: type: type: string enum: - IssueReward attributes: type: object properties: phoneNumber: type: string minLength: 1 description: Recipient phone number in E.164 or supported national format. example: '+15551234567' amount: type: integer exclusiveMinimum: 0 maximum: 2147483647 description: Reward amount in cents. Must be a positive integer. format: int32 example: 500 idempotencyKey: type: string minLength: 1 maxLength: 255 description: >- Required idempotency key (1–255 characters). Idempotency is scoped to this key plus a server-computed SHA-256 fingerprint of the normalized phone number, amount, and optional metadata fields (`message`, `reasonCode`, `costCenter`, `notificationEmail`). Reusing the same key with an identical request body returns the original result. Reusing the key with any change to those fields returns `409 IdempotencyConflict`. example: reward-2025-06-11-001 message: type: string description: Optional message shown to the recipient. example: Thanks for being a valued customer! reasonCode: type: string description: Partner-defined reason code. example: CX-COMPENSATION-001 costCenter: type: string description: Partner-defined cost center. example: CX-SUPPORT notificationEmail: type: string format: email description: Email to notify when a pre-issued reward is claimed. example: agent@partner.example required: - phoneNumber - amount - idempotencyKey required: - type - attributes description: Request to issue a reward to a phone number. x-tags: - Model ListIssuedRewardsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/RewardResponse' meta: type: object properties: total: type: number example: 1 limit: type: number example: 10 offset: type: number example: 0 required: - total - limit - offset required: - data - meta RewardLookupUnexpectedErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: RewardLookupError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Failed to look up reward. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards required: - id - status - code - title - detail - meta GetIssuedRewardByIdResponse: type: object properties: data: allOf: - $ref: '#/components/schemas/RewardResponse' - type: - object - 'null' required: - data UpdateRewardResponse: type: object properties: data: $ref: '#/components/schemas/RewardResponse' required: - data RewardNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - NotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: NotFound title: type: string description: Generic title for the error. example: RewardNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Reward not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta InvalidRewardStateResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 409 code: type: string enum: - InvalidState description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidState title: type: string description: Generic title for the error. example: RewardConflictException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Reward cannot be modified in its current state. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta RewardManagementUnexpectedErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: RewardManagementError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Failed to update or cancel reward. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/rewards/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/rewards/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta UpdateRewardRequest: type: object properties: type: type: string enum: - UpdateReward attributes: type: object properties: amount: type: integer exclusiveMinimum: 0 maximum: 2147483647 description: Updated reward amount in cents. format: int32 example: 750 message: type: string description: Updated message shown to the recipient. example: Updated thank-you note reasonCode: type: string description: Updated reason code. example: CX-COMPENSATION-002 costCenter: type: string description: Updated cost center. example: CX-ESCALATIONS notificationEmail: type: string format: email description: Updated notification email. example: supervisor@partner.example required: - type - attributes description: >- Request to update a reward when `canUpdate` is `true` (pre-issued rewards in `Created` status). At least one attribute must be provided. x-tags: - Model Gift: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Gift attributes: type: object properties: available: type: integer minimum: 0 description: Remaining amount available to spend, in integer cents. format: int32 example: 3000 originalAmount: type: integer minimum: 0 description: Original gift amount, in integer cents. format: int32 example: 5000 required: - available - originalAmount required: - id - type - attributes description: A gift remaining-balance lookup. x-tags: - Model GetGiftByLookUpIdResponse: type: object properties: data: $ref: '#/components/schemas/Gift' required: - data GiftLookUpIdExpiredOrInvalidResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - GiftIdentifierExpired - GiftIdentifierMaxUsesExceeded description: A unique, camel-cased Accrue-specific code detailing the error. example: GiftIdentifierExpired title: type: string description: Generic title for the error. example: GiftValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - LookUpId has expired. - LookUpId has exceeded maximum uses. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/gifts/SCAN-LOOKUP-ID required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/gifts/SCAN-LOOKUP-ID required: - id - status - code - title - detail - meta GiftNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - GiftNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: GiftNotFound title: type: string description: Generic title for the error. example: GiftNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Gift for lookUpId not found meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/gifts/SCAN-LOOKUP-ID required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/gifts/SCAN-LOOKUP-ID required: - id - status - code - title - detail - meta Kyc: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Kyc attributes: type: object properties: status: type: string enum: - Approved - AwaitingDocuments - Denied - ManualReview - NotStarted - Pending - Unknown description: The current status of the user's KYC verification example: Approved updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - status - updatedAt - createdAt required: - id - type - attributes description: KYC verification status for a user x-tags: - Model CreateKycApplicationResponse: type: object properties: data: $ref: '#/components/schemas/Kyc' required: - data UserNotFoundForBankingResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - UserNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: UserNotFound title: type: string description: Generic title for the error. example: BankingException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - User not found or invalid. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc required: - id - status - code - title - detail - meta InvalidRequestResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidRequest title: type: string description: Generic title for the error. example: BankingException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Invalid KYC application data. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc/application required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc/application required: - id - status - code - title - detail - meta KycApplicationFailedResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - KycApplicationFailed description: A unique, camel-cased Accrue-specific code detailing the error. example: KycApplicationFailed title: type: string description: Generic title for the error. example: BankingException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - KYC application already exists. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc/application required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc/application required: - id - status - code - title - detail - meta InvalidUuidSyntaxForBankingResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'invalid input syntax for type uuid: "{uuid}"' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc required: - id - status - code - title - detail - meta CreateKycApplicationErrorResponse: anyOf: - $ref: '#/components/schemas/UserNotFoundForBankingResponse' - $ref: '#/components/schemas/InvalidRequestResponse' - $ref: '#/components/schemas/KycApplicationFailedResponse' - $ref: '#/components/schemas/InvalidUuidSyntaxForBankingResponse' UnexpectedErrorForBankingResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: BankingException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - An unexpected error occurred. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc required: - id - status - code - title - detail - meta GetKycStatusResponse: type: - object - 'null' properties: data: $ref: '#/components/schemas/Kyc' required: - data KycStatusNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - KycStatusNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: KycStatusNotFound title: type: string description: Generic title for the error. example: BankingException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - KYC status not found for user. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc/status required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc/status required: - id - status - code - title - detail - meta GetKycStatusErrorResponse: anyOf: - $ref: '#/components/schemas/UserNotFoundForBankingResponse' - $ref: '#/components/schemas/KycStatusNotFoundResponse' - $ref: '#/components/schemas/InvalidUuidSyntaxForBankingResponse' DocumentVerificationLink: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - DocumentVerificationLink attributes: type: object properties: url: type: string format: uri description: >- The secure URL to document verification portal where users can upload identity documents example: https://verify.sardine.ai/session/abc123xyz updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - url - updatedAt - createdAt required: - id - type - attributes description: A secure link for users to complete document verification x-tags: - Model GetDocumentVerificationLinkResponse: type: object properties: data: $ref: '#/components/schemas/DocumentVerificationLink' required: - data DocumentVerificationFailedResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - DocumentVerificationFailed description: A unique, camel-cased Accrue-specific code detailing the error. example: DocumentVerificationFailed title: type: string description: Generic title for the error. example: BankingException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - User bank profile is invalid. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc/document-verification-link required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/users/123e4567-e89b-12d3-a456-426614174000/kyc/document-verification-link required: - id - status - code - title - detail - meta GetDocumentVerificationLinkErrorResponse: anyOf: - $ref: '#/components/schemas/UserNotFoundForBankingResponse' - $ref: '#/components/schemas/DocumentVerificationFailedResponse' - $ref: '#/components/schemas/InvalidUuidSyntaxForBankingResponse' CompleteDocumentVerificationResponse: type: - object - 'null' properties: data: $ref: '#/components/schemas/Kyc' required: - data CompleteDocumentVerificationErrorResponse: anyOf: - $ref: '#/components/schemas/UserNotFoundForBankingResponse' - $ref: '#/components/schemas/DocumentVerificationFailedResponse' - $ref: '#/components/schemas/InvalidUuidSyntaxForBankingResponse' CounterpartyExternalBankAccount: type: object properties: accountNumber: type: string description: The payee's bank account number for settlement. example: '1234567890' routingNumber: type: string description: The payee's ABA routing number for settlement. example: '021000021' accountType: type: string enum: - Checking - Savings description: The type of the payee's settlement bank account. example: Checking required: - accountNumber - routingNumber - accountType description: The payee's own bank account for settlement. CounterpartyInternalBankAccount: type: object properties: accountNumber: type: string description: >- Account number of the Accrue bank account associated with this counterparty. example: '9876543210' routingNumber: type: string description: >- Routing number of the Accrue bank account associated with this counterparty. example: '021000021' accountType: type: string enum: - Checking - Savings description: >- Account type of the Accrue bank account associated with this counterparty. example: Checking required: - accountNumber - routingNumber - accountType description: >- The Accrue bank account associated with this counterparty. Present only when a dedicated Accrue deposit account has been provisioned. Use these details to send funds to this counterparty over bank rails. Counterparty: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Counterparty attributes: type: object properties: updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true label: type: string description: Optional label for the counterparty. accountNumber: type: string description: >- Deprecated. Use `externalBankAccount.accountNumber` instead. Still returned for compatibility. example: '1234567890' deprecated: true routingNumber: type: string description: >- Deprecated. Use `externalBankAccount.routingNumber` instead. Still returned for compatibility. example: '021000021' deprecated: true accountType: type: string enum: - Checking - Savings description: >- Deprecated. Use `externalBankAccount.accountType` instead. Still returned for compatibility. deprecated: true externalBankAccount: $ref: '#/components/schemas/CounterpartyExternalBankAccount' internalBankAccount: $ref: '#/components/schemas/CounterpartyInternalBankAccount' balance: type: object properties: pending: type: integer description: >- The balance associated with the counterparty not yet settled, in cents. Can exceed the int32 range — read it into a 64-bit integer. format: int64 example: 1000 available: type: integer description: >- Settled balance associated with the counterparty, in cents. Can exceed the int32 range — read it into a 64-bit integer. A single payout is capped below this (see the payout `amount` field), so a balance above that cap is paid out across multiple payouts. format: int64 example: 1000 required: - pending - available required: - updatedAt - createdAt required: - id - type - attributes description: >- A counterparty represents a payee. `externalBankAccount` is the payee's own bank account for settlement. Top-level `accountNumber` / `routingNumber` / `accountType` still echo those values but are deprecated. `internalBankAccount` is the Accrue account you can fund over bank rails when one has been provisioned. x-tags: - Model CreateCounterpartyResponse: type: object properties: data: $ref: '#/components/schemas/Counterparty' required: - data CounterpartyValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Validation failed for data.attributes.routingNumber meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties required: - id - status - code - title - detail - meta CounterpartyAlreadyExistsResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 409 code: type: string enum: - CounterpartyAlreadyExists description: A unique, camel-cased Accrue-specific code detailing the error. example: CounterpartyAlreadyExists title: type: string description: Generic title for the error. example: CounterpartyAlreadyExistsException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Counterparty already exists for this client meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties required: - id - status - code - title - detail - meta UnexpectedCounterpartyErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: CounterpartyException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - An unexpected error occurred. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta ListCounterpartiesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Counterparty' required: - data UnauthorizedForCounterpartiesResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 401 code: type: string enum: - Unauthorized description: A unique, camel-cased Accrue-specific code detailing the error. example: Unauthorized title: type: string description: Generic title for the error. example: ClientNotAuthenticatedException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'unauthorized: no authenticated client for this request' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties/ required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties/ required: - id - status - code - title - detail - meta GetCounterpartyResponse: type: object properties: data: $ref: '#/components/schemas/Counterparty' required: - data CounterpartyNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - CounterpartyNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: CounterpartyNotFound title: type: string description: Generic title for the error. example: CounterpartyNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Counterparty with ID '{counterpartyId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta UpdateCounterpartyResponse: type: object properties: data: $ref: '#/components/schemas/Counterparty' required: - data CounterpartyHasBalanceResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 409 code: type: string enum: - CounterpartyHasBalance description: A unique, camel-cased Accrue-specific code detailing the error. example: CounterpartyHasBalance title: type: string description: Generic title for the error. example: CounterpartyHasBalanceException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- Counterparty {counterpartyId} still holds a balance and cannot be deleted. Pay out the remaining balance first. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta CounterpartyPayout: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - CounterpartyPayout attributes: type: object properties: amount: type: integer description: Amount in cents format: int32 example: 5000 status: type: string enum: - Approved - Cancelled - Completed - Denied - Failed - NeedsApproval - Pending - Processing - Returned - Reversed - Sent description: Current status of the payout example: Sent description: type: - string - 'null' description: Description of the payout example: Payout to vendor effectiveDate: type: string description: Effective date of the payout (ISO 8601 date string) example: '2024-01-15' counterpartyId: type: string format: uuid description: Counterparty ID (from our system) example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - amount - status - description - effectiveDate - counterpartyId - updatedAt - createdAt required: - id - type - attributes description: >- A payout represents a transfer of funds from a counterparty's available balance to their bank account. x-tags: - Model PayoutFromCounterpartyResponse: type: object properties: data: $ref: '#/components/schemas/CounterpartyPayout' required: - data InsufficientBalanceResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InsufficientBalance description: A unique, camel-cased Accrue-specific code detailing the error. example: InsufficientBalance title: type: string description: Generic title for the error. example: CounterpartyInsufficientBalanceException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- Insufficient balance for payout. Please check the counterparty balance and try again. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000/payouts required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000/payouts required: - id - status - code - title - detail - meta CreateCounterpartyPayoutErrorResponse: anyOf: - $ref: '#/components/schemas/InsufficientBalanceResponse' - $ref: '#/components/schemas/CounterpartyValidationErrorResponse' ListCounterpartyPayoutsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/CounterpartyPayout' meta: type: object properties: total: type: number example: 1 limit: type: number example: 10 offset: type: number example: 0 required: - total - limit - offset required: - data - meta CounterpartyTransfer: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - CounterpartyTransfer attributes: type: object properties: updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true fromCounterpartyId: type: string format: uuid description: ID of the source counterparty. example: 123e4567-e89b-12d3-a456-426614174000 toCounterpartyId: type: string format: uuid description: ID of the destination counterparty. example: 123e4567-e89b-12d3-a456-426614174000 amount: type: integer minimum: 1 description: Amount in cents format: int32 example: 1500 status: type: string enum: - Pending - Completed - Failed description: Current status of the counterparty transfer. example: Completed idempotencyKey: type: string minLength: 1 maxLength: 255 description: Idempotency key to prevent duplicate transfers. example: transfer_12345 externalLedgerTransactionId: type: - string - 'null' description: >- The external ledger transaction ID from the payment provider, if available. example: lt_abc123 failureReason: type: - string - 'null' description: Reason for transfer failure, if applicable. metadata: type: - object - 'null' additionalProperties: type: string description: >- Optional string-keyed metadata associated with the transfer. Values must be strings; serialize numbers, booleans, or structured data as strings before sending (e.g. JSON.stringify). example: orderId: order_123 required: - updatedAt - createdAt required: - id - type - attributes description: >- A counterparty transfer represents a movement of funds between two counterparties. x-tags: - Model CreateCounterpartyTransferResponse: type: object properties: data: $ref: '#/components/schemas/CounterpartyTransfer' required: - data CounterpartyTransferValidationResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - ValidationFailed description: A unique, camel-cased Accrue-specific code detailing the error. example: ValidationFailed title: type: string description: Generic title for the error. example: CounterpartyTransferValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Insufficient balance - Same source and destination - Invalid amount (must be > 0) - Idempotency-key conflict (key reused with a different payload) meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparty-transfers required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparty-transfers required: - id - status - code - title - detail - meta CrossTenantCounterpartyTransferResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 403 code: type: string enum: - CrossTenantTransfer description: A unique, camel-cased Accrue-specific code detailing the error. example: CrossTenantTransfer title: type: string description: Generic title for the error. example: CounterpartyTransferValidationException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Counterparty does not belong to the authenticated partner. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparty-transfers required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparty-transfers required: - id - status - code - title - detail - meta CounterpartyNotFoundOnCreateResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - CounterpartyNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: CounterpartyNotFound title: type: string description: Generic title for the error. example: CounterpartyTransferNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - One or both counterparties referenced in the request do not exist. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparty-transfers required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparty-transfers required: - id - status - code - title - detail - meta ListCounterpartyTransfersResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/CounterpartyTransfer' meta: type: object properties: total: type: number example: 1 limit: type: number example: 10 offset: type: number example: 0 required: - total - limit - offset required: - data - meta CounterpartyTransferQueryValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'Validation failed for page[limit]: expected number' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparty-transfers/ required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparty-transfers/ required: - id - status - code - title - detail - meta GetCounterpartyTransferResponse: type: object properties: data: $ref: '#/components/schemas/CounterpartyTransfer' required: - data CounterpartyTransferNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - TransferNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: TransferNotFound title: type: string description: Generic title for the error. example: CounterpartyTransferNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- Counterparty transfer with ID '123e4567-e89b-12d3-a456-426614174000' not found in the authenticated partner scope. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/counterparty-transfers/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: >- /api/v1/counterparty-transfers/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta GetLinkedAccountsResponse: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - LinkedAccount attributes: type: object properties: provider: type: string enum: - Meld - Plaid - Checkout description: The provider used to link the bank account. status: type: string enum: - Connected - Disconnected - Pending description: The current status of the linked account. accountType: type: string enum: - checking - savings - debit - creditCard - fundingCreditCard - pending description: The type of the linked account. accountName: type: string description: The name of the account as provided by the institution. example: Plaid Checking accountMask: type: string description: The masked account number (typically last 4 digits). example: '0000' institutionName: type: string description: The name of the financial institution. example: Plaid Bank institutionId: type: string description: The unique identifier for the institution. example: ins_109508 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - data LinkedAccountInvalidUserResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidUser description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidUser title: type: string description: Generic title for the error. example: LinkedAccountException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - User '{userId}' does not have a wallet with this merchant. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/123e4567-e89b-12d3-a456-426614174000/linked-accounts required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/linked-accounts required: - id - status - code - title - detail - meta LinkedAccountUserNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - LinkedAccountNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: LinkedAccountNotFound title: type: string description: Generic title for the error. example: LinkedAccountNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - User '{userId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/123e4567-e89b-12d3-a456-426614174000/linked-accounts required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/linked-accounts required: - id - status - code - title - detail - meta UnexpectedLinkedAccountErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: LinkedAccountException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - An unexpected error occurred. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/users/123e4567-e89b-12d3-a456-426614174000/linked-accounts required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/users/123e4567-e89b-12d3-a456-426614174000/linked-accounts required: - id - status - code - title - detail - meta ExternalTransactionReference: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - ExternalTransaction attributes: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true sourceId: type: string description: Transaction identifier inside the originating external system. example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - id - sourceId - updatedAt - createdAt relationships: type: object properties: linkedExternalTransaction: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 type: type: string enum: - ExternalTransaction required: - id - type required: - data user: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid type: type: string enum: - User required: - id - type required: - data required: - id - type - attributes - relationships description: ExternalTransactionReference x-tags: - Model AddExternalTransactionResponse: type: object properties: data: type: array items: allOf: - $ref: '#/components/schemas/ExternalTransactionReference' - type: object properties: {} description: ExternalTransactionReference x-tags: - Model required: - data ExternalTransactionValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Validation failed for data.attributes.amount meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/external-transactions required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/external-transactions required: - id - status - code - title - detail - meta UnexpectedExternalTransactionErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: ExternalTransactionException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - An unexpected error occurred. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/external-transactions required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/external-transactions required: - id - status - code - title - detail - meta CreateExternalTransaction: type: object properties: type: type: string enum: - ExternalTransaction attributes: type: object properties: type: type: string enum: - Purchase - Void - Refund default: Purchase description: Type of the external transactions. source: type: object properties: id: type: string description: >- Transaction identifier inside the originating external system. example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 createdAt: type: string format: date-time description: >- Original date of creation for the transaction in the originating external system. customerId: type: string description: >- User ID identifying the user inside the originating external system. example: '607329' required: - id - createdAt channel: type: string description: >- External system identifier used to identify the payment channel. E.g. Store Address, App Name, Checkout Interface, etc. example: nyc-store-1 payments: type: array items: type: object properties: amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 method: type: string enum: - Cash - DebitCard - CreditCard - Wire - GiftCard - Wallet - Other - Unknown default: Unknown description: The method used for the split payment. required: - amount description: >- All external payment methods and amounts charged to execute the transaction. The sum of all amounts is the total amount. example: - method: Cash amount: 10000 - method: DebitCard amount: 5000 payload: type: object properties: {} description: >- JSON payload with extra details required for future processing and analysis. required: - source - payments required: - type - attributes description: Create external transaction request x-tags: - Model ExternalTransaction: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - ExternalTransaction attributes: type: object properties: type: type: string enum: - Purchase - Void - Refund default: Purchase description: Type of the external transactions. linkedExternalTransactionId: type: string format: uuid description: >- The identifier of the original transaction for which this transaction is a Refund or Void. This field must be provided when the transaction type is 'Refund' or 'Void'. example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 source: type: object properties: id: type: string description: >- Transaction identifier inside the originating external system. example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 createdAt: type: string format: date-time description: >- Original date of creation for the transaction in the originating external system. customerId: type: string description: >- User ID identifying the user inside the originating external system. example: '607329' required: - id - createdAt channel: type: string description: >- External system identifier used to identify the payment channel. E.g. Store Address, App Name, Checkout Interface, etc. example: nyc-store-1 payments: type: array items: type: object properties: amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 method: type: string enum: - Cash - DebitCard - CreditCard - Wire - GiftCard - Wallet - Other - Unknown default: Unknown description: The method used for the split payment. required: - amount description: >- All external payment methods and amounts charged to execute the transaction. The sum of all amounts is the total amount. example: - method: Cash amount: 10000 - method: DebitCard amount: 5000 payload: type: object properties: {} description: >- JSON payload with extra details required for future processing and analysis. updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - linkedExternalTransactionId - source - payments - updatedAt - createdAt relationships: type: object properties: linkedExternalTransaction: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 type: type: string enum: - ExternalTransaction required: - id - type required: - data user: type: object properties: data: type: array items: type: object properties: id: type: string format: uuid type: type: string enum: - User required: - id - type required: - data required: - id - type - attributes - relationships description: ExternalTransaction x-tags: - Model GetExternalTransaction: type: object properties: data: allOf: - $ref: '#/components/schemas/ExternalTransaction' - type: object properties: attributes: $ref: '#/components/schemas/ExternalTransaction' description: ExternalTransaction x-tags: - Model required: - data ExternalTransactionNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - ExternalTransactionNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: ExternalTransactionNotFound title: type: string description: Generic title for the error. example: ExternalTransactionNotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - External transaction '{externalTransactionId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: >- /api/v1/external-transactions/9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/external-transactions/9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 required: - id - status - code - title - detail - meta ListExternalTransactionsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/ExternalTransaction' meta: type: object properties: total: type: number example: 1 limit: type: number example: 10 offset: type: number example: 0 required: - total - limit - offset required: - data - meta Webhook: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Webhook attributes: type: object properties: enabled: type: boolean name: type: string url: type: string description: >- HTTPS endpoint for webhook POST delivery. Empty when no URL was configured; events are still recorded for this webhook but no HTTP request is sent. secret: type: string readOnly: true topics: type: array items: type: string description: >- Array of webhook topics to subscribe to. Use `'*'` to subscribe to all topics. Note: When using `'*'`, all new topics added in the future will automatically be sent to this webhook. You are responsible for handling any new or unknown topic types. The `'*'` wildcard cannot be combined with other topics. example: - PaymentIntentCreated - PaymentCreated updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - enabled - name - url - secret - topics - updatedAt - createdAt required: - id - type - attributes description: '' x-tags: Model WebhookResponse: type: object properties: data: $ref: '#/components/schemas/Webhook' required: - data InvalidWebhookTopicsResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InvalidTopics description: A unique, camel-cased Accrue-specific code detailing the error. example: InvalidTopics title: type: string description: Generic title for the error. example: WebhookException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - >- If '*' is specified in topics, it must be the only topic. Cannot combine '*' with other topics. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/webhooks required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/webhooks required: - id - status - code - title - detail - meta WebhookValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - Validation failed for data.attributes.url meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/webhooks required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/webhooks required: - id - status - code - title - detail - meta WebhookErrorResponse: anyOf: - $ref: '#/components/schemas/InvalidWebhookTopicsResponse' - $ref: '#/components/schemas/WebhookValidationErrorResponse' CreateWebhook: type: object properties: type: type: string enum: - Webhook attributes: type: object properties: enabled: type: boolean name: type: string url: type: string description: >- HTTPS endpoint that receives POST requests for subscribed events. If omitted or empty, events are still stored for this webhook (for example, via the webhook events API) but no HTTP delivery is attempted. topics: type: array items: type: string description: >- Array of webhook topics to subscribe to. Use `'*'` to subscribe to all topics. Note: When using `'*'`, all new topics added in the future will automatically be sent to this webhook. You are responsible for handling any new or unknown topic types. The `'*'` wildcard cannot be combined with other topics. example: - PaymentIntentCreated - PaymentCreated required: - enabled - name - topics required: - type - attributes description: Create webhook request x-tags: - Model GetWebhookResponse: type: object properties: data: $ref: '#/components/schemas/Webhook' required: - data WebhookNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string title: type: string description: Generic title for the error. example: NotFoundException detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'NotFoundException: Not Found' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/webhooks/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/webhooks/123e4567-e89b-12d3-a456-426614174000 required: - id - status - title - detail - meta WebhooksResponse: type: object properties: data: $ref: '#/components/schemas/Webhook' required: - data UpdateWebhook: type: object properties: type: type: string enum: - Webhook attributes: type: object properties: enabled: type: boolean name: type: string url: type: string description: >- HTTPS delivery endpoint. Set to empty or omit to stop HTTP delivery while continuing to record events for this webhook. topics: type: array items: type: string description: >- Array of webhook topics to subscribe to. Use `'*'` to subscribe to all topics. Note: When using `'*'`, all new topics added in the future will automatically be sent to this webhook. You are responsible for handling any new or unknown topic types. The `'*'` wildcard cannot be combined with other topics. example: - PaymentIntentCreated - PaymentCreated required: - type - attributes description: Update webhook request x-tags: - Model WebhookEvent: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - WebhookEvent attributes: type: object properties: id: type: string format: uuid description: The webhook event ID example: 123e4567-e89b-12d3-a456-426614174000 topic: type: string description: The webhook topic/event type clientId: type: string format: uuid description: The client ID associated with this webhook event userId: type: string format: uuid description: The user ID associated with this webhook event (if applicable) example: 123e4567-e89b-12d3-a456-426614174000 walletId: type: string format: uuid description: The wallet ID associated with this webhook event (if applicable) example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - id - topic - clientId - updatedAt - createdAt relationships: type: object properties: event: type: object properties: data: type: object properties: id: type: string format: uuid type: type: string required: - id - type description: >- The related event resource (PaymentIntent, Payment, Refund, Capture, or ApplicationEvent) required: - data required: - id - type - attributes - relationships description: '' x-tags: Model WebhookPaymentIntent: type: object properties: id: type: string format: uuid type: type: string enum: - PaymentIntent attributes: type: object properties: id: type: string format: uuid status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus userId: type: string format: uuid walletId: type: - string - 'null' format: uuid fullName: type: - string - 'null' email: type: - string - 'null' format: email phoneNumber: type: - string - 'null' billingAddress: type: - object - 'null' additionalProperties: {} reference: type: - string - 'null' expiresAt: type: string format: date-time createdAt: type: string format: date-time updatedAt: type: string format: date-time required: - id - status - error - userId - walletId - fullName - email - phoneNumber - billingAddress - expiresAt - createdAt - updatedAt required: - id - type - attributes description: PaymentIntent entity as stored in webhook payload x-tags: - Model WebhookPayment: type: object properties: id: type: string format: uuid type: type: string enum: - Payment attributes: type: object properties: id: type: string format: uuid status: type: string enum: - Canceled - Created - Failed - Processing - Returned - Sent amount: type: integer reference: type: - string - 'null' expiresAt: type: - string - 'null' format: date-time createdAt: type: string format: date-time updatedAt: type: string format: date-time paymentIntentId: type: string format: uuid channelId: type: - string - 'null' channel: type: - string - 'null' error: type: - string - 'null' secondaryAuthorizationType: type: - string - 'null' enum: - Card secondaryAuthorizationId: type: - string - 'null' secondaryAuthorizationAmount: type: - integer - 'null' walletId: type: - string - 'null' format: uuid userId: type: string format: uuid required: - id - status - amount - expiresAt - createdAt - updatedAt required: - id - type - attributes description: >- Payment entity as stored in webhook payload (includes walletId/userId from PaymentIntent). All Prisma Payment fields may be present. x-tags: - Model WebhookRefund: type: object properties: id: type: string format: uuid type: type: string enum: - Refund attributes: type: object properties: id: type: string format: uuid paymentId: type: string format: uuid amount: type: integer status: type: string enum: - Failed - Pending - Sent - Waiting message: type: string reference: type: - string - 'null' charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 59 type: type: string description: Fee type identifier example: pay_by_wallet_refund required: - amount - type description: Processing fee details for this refund rewards: type: integer minimum: 0 description: Rewards amount. Always 0 for refunds. format: int32 example: 0 description: Charges applied to this refund. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount. Always 0 for refunds. format: int32 example: 0 fees: type: integer minimum: 0 description: Processing fees charged for this refund, in cents. format: int32 example: 59 required: - rewards - fees description: Legacy charges breakdown. Use `charges` instead. deprecated: true createdAt: type: string format: date-time updatedAt: type: string format: date-time required: - id - amount - status - message - createdAt - updatedAt required: - id - type - attributes description: >- Refund entity as stored in webhook payload. Includes charges/deductions via shared mapRefundCharges utility. x-tags: - Model WebhookCapture: type: object properties: id: type: string format: uuid type: type: string enum: - Capture attributes: type: object properties: id: type: string format: uuid method: type: string enum: - Direct - BankRails - VirtualDebitCard amount: type: integer reference: type: - string - 'null' externalPayments: {} createdAt: type: string format: date-time updatedAt: type: string format: date-time required: - id - method - amount - createdAt - updatedAt required: - id - type - attributes description: Capture entity as stored in webhook payload (includes externalPayments) x-tags: - Model BankApplicationLite: type: object properties: type: type: string enum: - Lite description: The type of KYC application firstName: type: string description: First name lastName: type: string description: Last name email: type: string format: email description: Email address dateOfBirth: type: string description: Date of birth phone: type: string description: Phone number street: type: string description: Street address street2: type: string description: Street address line 2 city: type: string description: City state: type: string description: State postalCode: type: string description: Postal code required: - type - firstName - lastName - email - dateOfBirth - phone description: Bank application data x-tags: - Model ApplicationCreatedEventAttributes: type: object properties: application: $ref: '#/components/schemas/BankApplicationLite' userId: type: string format: uuid description: The user ID associated with this event example: 123e4567-e89b-12d3-a456-426614174000 provider: type: string description: Bank provider (e.g., 'Unit', 'ModernTreasury') example: Unit required: - application - userId - provider WebhookKycCreated: type: object properties: id: type: string format: uuid type: type: string enum: - KycCreated attributes: allOf: - $ref: '#/components/schemas/ApplicationCreatedEventAttributes' - type: object properties: reference: type: - string - 'null' email: type: - string - 'null' format: email fullName: type: - string - 'null' phoneNumber: type: - string - 'null' error: type: - string - 'null' walletId: type: - string - 'null' format: uuid billingAddress: type: - object - 'null' additionalProperties: {} required: - id - type - attributes description: KycCreated event data as stored in webhook payload x-tags: - Model ApplicationApprovedEventAttributes: type: object properties: userId: type: string format: uuid description: The user ID associated with this event example: 123e4567-e89b-12d3-a456-426614174000 priorStatus: type: string enum: - Approved - AwaitingDocuments - Denied - ManualReview - NotStarted - Pending - Unknown description: Optional previous KYC status before approval required: - userId WebhookKycApproved: type: object properties: id: type: string format: uuid type: type: string enum: - KycApproved attributes: allOf: - $ref: '#/components/schemas/ApplicationApprovedEventAttributes' - type: object properties: reference: type: - string - 'null' email: type: - string - 'null' format: email fullName: type: - string - 'null' phoneNumber: type: - string - 'null' error: type: - string - 'null' walletId: type: - string - 'null' format: uuid billingAddress: type: - object - 'null' additionalProperties: {} required: - id - type - attributes description: KycApproved event data as stored in webhook payload x-tags: - Model ApplicationBasicEventAttributes: type: object properties: userId: type: string format: uuid description: The user ID associated with this event example: 123e4567-e89b-12d3-a456-426614174000 reason: type: string description: >- Optional reason for KYC decline (only present for KycDeclined events) required: - userId WebhookKycStatus: type: object properties: id: type: string format: uuid type: type: string enum: - KycDeclined - KycPending - KycAwaitingDocuments - KycManualReview attributes: allOf: - $ref: '#/components/schemas/ApplicationBasicEventAttributes' - type: object properties: reference: type: - string - 'null' email: type: - string - 'null' format: email fullName: type: - string - 'null' phoneNumber: type: - string - 'null' error: type: - string - 'null' walletId: type: - string - 'null' format: uuid billingAddress: type: - object - 'null' additionalProperties: {} required: - id - type - attributes description: >- KYC status event data (KycDeclined, KycPending, KycAwaitingDocuments, KycManualReview) as stored in webhook payload x-tags: - Model TransactionEventAttributes: type: object properties: transactionId: type: string format: uuid description: The transaction ID associated with this event example: 123e4567-e89b-12d3-a456-426614174000 walletId: type: string format: uuid description: The wallet ID associated with this transaction example: 123e4567-e89b-12d3-a456-426614174000 rewardIds: type: array items: type: string format: uuid description: Optional array of reward IDs associated with this transaction example: [] required: - transactionId - walletId WebhookTransactionCleared: type: object properties: id: type: string format: uuid type: type: string enum: - TransactionCleared attributes: allOf: - $ref: '#/components/schemas/TransactionEventAttributes' - type: object properties: reference: type: - string - 'null' email: type: - string - 'null' format: email fullName: type: - string - 'null' phoneNumber: type: - string - 'null' error: type: - string - 'null' billingAddress: type: - object - 'null' additionalProperties: {} fee: type: object properties: type: type: - string - 'null' description: >- The fee type applied to this transaction (for example, a specific FeeType name). This value can be null when no fee type applies or the fee type cannot be determined. example: JitFundingFee amount: type: integer description: >- The fee amount applied to this transaction, represented in the smallest currency unit (e.g., cents for USD). This value can be 0 when no fee was charged. example: 125 required: - type - amount description: Fee breakdown applied to this transaction. required: - fee required: - id - type - attributes description: TransactionCleared event data as stored in webhook payload x-tags: - Model WebhookTransactionFailed: type: object properties: id: type: string format: uuid type: type: string enum: - TransactionFailed attributes: allOf: - $ref: '#/components/schemas/TransactionEventAttributes' - type: object properties: reference: type: - string - 'null' email: type: - string - 'null' format: email fullName: type: - string - 'null' phoneNumber: type: - string - 'null' error: type: - string - 'null' billingAddress: type: - object - 'null' additionalProperties: {} fee: type: object properties: type: type: - string - 'null' description: >- The fee type applied to this transaction (for example, a specific FeeType name). This value can be null when no fee type applies or the fee type cannot be determined. example: JitFundingFee amount: type: integer description: >- The fee amount applied to this transaction, represented in the smallest currency unit (e.g., cents for USD). This value can be 0 when no fee was charged. example: 125 required: - type - amount description: Fee breakdown applied to this transaction. failureReason: type: string enum: - Canceled - HardDecline - SoftDecline - Expired - InsufficientFunds - Reversed - Unknown description: >- Transaction failure reason (TransactionFailureReason). - **Canceled**: The transaction was canceled. - **HardDecline**: The request was declined (hard decline). - **SoftDecline**: The payment request was declined; subsequent attempts may succeed. - **Expired**: The transaction or authorization expired. - **InsufficientFunds**: Insufficient funds to complete the transaction. - **Reversed**: The transaction was reversed. - **Unknown**: The failure reason is unknown. example: SoftDecline required: - fee required: - id - type - attributes description: TransactionFailed event data as stored in webhook payload x-tags: - Model CounterpartyIncomingPaymentEventAttributes: type: object properties: counterpartyId: type: string format: uuid description: The counterparty whose account received the payment example: 123e4567-e89b-12d3-a456-426614174000 merchantId: type: string format: uuid description: The merchant that owns the counterparty example: 123e4567-e89b-12d3-a456-426614174000 amount: type: integer description: >- The payment amount, represented in the smallest currency unit (e.g., cents for USD). example: 2500 currency: type: string description: ISO 4217 currency code of the payment example: USD direction: type: string enum: - credit - debit description: |- Direction of the movement on the counterparty account. - **credit**: funds were received into the counterparty account. - **debit**: funds were withdrawn from the counterparty account. example: credit method: type: string description: >- The bank rail the payment arrived over, for example `ach`, `wire`, or `rtp`. Treat this as an open set — new values may be added without notice. example: ach asOfDate: type: string description: The date the payment settled at the bank, as `YYYY-MM-DD` example: '2026-08-27' externalIncomingPaymentId: type: string description: >- Identifier for this incoming payment at the banking provider. Stable for the life of the payment and safe to use for reconciliation against your bank records. example: ipd_a1b2c3d4e5 required: - counterpartyId - merchantId - amount - currency - direction - method - asOfDate - externalIncomingPaymentId WebhookCounterpartyIncomingPayment: type: object properties: id: type: string format: uuid type: type: string enum: - CounterpartyIncomingPayment attributes: allOf: - $ref: '#/components/schemas/CounterpartyIncomingPaymentEventAttributes' - type: object properties: reference: type: - string - 'null' email: type: - string - 'null' format: email fullName: type: - string - 'null' phoneNumber: type: - string - 'null' error: type: - string - 'null' walletId: type: - string - 'null' format: uuid billingAddress: type: - object - 'null' additionalProperties: {} required: - id - type - attributes description: CounterpartyIncomingPayment event data as stored in webhook payload x-tags: - Model CounterpartyPayoutEventAttributes: type: object properties: payoutId: type: string description: The payout id, identical to the one the payouts API returns example: po_a1b2c3d4e5 counterpartyId: type: string format: uuid description: The counterparty being paid out example: 123e4567-e89b-12d3-a456-426614174000 merchantId: type: string format: uuid description: The merchant that owns the counterparty example: 123e4567-e89b-12d3-a456-426614174000 amount: type: integer description: >- The payout amount, represented in the smallest currency unit (e.g., cents for USD). example: 5000 currency: type: string description: ISO 4217 currency code of the payout example: USD status: type: string enum: - Approved - Cancelled - Completed - Denied - Failed - NeedsApproval - Pending - Processing - Returned - Reversed - Sent description: >- The payout status at the time the event fired. This is the same status the payouts API reports, so a webhook and a subsequent read always agree. example: Sent description: type: - string - 'null' description: Description recorded on the payout example: Payout to Acme Vendor effectiveDate: type: string description: The date the payout is scheduled to settle, as `YYYY-MM-DD` example: '2026-08-28' createdAt: type: string description: ISO 8601 timestamp updatedAt: type: string description: ISO 8601 timestamp required: - payoutId - counterpartyId - merchantId - amount - currency - status - description - effectiveDate - createdAt - updatedAt WebhookCounterpartyPayout: type: object properties: id: type: string format: uuid type: type: string enum: - CounterpartyPayoutCreated - CounterpartyPayoutSent - CounterpartyPayoutCompleted attributes: allOf: - $ref: '#/components/schemas/CounterpartyPayoutEventAttributes' - type: object properties: reference: type: - string - 'null' email: type: - string - 'null' format: email fullName: type: - string - 'null' phoneNumber: type: - string - 'null' error: type: - string - 'null' walletId: type: - string - 'null' format: uuid billingAddress: type: - object - 'null' additionalProperties: {} required: - id - type - attributes description: >- Counterparty payout lifecycle event data (CounterpartyPayoutCreated, CounterpartyPayoutSent, CounterpartyPayoutCompleted) as stored in webhook payload x-tags: - Model WebhookCounterpartyPayoutReturned: type: object properties: id: type: string format: uuid type: type: string enum: - CounterpartyPayoutReturned attributes: allOf: - $ref: '#/components/schemas/CounterpartyPayoutEventAttributes' - type: object properties: returnCode: type: - string - 'null' description: >- Bank return code when the payout was returned by the receiving bank (for example `R01`). Null for the other terminal failures, which carry no bank return. example: R01 returnReason: type: - string - 'null' description: >- Human-readable reason for the return, when the bank supplied one example: insufficient funds reference: type: - string - 'null' email: type: - string - 'null' format: email fullName: type: - string - 'null' phoneNumber: type: - string - 'null' error: type: - string - 'null' walletId: type: - string - 'null' format: uuid billingAddress: type: - object - 'null' additionalProperties: {} required: - returnCode - returnReason required: - id - type - attributes description: CounterpartyPayoutReturned event data as stored in webhook payload x-tags: - Model WebhookIncluded: description: >- Polymorphic schema for webhook included resources. Uses discriminator on 'type' field for runtime deserialization. x-tags: - Model discriminator: propertyName: type mapping: PaymentIntent: '#/components/schemas/WebhookPaymentIntent' Payment: '#/components/schemas/WebhookPayment' Refund: '#/components/schemas/WebhookRefund' Capture: '#/components/schemas/WebhookCapture' KycCreated: '#/components/schemas/WebhookKycCreated' KycApproved: '#/components/schemas/WebhookKycApproved' KycDeclined: '#/components/schemas/WebhookKycStatus' KycPending: '#/components/schemas/WebhookKycStatus' KycAwaitingDocuments: '#/components/schemas/WebhookKycStatus' KycManualReview: '#/components/schemas/WebhookKycStatus' TransactionCleared: '#/components/schemas/WebhookTransactionCleared' TransactionFailed: '#/components/schemas/WebhookTransactionFailed' CounterpartyIncomingPayment: '#/components/schemas/WebhookCounterpartyIncomingPayment' CounterpartyPayoutCreated: '#/components/schemas/WebhookCounterpartyPayout' CounterpartyPayoutSent: '#/components/schemas/WebhookCounterpartyPayout' CounterpartyPayoutCompleted: '#/components/schemas/WebhookCounterpartyPayout' CounterpartyPayoutReturned: '#/components/schemas/WebhookCounterpartyPayoutReturned' oneOf: - $ref: '#/components/schemas/WebhookPaymentIntent' - $ref: '#/components/schemas/WebhookPayment' - $ref: '#/components/schemas/WebhookRefund' - $ref: '#/components/schemas/WebhookCapture' - $ref: '#/components/schemas/WebhookKycCreated' - $ref: '#/components/schemas/WebhookKycApproved' - $ref: '#/components/schemas/WebhookKycStatus' - $ref: '#/components/schemas/WebhookTransactionCleared' - $ref: '#/components/schemas/WebhookTransactionFailed' - $ref: '#/components/schemas/WebhookCounterpartyIncomingPayment' - $ref: '#/components/schemas/WebhookCounterpartyPayout' - $ref: '#/components/schemas/WebhookCounterpartyPayoutReturned' ListWebhookEventsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/WebhookEvent' included: type: array items: $ref: '#/components/schemas/WebhookIncluded' required: - data WebhookEventQueryValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: >- A human-readable explanation providing more insights about the error. examples: - 'Validation failed for page[limit]: expected number' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/webhook-events required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/webhook-events required: - id - status - code - title - detail - meta GetWebhookEventResponse: type: object properties: data: $ref: '#/components/schemas/WebhookEvent' included: type: array items: $ref: '#/components/schemas/WebhookIncluded' required: - data parameters: {} paths: /api/v1/payment-intents: post: operationId: createPaymentIntent tags: - PaymentIntents summary: Create a Payment Intent description: |2- Create a payment intent using `amount` and exactly one of `walletId` or `lookUpId`. When `walletId` is provided, the wallet is validated for the request merchant. When `lookUpId` is provided, the scanned string is resolved as a wallet barcode first; if no wallet barcode matches, it is resolved as a gift identifier. Never send a gift `data.id` as `walletId`. A wallet barcode `lookUpId` follows the wallet scan-and-pay flow. Gift look-ups skip KYC. `balance.available` is the remaining spendable amount (gift remaining, or wallet available). For a **gift** `lookUpId`, point-of-sale should first fetch remaining via [Get Gift by lookUpId](/api#tag/Gifts/operation/getGiftByLookUpId) (`/api/v1/gifts/{lookUpId}`), then POST this endpoint with the **same** scanned string as `lookUpId`. Authorize returns a Payment whose `links.virtualDebitCard` is the gift virtual debit card. Gift remaining is spent later by card-present authorization of that card; authorize does not debit the gift reserve. parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/CreatePaymentIntent' required: - data responses: '201': description: Created content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreatePaymentIntentResponse' '400': description: Invalid amount or wallet identifier validation failed content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreatePaymentIntentInvalidResponse' '403': description: Wallet access denied content: application/vnd.api+json: schema: $ref: >- #/components/schemas/CreatePaymentIntentWalletAccessDeniedResponse '404': description: Wallet identifier not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreatePaymentIntentWalletNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/payment-intents \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/payment-intents', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/payment-intents", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payment-intents") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payment-intents") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payment-intents\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payment-intents"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payment-intents'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } get: operationId: listPaymentIntents tags: - PaymentIntents summary: List Payment Intents parameters: - schema: type: string description: Filter the list of objects by the value of the initiator field. required: false name: filter[initiator] in: query - schema: type: string description: Filter the list of objects by the value of the status field. required: false name: filter[status] in: query - schema: type: string description: >- Filter the list of objects by the value of the paymentMethod field. required: false name: filter[paymentMethod] in: query - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string default: sort=-createdAt description: >- Sorts the list of objects by the given criteria. The sort parameter value is a comma separated list of sort criteria. Each sort criteria is a field name optionally followed by a minus sign (-) to indicate descending order. Ascending order is assumed if no minus sign is present. The sort criteria are applied in the order in which they appear in the sort parameter. required: false name: sort in: query - schema: type: string description: >- Comma-separated list of resources to include. Supported resources: `client`,`payments`,`balance` required: true name: include in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListPaymentIntentsResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/PaymentIntentQueryValidationErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/payment-intents?filter%5Binitiator%5D=SOME_STRING_VALUE&filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentMethod%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/payment-intents', qs: { 'filter[initiator]': 'SOME_STRING_VALUE', 'filter[status]': 'SOME_STRING_VALUE', 'filter[paymentMethod]': 'SOME_STRING_VALUE', 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE', sort: 'SOME_STRING_VALUE', include: 'SOME_STRING_VALUE' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/payment-intents?filter%5Binitiator%5D=SOME_STRING_VALUE&filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentMethod%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payment-intents?filter%5Binitiator%5D=SOME_STRING_VALUE&filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentMethod%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payment-intents?filter%5Binitiator%5D=SOME_STRING_VALUE&filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentMethod%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payment-intents?filter%5Binitiator%5D=SOME_STRING_VALUE&filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentMethod%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payment-intents?filter%5Binitiator%5D=SOME_STRING_VALUE&filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentMethod%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payment-intents'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'filter[initiator]' => 'SOME_STRING_VALUE', 'filter[status]' => 'SOME_STRING_VALUE', 'filter[paymentMethod]' => 'SOME_STRING_VALUE', 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE', 'sort' => 'SOME_STRING_VALUE', 'include' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/payment-intents/{paymentIntentId}: get: operationId: getPaymentIntent tags: - PaymentIntents summary: Get a Payment Intent parameters: - schema: type: string format: uuid description: Payment Intent ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentIntentId in: path - schema: type: string description: >- Comma-separated list of resources to include. Supported resources: `client`,`payments` required: false name: include in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetPaymentIntentResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/PaymentIntentNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000', qs: {include: 'SOME_STRING_VALUE'}, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'include' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/payment-intents/{paymentIntentId}/authorize: post: operationId: authorizePayment tags: - PaymentIntents summary: Authorize Payment description: >- Authorize a payment intent, creating a `Payment`. For wallet payment intents this also reserves wallet funds. If the payment intent was already authorized (an active payment exists), the existing payment is returned without re-authorizing. When the client has a card processor configured, processor authorization runs inline before the response is returned — for both wallet and gift payment intents. On success, `included` Payment resources may include `meta.processor` with an opaque processor payload. On processor decline, the payment is marked `Failed` and the endpoint returns `402`. For a gift `lookUpId` payment intent, authorize still creates a `Payment` and, when a card processor is configured, still runs processor authorization inline. It does not debit the gift reserve or reserve wallet funds. After a successful authorize, load the Payment's `links.virtualDebitCard` via [Get Virtual Debit Card](/api#tag/Payments/operation/getVirtualDebitCard) (`/api/v1/payments/{paymentId}/card`). Card-present authorization of that card is what spends remaining gift balance. Optional `data.attributes.channel` and `data.attributes.risk.deviceSessionId` are forwarded to wallet authorization. When a wallet is attached, `data.attributes.balance` on the returned payment intent may be present. parameters: - schema: type: string format: uuid description: Payment Intent ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentIntentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/AuthorizePaymentIntent' required: - data responses: '201': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/AuthorizePaymentResponse' '402': description: Authorization failed for the desired amount content: application/vnd.api+json: schema: $ref: '#/components/schemas/AuthorizePaymentIntentFailedResponse' '403': description: Client/Payment Intent mismatch content: application/vnd.api+json: schema: $ref: '#/components/schemas/AuthorizePaymentIntentForbiddenResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000/authorize \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000/authorize', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000/authorize", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000/authorize") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000/authorize") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000/authorize\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000/authorize"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payment-intents/123e4567-e89b-12d3-a456-426614174000/authorize'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/payments: post: operationId: createPayment tags: - Payments summary: Create Payment parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/CreatePayment' required: - data responses: '200': description: OK content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/CreatePaymentResponse' required: - data '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/PaymentValidationResponse' '402': description: >- Payment Required. The authorization or capture was declined by the funding source. x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/payments \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/payments', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/payments", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payments") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payments") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payments\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payments"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payments'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } get: operationId: listPayments tags: - Payments summary: List Payments parameters: - schema: type: string description: Filter the list of objects by the value of the status field. required: false name: filter[status] in: query - schema: type: string description: >- Filter the list of objects by the value of the paymentIntentId field. required: false name: filter[paymentIntentId] in: query - schema: type: string description: Filter the list of objects by the value of the reference field. required: false name: filter[reference] in: query - schema: type: string description: Filter the list of objects by the value of the channel field. required: false name: filter[channel] in: query - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string default: sort=-createdAt description: >- Sorts the list of objects by the given criteria. The sort parameter value is a comma separated list of sort criteria. Each sort criteria is a field name optionally followed by a minus sign (-) to indicate descending order. Ascending order is assumed if no minus sign is present. The sort criteria are applied in the order in which they appear in the sort parameter. required: false name: sort in: query - schema: type: string description: >- Comma-separated list of resources to include. Supported resources: `paymentIntent`,`captures`,`refunds` required: true name: include in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListPaymentsResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/PaymentQueryValidationErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/payments?filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentIntentId%5D=SOME_STRING_VALUE&filter%5Breference%5D=SOME_STRING_VALUE&filter%5Bchannel%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/payments', qs: { 'filter[status]': 'SOME_STRING_VALUE', 'filter[paymentIntentId]': 'SOME_STRING_VALUE', 'filter[reference]': 'SOME_STRING_VALUE', 'filter[channel]': 'SOME_STRING_VALUE', 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE', sort: 'SOME_STRING_VALUE', include: 'SOME_STRING_VALUE' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/payments?filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentIntentId%5D=SOME_STRING_VALUE&filter%5Breference%5D=SOME_STRING_VALUE&filter%5Bchannel%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payments?filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentIntentId%5D=SOME_STRING_VALUE&filter%5Breference%5D=SOME_STRING_VALUE&filter%5Bchannel%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payments?filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentIntentId%5D=SOME_STRING_VALUE&filter%5Breference%5D=SOME_STRING_VALUE&filter%5Bchannel%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payments?filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentIntentId%5D=SOME_STRING_VALUE&filter%5Breference%5D=SOME_STRING_VALUE&filter%5Bchannel%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payments?filter%5Bstatus%5D=SOME_STRING_VALUE&filter%5BpaymentIntentId%5D=SOME_STRING_VALUE&filter%5Breference%5D=SOME_STRING_VALUE&filter%5Bchannel%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payments'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'filter[status]' => 'SOME_STRING_VALUE', 'filter[paymentIntentId]' => 'SOME_STRING_VALUE', 'filter[reference]' => 'SOME_STRING_VALUE', 'filter[channel]' => 'SOME_STRING_VALUE', 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE', 'sort' => 'SOME_STRING_VALUE', 'include' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/payments/{paymentId}: get: operationId: getPayment tags: - Payments summary: Get a Payment parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string description: >- Comma-separated list of resources to include. Supported resources: `paymentIntent`,`refunds` required: false name: include in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetPaymentResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/PaymentAccessCheckNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000', qs: {include: 'SOME_STRING_VALUE'}, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/payments/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000?include=SOME_STRING_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'include' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } patch: operationId: updatePayment tags: - Payments summary: Update a payment parameters: - schema: type: string format: uuid description: Payment id required: true name: paymentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: id: type: string format: uuid description: Payment id type: type: string enum: - Payment attributes: type: object properties: reference: type: - string - 'null' description: Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN required: - id - type - attributes responses: '200': description: 200 OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/PaymentResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/PaymentAccessCheckNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request PATCH \ --url https://merchant-api.accruesavings.com/api/v1/payments/%7BpaymentId%7D \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'PATCH', url: 'https://merchant-api.accruesavings.com/api/v1/payments/%7BpaymentId%7D', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("PATCH", "/api/v1/payments/%7BpaymentId%7D", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payments/%7BpaymentId%7D") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Patch.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payments/%7BpaymentId%7D") .patch(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payments/%7BpaymentId%7D\"\n\n\treq, _ := http.NewRequest(\"PATCH\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payments/%7BpaymentId%7D"); var request = new RestRequest(Method.PATCH); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payments/%7BpaymentId%7D'); $request->setMethod(HttpRequest::HTTP_METH_PATCH); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/payments/{paymentId}/card: get: operationId: getVirtualDebitCard tags: - Payments servers: - url: https://secure-api.accruesavings.com description: Production API - url: https://secure-api-sandbox.accruesavings.com description: Sandbox API summary: Get Virtual Debit Card description: >- The get virtual debit card endpoint can be used to fetch the card details for a payment. **This endpoint is available for Card Rails (Virtual Debit Cards) only**. Refer to the [Merchant API](/docs/payments/merchant-api/#payment-authorization-and-capture-via-card-rails-virtual-debit-cards) Guide for more information. parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetVirtualDebitCardResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetVirtualDebitCardErrorResponse' '403': description: Forbidden content: application/vnd.api+json: schema: $ref: '#/components/schemas/ForbiddenForCardDetailsResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://secure-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://secure-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("secure-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://secure-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://secure-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://secure-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://secure-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://secure-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/card'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/payments/{paymentId}/capture: post: operationId: capturePayment tags: - Payments summary: Capture Payment parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/CapturePayment' required: - data responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/CapturePaymentResponse' '402': description: Capture Failed x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/capture \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/capture', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/capture", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/capture") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/capture") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/capture\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/capture"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/capture'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/payments/{paymentId}/increase-authorization: patch: operationId: increaseAuthorization tags: - Payments summary: Increase Authorization Amount parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/IncreaseAuthorization' required: - data responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/IncreasePaymentAuthorizationResponse' '402': description: Increase Authorization Failed x-codeSamples: - lang: Shell source: |- curl --request PATCH \ --url https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/increase-authorization \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'PATCH', url: 'https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/increase-authorization', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("PATCH", "/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/increase-authorization", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/increase-authorization") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Patch.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/increase-authorization") .patch(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/increase-authorization\"\n\n\treq, _ := http.NewRequest(\"PATCH\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/increase-authorization"); var request = new RestRequest(Method.PATCH); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/increase-authorization'); $request->setMethod(HttpRequest::HTTP_METH_PATCH); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/payments/{paymentId}/cancel: post: operationId: cancelPayment tags: - Payments summary: Cancel Payment description: >- The cancel endpoint can be called on a `Payment` that is in the `Created` or `Waiting` status, otherwise it will return an error. A Payment will be in the `Waiting` status if you the capture endpoint has been called but the capture is in the waiting period before it is actually committed. Cancelling is always the full amount so there’s no support for partial amounts with cancel. The status of the payment will transition to `Canceled` **ONLY** after successfully calling the cancel endpoint. **For Card Rails (Virtual Debit Cards)**, this endpoint should only be called if the manual capture on your payment processor fails. Refer to [Merchant API](/docs/payments/merchant-api/#payment-authorization-and-capture-via-card-rails-virtual-debit-cards) Guide for more information. parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string description: >- Comma-separated list of resources to include. Supported resources: `paymentIntent` required: false name: include in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/CancelPaymentResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CancelPaymentErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/PaymentNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url 'https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel?include=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel', qs: {include: 'SOME_STRING_VALUE'}, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel?include=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel?include=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel?include=SOME_STRING_VALUE") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel?include=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel?include=SOME_STRING_VALUE"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/cancel'); $request->setMethod(HTTP_METH_POST); $request->setQueryData([ 'include' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/payments/{paymentId}/complete: post: operationId: completePayment tags: - Payments summary: Complete Payment description: |2- Once you have capture all the funds from the Virtual Debit Card, you can call this endpoint to complete the payment. That will mark the payment as complete and remaining funds will be released back to the user. **This endpoint is available for Card Rails (Virtual Debit Cards) only**. Refer to [Merchant API](/docs/payments/merchant-api/#payment-authorization-and-capture-via-card-rails-virtual-debit-cards) Guide for more information. parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string description: >- Comma-separated list of resources to include. Supported resources: `paymentIntent` required: false name: include in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/CompletePaymentResponse' '402': description: Complete payment failed x-codeSamples: - lang: Shell source: |- curl --request POST \ --url 'https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/complete?include=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/complete', qs: {include: 'SOME_STRING_VALUE'}, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/complete?include=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/complete?include=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/complete?include=SOME_STRING_VALUE") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/complete?include=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/complete?include=SOME_STRING_VALUE"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/complete'); $request->setMethod(HTTP_METH_POST); $request->setQueryData([ 'include' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/payments/{paymentId}/refund: post: operationId: refund tags: - Payments summary: Refund Payment description: >- The refund endpoint can be called on a `Payment` that is in the `Processing` or `Sent` status and has at least one successful capture. It supports partial refunds — the refund amount cannot exceed the captured amount, and the sum of all non-failed refunds cannot exceed the captured amount. Calling the refund endpoint will never change the status of the payment so the status of the payment cannot be used to determine if it has been refunded. When a `Payment` is refunded, an associated `Refund` object is created. The `Refund` object has an independent status representing the refund. The refund endpoint returns the `Refund` object created and can be included in the get payment endpoint. **Idempotency**: The `idempotencyKey` field is required to prevent duplicate refund operations. If a refund with the same key already exists, the existing refund will be returned. **Disbursements**: For pay-by-wallet refunds, you can optionally specify `disbursement` to indicate which counterparties to debit and for how much. The sum of disbursement amounts must equal the refund amount. If `disbursement` is omitted, the system automatically derives proportional disbursements from the original payment's disbursement breakdown. The refund amount is distributed across the same counterparties using their original ratios. For full refunds the derived amounts match the original proportions exactly. parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/RefundPayment' required: - data responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/RefundPaymentResponse' '400': description: >- Bad Request. Also returned when the payment does not exist, or cannot be refunded for the requested amount. content: application/vnd.api+json: schema: $ref: '#/components/schemas/RefundValidationResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/refund \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/refund', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/refund", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/refund") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/refund") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/refund\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/refund"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/payments/123e4567-e89b-12d3-a456-426614174000/refund'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/simulation/{paymentId}/card/auth: post: operationId: simulateCardAuthorization description: |2- Simulate a card authorization request. This endpoint will call our bank simulation service to authorize the amount specified. After the request is received, system will create a `Authorization Request` resource, asynchronously, and it's `authorizationRequestId` will be required to capture the funds using the [Simulate Card Capture](/api#tag/Simulations/operation/simulateCardCapture) endpoint. This `Authorization Request` resource can be fetched using the [Get Authorization Request List](/api#tag/Simulations/operation/getAuthorizationRequestList) endpoint. **This endpoint is available for Card Rails (Virtual Debit Cards) only**. Refer to [Merchant API](/docs/payments/merchant-api/#payment-authorization-and-capture-via-card-rails-virtual-debit-cards) Guide for more information. summary: Simulate Card Authorization tags: - Simulations parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/SimulateCardAuthorization' required: - data responses: '201': description: OK content: application/vnd.api+json: schema: type: object properties: {} '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/SimulateCardErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/SimulationPaymentNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } get: operationId: getAuthorizationRequestList summary: Get Authorization Request List description: |2- Get a list of all the `Authorization Requests` for a given payment. The `Authorization Requests` are created as a result of the [Simulate Card Authorization](/api#tag/Simulations/operation/simulateCardAuthorization) endpoint. **This endpoint is available for Card Rails (Virtual Debit Cards) only**. Refer to [Merchant API](/docs/payments/merchant-api/#payment-authorization-and-capture-via-card-rails-virtual-debit-cards) Guide for more information. tags: - Simulations parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListAuthorizationRequestsResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/SimulationPaymentNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/simulation/{paymentId}/card/capture: post: operationId: simulateCardCapture summary: Simulate Card Capture description: |2- Simulate a card capture request. This endpoint will call our bank simulation service to capture the funds specified. The `authorizationRequestId` is required to be passed in the request body. The `authorizationRequestId` can be found in the `Authorization Request` resource, that was created as a result of the [Simulate Card Authorization](/api#tag/Simulations/operation/simulateCardAuthorization) endpoint. **This endpoint is available for Card Rails (Virtual Debit Cards) only**. Refer to [Merchant API](/docs/payments/merchant-api/#payment-authorization-and-capture-via-card-rails-virtual-debit-cards) Guide for more information. tags: - Simulations parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/SimulateCardCapture' required: - data responses: '201': description: OK content: application/vnd.api+json: schema: type: object properties: {} '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/SimulateCardErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/SimulationPaymentNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } get: operationId: getCapturesList summary: Get Captures List description: |2- Get a list of all the `Captures` for a given payment. The `Captures` are created as a result of the [Simulate Card Authorization](/api#tag/Simulations/operation/simulateCardAuthorization) endpoint. **This endpoint is available for Card Rails (Virtual Debit Cards) only**. Refer to [Merchant API](/docs/payments/merchant-api/#payment-authorization-and-capture-via-card-rails-virtual-debit-cards) Guide for more information. tags: - Simulations parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string description: Filter the list of objects by the value of the method field. required: false name: filter[method] in: query - schema: type: string example: 'true' required: false name: filter[success] in: query - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string default: sort=-createdAt description: >- Sorts the list of objects by the given criteria. The sort parameter value is a comma separated list of sort criteria. Each sort criteria is a field name optionally followed by a minus sign (-) to indicate descending order. Ascending order is assumed if no minus sign is present. The sort criteria are applied in the order in which they appear in the sort parameter. required: false name: sort in: query - schema: type: string description: >- Comma-separated list of resources to include. Supported resources: `payments` required: false name: include in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/CardCapturesRequestsResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/SimulationPaymentNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture?filter%5Bmethod%5D=SOME_STRING_VALUE&filter%5Bsuccess%5D=true&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture', qs: { 'filter[method]': 'SOME_STRING_VALUE', 'filter[success]': 'true', 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE', sort: 'SOME_STRING_VALUE', include: 'SOME_STRING_VALUE' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture?filter%5Bmethod%5D=SOME_STRING_VALUE&filter%5Bsuccess%5D=true&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture?filter%5Bmethod%5D=SOME_STRING_VALUE&filter%5Bsuccess%5D=true&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture?filter%5Bmethod%5D=SOME_STRING_VALUE&filter%5Bsuccess%5D=true&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture?filter%5Bmethod%5D=SOME_STRING_VALUE&filter%5Bsuccess%5D=true&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture?filter%5Bmethod%5D=SOME_STRING_VALUE&filter%5Bsuccess%5D=true&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&sort=SOME_STRING_VALUE&include=SOME_STRING_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/capture'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'filter[method]' => 'SOME_STRING_VALUE', 'filter[success]' => 'true', 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE', 'sort' => 'SOME_STRING_VALUE', 'include' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/simulation/{paymentId}/card/auth-capture: post: operationId: simulateCardAuthorizationCapture description: |2- Simulate a card authorization/capture request. This endpoint aggregates the [Simulate Card Authorization](/api#tag/Simulations/operation/simulateCardAuthorization) and [Simulate Card Capture](/api#tag/Simulations/operation/simulateCardCapture) endpoints. **This endpoint is available for Card Rails (Virtual Debit Cards) only**. Refer to [Merchant API](/docs/payments/merchant-api/#payment-authorization-and-capture-via-card-rails-virtual-debit-cards) Guide for more information. summary: Simulate Card Authorization/Capture tags: - Simulations parameters: - schema: type: string format: uuid description: Payment ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/SimulateCardAuthorizationCapture' required: - data responses: '200': description: OK content: application/vnd.api+json: schema: type: object properties: success: type: boolean description: >- Indicates whether the authorization/capture was successful. example: true error: type: - string - 'null' description: >- Error message if the authorization/capture was not successful. example: Error message required: - success - error '400': description: Bad Request content: application/vnd.api+json: schema: $ref: >- #/components/schemas/SimulationCardAuthorizationValidationResponse x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth-capture \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth-capture', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth-capture", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth-capture") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth-capture") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth-capture\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth-capture"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/123e4567-e89b-12d3-a456-426614174000/card/auth-capture'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/simulation/wallets/{walletId}/backup-linked-account: post: operationId: createDemoBackupPaymentMethod summary: Create Demo Backup Payment Method description: |2- Create a demo backup payment method (linked account) for a wallet in testing environments. This endpoint simulates linking a bank account to a wallet for backup payment purposes without requiring actual bank account credentials or Plaid integration. The created linked account can be used as a backup payment method for transactions when the primary funding source is insufficient. **This endpoint is only available in development, sandbox, and local testing environments.** The `testCardType` parameter is optional and allows you to specify which type of test card to simulate. If not provided, a default test card type will be used. tags: - Simulations parameters: - schema: type: string format: uuid description: Wallet ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: false content: application/json: schema: type: object properties: testCardType: type: string enum: - visa-us-credit - visa-gb-credit - visa-gb-debit - mastercard-mu-credit - mastercard-de-debit description: >- Test card type from Checkout.com that returns response code 10000 (successful transaction) example: visa-us-credit responses: '200': description: Successfully created demo backup payment method content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateDemoBackupPaymentMethodResponse' '201': description: Successfully created demo backup payment method content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateDemoBackupPaymentMethodResponse' '404': description: Wallet not found x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/backup-linked-account \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' \ --header 'content-type: application/json' \ --data '{"testCardType":"visa-us-credit"}' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/backup-linked-account', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef', 'content-type': 'application/json' }, body: {testCardType: 'visa-us-credit'}, json: true }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") payload = "{\"testCardType\":\"visa-us-credit\"}" headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef", 'content-type': "application/json" } conn.request("POST", "/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/backup-linked-account", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/backup-linked-account") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' request["content-type"] = 'application/json' request.body = "{\"testCardType\":\"visa-us-credit\"}" response = http.request(request) puts response.read_body - lang: Java source: >- OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"testCardType\":\"visa-us-credit\"}"); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/backup-linked-account") .post(body) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/backup-linked-account\"\n\n\tpayload := strings.NewReader(\"{\\\"testCardType\\\":\\\"visa-us-credit\\\"}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/backup-linked-account"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); request.AddHeader("content-type", "application/json"); request.AddParameter("application/json", "{\"testCardType\":\"visa-us-credit\"}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/backup-linked-account'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef', 'content-type' => 'application/json' ]); $request->setBody('{"testCardType":"visa-us-credit"}'); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/simulation/wallets/{walletId}/clear-pending/{type}: post: operationId: clearPendingTransactions summary: Clear Pending Transactions description: |2- Clear pending transactions for a wallet by type (bank or card). This endpoint will clear all pending transactions of the specified type for the given wallet. **This endpoint is only available in development, sandbox, and local testing environments.** tags: - Simulations parameters: - schema: type: string format: uuid description: Wallet ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: string enum: - bank - card description: >- Transaction type to clear. 'bank' for ACH/bank transactions, 'card' for card transactions. example: bank required: true name: type in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '204': description: No Content - Transactions cleared successfully '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/InvalidTransactionTypeResponse' '404': description: Wallet not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/WalletNotFoundForSimulationResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/clear-pending/bank'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/simulation/wallets/{walletId}/barcodes: get: operationId: listWalletBarcodes summary: List Wallet Barcodes description: |2- List all barcodes for a wallet in testing environments. Optionally include expired barcodes via `includeExpired`. **This endpoint is only available in development, sandbox, and local testing environments.** tags: - Simulations parameters: - schema: type: string format: uuid description: Wallet ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: boolean description: Include expired barcodes. Defaults to false. example: false required: false name: includeExpired in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListWalletBarcodesResponse' '404': description: Wallet not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/WalletNotFoundForSimulationResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes?includeExpired=false' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes', qs: {includeExpired: 'false'}, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes?includeExpired=false", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes?includeExpired=false") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes?includeExpired=false") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes?includeExpired=false\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes?includeExpired=false"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'includeExpired' => 'false' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } post: operationId: generateWalletBarcode summary: Generate Wallet Barcode description: |2- Generate a barcode for a wallet in testing environments. The barcode `lookUpId` can be used when creating payment intents or when fetching the barcode via [Get Wallet Barcode](/api#tag/Simulations/operation/getWalletBarcode). **This endpoint is only available in development, sandbox, and local testing environments.** tags: - Simulations parameters: - schema: type: string format: uuid description: Wallet ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: false content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/GenerateWalletBarcode' responses: '201': description: Created content: application/vnd.api+json: schema: $ref: '#/components/schemas/GenerateWalletBarcodeResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/GenerateBarcodeValidationResponse' '404': description: Wallet not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/WalletNotFoundForSimulationResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/barcodes'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/simulation/barcodes/{lookUpId}: get: operationId: getWalletBarcode summary: Get Wallet Barcode description: |2- Fetch a barcode by its `lookUpId` in testing environments. The `id` in the response is the wallet ID. Validation is scoped to the merchant derived from the request. **This endpoint is only available in development, sandbox, and local testing environments.** tags: - Simulations parameters: - schema: type: string description: Lookup identifier for the barcode example: SCAN-LOOKUP-ID required: true name: lookUpId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWalletBarcodeResponse' '400': description: Barcode expired or invalid content: application/vnd.api+json: schema: $ref: '#/components/schemas/BarcodeExpiredOrInvalidResponse' '404': description: Barcode not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/BarcodeNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/simulation/barcodes/SCAN-LOOKUP-ID \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/barcodes/SCAN-LOOKUP-ID', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/simulation/barcodes/SCAN-LOOKUP-ID", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/barcodes/SCAN-LOOKUP-ID") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/barcodes/SCAN-LOOKUP-ID") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/barcodes/SCAN-LOOKUP-ID\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/barcodes/SCAN-LOOKUP-ID"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/barcodes/SCAN-LOOKUP-ID'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/simulation/wallets/{walletId}/fail-transaction: post: operationId: failPendingTransaction summary: Fail Pending Transaction description: |2- Fail a pending transaction for a wallet (ACH or card). Fails a pending transaction either by transaction ID or the first pending transaction if no ID is provided. An optional failure reason can be specified to simulate different failure scenarios. **This endpoint is only available in development, sandbox, and local testing environments.** tags: - Simulations parameters: - schema: type: string format: uuid description: Wallet ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: false content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/FailPendingTransactionRequest' responses: '204': description: No Content - Transaction failed successfully '400': description: Bad Request - Invalid transaction content: application/vnd.api+json: schema: $ref: '#/components/schemas/InvalidTransactionResponse' '404': description: Wallet not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/WalletNotFoundForSimulationResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/fail-transaction \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/fail-transaction', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/fail-transaction", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/fail-transaction") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/fail-transaction") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/fail-transaction\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/fail-transaction"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/wallets/123e4567-e89b-12d3-a456-426614174000/fail-transaction'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/simulation/counterparties/{counterpartyId}/deposits: post: operationId: simulateCounterpartyDeposit summary: Simulate Counterparty Deposit description: |2- Simulate an incoming bank deposit into a counterparty's Accrue deposit account. Use this to credit a counterparty in development, sandbox, and local environments without sending a real ACH or wire. The request is accepted immediately. The counterparty balance updates asynchronously after the incoming payment is processed, so a subsequent read may briefly show the previous balance. The counterparty must already have an Accrue deposit account (`internalBankAccount` on the counterparty resource). Counterparties without one cannot receive simulated deposits. **This endpoint is only available in development, sandbox, and local testing environments.** tags: - Simulations parameters: - schema: type: string format: uuid description: Counterparty ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/SimulateCounterpartyDeposit' required: - data responses: '204': description: No Content - Deposit simulation accepted '400': description: >- Invalid amount, or counterparty does not have an Accrue deposit account content: application/vnd.api+json: schema: $ref: >- #/components/schemas/CounterpartyDepositSimulationValidationResponse '404': description: Counterparty not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundForSimulationResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/simulation/counterparties/123e4567-e89b-12d3-a456-426614174000/deposits'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/wallets/:walletId: get: operationId: getWallet tags: - Wallets summary: Get Wallet parameters: - schema: type: string format: uuid description: ID of the wallet to fetch. example: 123e4567-e89b-12d3-a456-426614174000 required: false name: walletId in: path - schema: type: string description: >- Comma-separated list of resources to include. Supported resources: `user` required: false name: include in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWalletResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWalletErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/WalletNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForWalletResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/wallets/:walletId?include=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/wallets/:walletId', qs: {include: 'SOME_STRING_VALUE'}, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/wallets/:walletId?include=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId?include=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId?include=SOME_STRING_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/wallets/:walletId?include=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId?include=SOME_STRING_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/wallets/:walletId'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'include' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/wallets/barcode/{lookUpId}: get: operationId: getWalletByBarcode tags: - Wallets summary: Get Wallet by Barcode description: |2- Fetch a wallet by barcode `lookUpId`. The barcode is validated and scoped to the merchant derived from the request. Use `include=user` to request user information. parameters: - schema: type: string description: Lookup identifier for the barcode example: SCAN-LOOKUP-ID required: true name: lookUpId in: path - schema: type: string description: >- Comma-separated list of resources to include. Supported resources: `user` required: false name: include in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWalletByBarcodeResponse' '400': description: Barcode expired or invalid content: application/vnd.api+json: schema: $ref: '#/components/schemas/WalletBarcodeExpiredOrInvalidResponse' '404': description: Wallet for barcode not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/WalletForBarcodeNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/wallets/barcode/SCAN-LOOKUP-ID?include=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/wallets/barcode/SCAN-LOOKUP-ID', qs: {include: 'SOME_STRING_VALUE'}, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/wallets/barcode/SCAN-LOOKUP-ID?include=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/wallets/barcode/SCAN-LOOKUP-ID?include=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/wallets/barcode/SCAN-LOOKUP-ID?include=SOME_STRING_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/wallets/barcode/SCAN-LOOKUP-ID?include=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/wallets/barcode/SCAN-LOOKUP-ID?include=SOME_STRING_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/wallets/barcode/SCAN-LOOKUP-ID'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'include' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/wallets: post: operationId: createWallet tags: - Wallets summary: Create Wallet parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - Wallet attributes: type: object properties: userId: type: string format: uuid description: The ID of the user to associate with this wallet. example: 123e4567-e89b-12d3-a456-426614174000 required: - userId required: - type - attributes required: - data responses: '201': description: 201 Created content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateWalletResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateWalletErrorResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForWalletResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/wallets \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/wallets', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/wallets", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/wallets") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/wallets") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/wallets\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/wallets"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/wallets'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/wallets/:walletId/balance: get: operationId: getWalletBalance tags: - Wallets summary: Get Wallet Balance parameters: - schema: type: string description: ID of the wallet for which the balance is being fetched. example: 123e4567-e89b-12d3-a456-426614174000 required: false name: walletId in: path - schema: type: string description: >- Comma-separated list of resources to include. Supported resources: `user` required: false name: include in: query - schema: type: string description: Attached User Profile Reference ID example: 123e4567-e89b-12d3-a456-426614174000 required: false name: userReference in: query - schema: type: integer description: >- Purchase amount in cents. When provided, conditional reward calculations may use this value (e.g. minimum purchase thresholds). example: 5000 required: false name: purchaseAmount in: query - schema: type: boolean description: >- When true, the response includes the withdrawable amount in the balance. example: true required: false name: includeWithdrawableAmount in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWalletBalanceResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWalletBalanceErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/NoWalletFoundForBalanceResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForWalletResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/balance?include=SOME_STRING_VALUE&userReference=123e4567-e89b-12d3-a456-426614174000&purchaseAmount=5000&includeWithdrawableAmount=true' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/balance', qs: { include: 'SOME_STRING_VALUE', userReference: '123e4567-e89b-12d3-a456-426614174000', purchaseAmount: '5000', includeWithdrawableAmount: 'true' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/wallets/:walletId/balance?include=SOME_STRING_VALUE&userReference=123e4567-e89b-12d3-a456-426614174000&purchaseAmount=5000&includeWithdrawableAmount=true", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/balance?include=SOME_STRING_VALUE&userReference=123e4567-e89b-12d3-a456-426614174000&purchaseAmount=5000&includeWithdrawableAmount=true") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/balance?include=SOME_STRING_VALUE&userReference=123e4567-e89b-12d3-a456-426614174000&purchaseAmount=5000&includeWithdrawableAmount=true") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/balance?include=SOME_STRING_VALUE&userReference=123e4567-e89b-12d3-a456-426614174000&purchaseAmount=5000&includeWithdrawableAmount=true\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/balance?include=SOME_STRING_VALUE&userReference=123e4567-e89b-12d3-a456-426614174000&purchaseAmount=5000&includeWithdrawableAmount=true"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/balance'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'include' => 'SOME_STRING_VALUE', 'userReference' => '123e4567-e89b-12d3-a456-426614174000', 'purchaseAmount' => '5000', 'includeWithdrawableAmount' => 'true' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/wallets/: get: operationId: listWallets tags: - Wallets summary: List Wallets parameters: - schema: type: string description: Filter the list of objects by the value of the phoneNumber field. required: false name: filter[phoneNumber] in: query - schema: type: string description: Filter the list of objects by the value of the email field. required: false name: filter[email] in: query - schema: type: string description: Filter the list of objects by the value of the referenceId field. required: false name: filter[referenceId] in: query - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListWalletsResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/WalletQueryValidationErrorResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForWalletResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/wallets/?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/wallets/', qs: { 'filter[phoneNumber]': 'SOME_STRING_VALUE', 'filter[email]': 'SOME_STRING_VALUE', 'filter[referenceId]': 'SOME_STRING_VALUE', 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/wallets/?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/wallets/?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/wallets/?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/wallets/?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/wallets/?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/wallets/'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'filter[phoneNumber]' => 'SOME_STRING_VALUE', 'filter[email]' => 'SOME_STRING_VALUE', 'filter[referenceId]' => 'SOME_STRING_VALUE', 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/wallets/:walletId/transactions: post: operationId: createOneTimeDeposit tags: - Wallets summary: Create One-Time Deposit description: >- Create a one-time deposit transaction for a wallet using an existing linked account. Merchants can optionally include a `disbursement` array to split a portion of the total deposit among one or more counterparties. Any undisbursed amount is credited to the consumer's wallet. Processing fees reported in `charges.fee` are collected from the counterparty configured as the Default for Fees on your merchant account. **Example:** A consumer deposits $13.00 (1300 cents) with a $3.00 (300 cents) disbursement to counterparty A. Counterparty A receives $3.00 and the consumer's wallet is credited the remaining $10.00 (1000 cents). parameters: - schema: type: string format: uuid description: The wallet ID to deposit to. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - OneTimeDeposit attributes: type: object properties: amount: type: integer minimum: 100 description: >- The amount to deposit, represented in the smallest currency unit (e.g., cents for USD). Minimum is 100 (e.g., $1.00). To obtain the value in dollars, divide by 100. format: int32 example: 1000 idempotencyKey: type: string format: uuid description: >- A unique key (UUID) to ensure idempotency of the request. Reusing the same key will not create multiple deposits. example: 123e4567-e89b-12d3-a456-426614174000 linkedAccountId: type: string format: uuid description: The linked account ID to use for the deposit. example: 123e4567-e89b-12d3-a456-426614174000 disbursement: type: array items: type: object properties: amount: type: integer minimum: 1 description: >- The fee amount included in the total deposit amount, represented in the smallest currency unit (e.g., cents for USD). This amount will be disbursed to the specified counterparty. The remaining amount (deposit amount - disbursement amount) will be credited to the user's wallet. format: int32 example: 300 counterpartyId: type: string format: uuid description: >- The ID of the counterparty who will receive the disbursement amount. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 remit: type: boolean description: >- Deprecated. This field is accepted but always treated as `true` regardless of the value provided. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - amount - counterpartyId description: >- Optional array of fee disbursements included in the total deposit amount. When provided, the specified amounts will be disbursed to their respective counterparties, and the remainder will be credited to the user's wallet. example: - amount: 300 counterpartyId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 risk: type: object properties: deviceSessionId: type: string description: >- Device session ID used for risk assessment. Optional but recommended for production traffic. required: - deviceSessionId required: - amount - idempotencyKey - linkedAccountId required: - type - attributes required: - data responses: '201': description: 201 Created content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateOneTimeDepositResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateOneTimeDepositErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateOneTimeDepositNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForWalletResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/wallets/:walletId/transactions", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } get: operationId: listTransactions tags: - Wallets summary: List Transactions description: List all transactions for a wallet parameters: - schema: type: string format: uuid description: The wallet ID to list transactions for. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string description: >- Transaction type filter. Currently only "NonRecurring" transactions are returned; other values will return an empty list. example: NonRecurring required: false name: type in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListTransactionsResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListTransactionsErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListTransactionsNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForWalletResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&type=NonRecurring' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions', qs: { 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE', type: 'NonRecurring' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/wallets/:walletId/transactions?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&type=NonRecurring", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&type=NonRecurring") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&type=NonRecurring") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&type=NonRecurring\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&type=NonRecurring"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE', 'type' => 'NonRecurring' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/wallets/:walletId/withdraw: post: operationId: closedLoopWithdraw tags: - Wallets summary: Closed-Loop Withdraw description: >- Withdraw funds from a wallet back to the user's linked account(s). The amount is split across linked accounts. Requires the wallet to have withdrawable balance (see Get Wallet Balance with `includeWithdrawableAmount=true`). parameters: - schema: type: string format: uuid description: The wallet ID to withdraw from. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - Withdraw attributes: type: object properties: amount: type: integer minimum: 100 description: >- The amount to withdraw, in the smallest currency unit (e.g., cents for USD). Minimum is 100 (e.g., $1.00). Must not exceed the wallet's withdrawable amount. format: int32 example: 5000 required: - amount required: - type - attributes required: - data responses: '201': description: 201 Created content: application/vnd.api+json: schema: $ref: '#/components/schemas/ClosedLoopWithdrawResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/ClosedLoopWithdrawErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/ClosedLoopWithdrawNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForWalletResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/withdraw \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/withdraw', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/wallets/:walletId/withdraw", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/withdraw") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/withdraw") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/withdraw\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/withdraw"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/withdraw'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/wallets/:walletId/transactions/:transactionId: get: operationId: getTransaction tags: - Wallets summary: Get Transaction description: Get a specific transaction by ID parameters: - schema: type: string format: uuid description: The wallet ID. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: string format: uuid description: The transaction ID. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: transactionId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetTransactionResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetTransactionErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetTransactionNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForWalletResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions/:transactionId \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions/:transactionId', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/wallets/:walletId/transactions/:transactionId", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions/:transactionId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions/:transactionId") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions/:transactionId\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions/:transactionId"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/wallets/:walletId/transactions/:transactionId'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users: get: operationId: listUsers tags: - Users summary: List Users parameters: - schema: type: string description: Filter the list of objects by the value of the phoneNumber field. required: false name: filter[phoneNumber] in: query - schema: type: string description: Filter the list of objects by the value of the email field. required: false name: filter[email] in: query - schema: type: string description: Filter the list of objects by the value of the referenceId field. required: false name: filter[referenceId] in: query - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListUsersResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/UserQueryValidationErrorResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/users?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/users', qs: { 'filter[phoneNumber]': 'SOME_STRING_VALUE', 'filter[email]': 'SOME_STRING_VALUE', 'filter[referenceId]': 'SOME_STRING_VALUE', 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/users?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5Bemail%5D=SOME_STRING_VALUE&filter%5BreferenceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'filter[phoneNumber]' => 'SOME_STRING_VALUE', 'filter[email]' => 'SOME_STRING_VALUE', 'filter[referenceId]' => 'SOME_STRING_VALUE', 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } post: operationId: createUser tags: - Users summary: Create User parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/CreateUser' required: - data responses: '201': description: Created content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateUserResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateUserErrorResponse' '409': description: Conflict content: application/vnd.api+json: schema: $ref: '#/components/schemas/UserAlreadyExistsResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateUserInternalServerErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/users \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/users', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/users", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userReference/attached-profile: patch: operationId: updateUser tags: - Users summary: Update User parameters: - schema: type: string description: '`User ID` or `Attached User Profile Reference ID`' example: 123e4567-e89b-12d3-a456-426614174000 required: true name: userReference in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: $ref: '#/components/schemas/AttachedProfile' responses: '204': description: No Content '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/UpdateUserAttachedProfileErrorResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request PATCH \ --url https://merchant-api.accruesavings.com/api/v1/users/:userReference/attached-profile \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'PATCH', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userReference/attached-profile', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("PATCH", "/api/v1/users/:userReference/attached-profile", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userReference/attached-profile") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Patch.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userReference/attached-profile") .patch(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userReference/attached-profile\"\n\n\treq, _ := http.NewRequest(\"PATCH\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userReference/attached-profile"); var request = new RestRequest(Method.PATCH); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userReference/attached-profile'); $request->setMethod(HttpRequest::HTTP_METH_PATCH); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userId: get: operationId: getUser tags: - Users summary: Get User parameters: - schema: type: string description: '`User ID`' example: 123e4567-e89b-12d3-a456-426614174000 required: true name: userId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetUserResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetUserErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/UserNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/users/:userId \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userId', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/users/:userId", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userId") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userId\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userId"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userId'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userId/disclosures/kyc: post: operationId: acceptKycDisclosureDocuments tags: - Users summary: Accept KYC Disclosure Documents parameters: - schema: type: string description: '`User ID`' example: 123e4567-e89b-12d3-a456-426614174000 required: true name: userId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '204': description: No Content '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/AcceptKycDisclosureDocumentsErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/UserNotFoundForDisclosureResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/users/:userId/disclosures/kyc \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userId/disclosures/kyc', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/users/:userId/disclosures/kyc", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userId/disclosures/kyc") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userId/disclosures/kyc") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userId/disclosures/kyc\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userId/disclosures/kyc"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userId/disclosures/kyc'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userIdentifier/identity-verification/challenges: post: operationId: createIdentityVerificationChallenge tags: - Identity Verification summary: Create Identity Verification Challenge description: >- Creates a knowledge-based identity verification challenge for a user. Returns three multiple-choice questions derived from the user's profile (name, date of birth), linked account masks, and qualifying wallet transactions. The user must have a complete profile with name and date of birth before a challenge can be generated. parameters: - schema: type: string description: >- Accrue `userId` or merchant `userReference` (`externalUserId` / `stableExternalUserId`). Accrue resolves the identifier automatically against active wallets for your merchant. example: merchant-user-42 required: true name: userIdentifier in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: Challenge created successfully. content: application/vnd.api+json: schema: $ref: >- #/components/schemas/CreateIdentityVerificationChallengeResponse '400': description: Bad Request content: application/vnd.api+json: schema: $ref: >- #/components/schemas/CreateIdentityVerificationChallengeErrorResponse '403': description: Forbidden content: application/vnd.api+json: schema: $ref: '#/components/schemas/InsufficientVerificationDataResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: >- #/components/schemas/UserNotFoundForIdentityVerificationResponse '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: >- #/components/schemas/UnexpectedIdentityVerificationErrorResponse x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/users/:userIdentifier/identity-verification/challenges", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userIdentifier/identity-verification/challenges/:challengeId/submissions: post: operationId: submitIdentityVerificationChallenge tags: - Identity Verification summary: Submit Identity Verification Challenge description: >- Submits answers for an active challenge. Each challenge allows up to three submission attempts. When all answers are correct, the response includes a single-use `verificationToken` that can be used to apply a verified profile update within 10 minutes. parameters: - schema: type: string description: >- Accrue `userId` or merchant `userReference` (`externalUserId` / `stableExternalUserId`). Accrue resolves the identifier automatically against active wallets for your merchant. example: merchant-user-42 required: true name: userIdentifier in: path - schema: type: string format: uuid description: The challenge ID returned from the create challenge endpoint. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: challengeId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: $ref: '#/components/schemas/SubmitIdentityVerificationChallengeRequest' responses: '200': description: >- Submission processed. Check `passed` to determine whether a verification token was issued. content: application/vnd.api+json: schema: $ref: >- #/components/schemas/SubmitIdentityVerificationChallengeResponse '400': description: Bad Request content: application/vnd.api+json: schema: $ref: >- #/components/schemas/SubmitIdentityVerificationChallengeErrorResponse '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/ChallengeNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: >- #/components/schemas/UnexpectedIdentityVerificationErrorResponse x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges/:challengeId/submissions \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges/:challengeId/submissions', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/users/:userIdentifier/identity-verification/challenges/:challengeId/submissions", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges/:challengeId/submissions") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges/:challengeId/submissions") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges/:challengeId/submissions\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges/:challengeId/submissions"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/challenges/:challengeId/submissions'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userIdentifier/identity-verification/profile-updates: post: operationId: applyVerifiedProfileUpdate tags: - Identity Verification summary: Apply Verified Profile Update description: >- Applies a phone number and/or email update after the user passes identity verification. Requires a valid, unused `verificationToken` from a successful challenge submission. At least one of `phoneNumber` or `email` must be provided. Changing the phone number clears the user's Better Auth session link and marks the updated contact fields as unverified. parameters: - schema: type: string description: >- Accrue `userId` or merchant `userReference` (`externalUserId` / `stableExternalUserId`). Accrue resolves the identifier automatically against active wallets for your merchant. example: merchant-user-42 required: true name: userIdentifier in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: $ref: '#/components/schemas/ApplyVerifiedProfileUpdateRequest' responses: '200': description: Profile update applied successfully. content: application/vnd.api+json: schema: $ref: '#/components/schemas/ApplyVerifiedProfileUpdateResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/ApplyVerifiedProfileUpdateErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: >- #/components/schemas/ApplyVerifiedProfileUpdateNotFoundResponse '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: >- #/components/schemas/UnexpectedIdentityVerificationErrorResponse x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/profile-updates \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/profile-updates', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/users/:userIdentifier/identity-verification/profile-updates", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/profile-updates") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/profile-updates") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/profile-updates\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/profile-updates"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userIdentifier/identity-verification/profile-updates'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/widgets/wallet/{walletId}: get: operationId: getWalletWidgetData tags: - Widgets summary: Get Wallet Widget Data parameters: - schema: type: string format: uuid description: Wallet ID for which widgets are loaded example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: boolean description: >- Include the Data Transfer Object field, containing widget data in a structured format. required: false name: includeDto in: query - schema: type: integer description: Purchase amount (in cents) format: int32 example: 1000 required: false name: purchaseAmount in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWalletWidgetDataResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/WalletWidgetErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000', qs: {includeDto: 'SOME_BOOLEAN_VALUE', purchaseAmount: '1000'}, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/widgets/wallet/123e4567-e89b-12d3-a456-426614174000'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'includeDto' => 'SOME_BOOLEAN_VALUE', 'purchaseAmount' => '1000' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/widgets/wallet: get: operationId: findWalletWidgetData tags: - Widgets summary: Find Wallet Widget Data parameters: - schema: type: boolean description: >- Include the Data Transfer Object field, containing widget data in a structured format. required: false name: includeDto in: query - schema: type: integer description: Purchase amount (in cents) format: int32 example: 1000 required: false name: purchaseAmount in: query - schema: type: string description: >- Merchant-scoped user identifier (`stableReferenceId`). Preferred for new integrations. example: stable-abc-123 required: false name: filter[userReference] in: query - schema: type: string description: >- Legacy `referenceId`. Provide alongside `filter[userReference]` when the stable id may not be on file yet. example: user-123 required: false name: filter[secondaryUserReference] in: query - schema: type: string description: Filter the list of objects by the value of the phoneNumber field. required: false name: filter[phoneNumber] in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWalletWidgetDataResponse' '400': description: Bad Request content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WalletWidgetErrorResponse' - anyOf: - $ref: '#/components/schemas/NoWalletFoundResponse' - $ref: >- #/components/schemas/MultipleWalletsFoundForWidgetResponse - $ref: >- #/components/schemas/InvalidIdentifierForWidgetResponse x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/widgets/wallet', qs: { includeDto: 'SOME_BOOLEAN_VALUE', purchaseAmount: '1000', 'filter[userReference]': 'stable-abc-123', 'filter[secondaryUserReference]': 'user-123', 'filter[phoneNumber]': 'SOME_STRING_VALUE' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/widgets/wallet'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'includeDto' => 'SOME_BOOLEAN_VALUE', 'purchaseAmount' => '1000', 'filter[userReference]' => 'stable-abc-123', 'filter[secondaryUserReference]' => 'user-123', 'filter[phoneNumber]' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/widgets/payment-intent/{paymentIntentId}/linked-account: get: operationId: getLinkedAccountWidgetData tags: - Widgets summary: Get Linked Account Widget Data description: |- This endpoint returns data for the Linked Account Widget. If you prefer to build your own widget, you can use the `dto` field to get the data in a structured format. parameters: - schema: type: string format: uuid description: Payment Intent ID example: 123e4567-e89b-12d3-a456-426614174000 required: true name: paymentIntentId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetLinkedAccountWidgetDataResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/LinkedAccountWidgetErrorResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedWidgetErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/widgets/payment-intent/123e4567-e89b-12d3-a456-426614174000/linked-account'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v2/widgets/wallet/{walletId}: get: operationId: getWalletWidgetDataV2 tags: - Widgets summary: Get Wallet Widget Data (V2) description: >- This endpoint returns data: null instead of 400 error when no wallet is found parameters: - schema: type: string format: uuid description: Wallet ID for which widgets are loaded example: 123e4567-e89b-12d3-a456-426614174000 required: true name: walletId in: path - schema: type: boolean description: >- Include the Data Transfer Object field, containing widget data in a structured format. required: false name: includeDto in: query - schema: type: integer description: Purchase amount (in cents) format: int32 example: 1000 required: false name: purchaseAmount in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWalletWidgetDataV2Response' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/WalletWidgetV2ErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v2/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v2/widgets/wallet/123e4567-e89b-12d3-a456-426614174000', qs: {includeDto: 'SOME_BOOLEAN_VALUE', purchaseAmount: '1000'}, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v2/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v2/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v2/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v2/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v2/widgets/wallet/123e4567-e89b-12d3-a456-426614174000?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v2/widgets/wallet/123e4567-e89b-12d3-a456-426614174000'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'includeDto' => 'SOME_BOOLEAN_VALUE', 'purchaseAmount' => '1000' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v2/widgets/wallet: get: operationId: findWalletWidgetDataV2 tags: - Widgets summary: Find Wallet Widget Data (V2) description: >- This endpoint returns data: null instead of 400 error when no wallet is found parameters: - schema: type: boolean description: >- Include the Data Transfer Object field, containing widget data in a structured format. required: false name: includeDto in: query - schema: type: integer description: Purchase amount (in cents) format: int32 example: 1000 required: false name: purchaseAmount in: query - schema: type: string description: >- Merchant-scoped user identifier (`stableReferenceId`). Preferred for new integrations. example: stable-abc-123 required: false name: filter[userReference] in: query - schema: type: string description: >- Legacy `referenceId`. Provide alongside `filter[userReference]` when the stable id may not be on file yet. example: user-123 required: false name: filter[secondaryUserReference] in: query - schema: type: string description: Filter the list of objects by the value of the phoneNumber field. required: false name: filter[phoneNumber] in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/FindWalletWidgetDataV2Response' '400': description: Bad Request content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WalletWidgetV2ErrorResponse' - anyOf: - $ref: >- #/components/schemas/MultipleWalletsFoundForWidgetResponse - $ref: >- #/components/schemas/InvalidIdentifierForWidgetResponse x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v2/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v2/widgets/wallet', qs: { includeDto: 'SOME_BOOLEAN_VALUE', purchaseAmount: '1000', 'filter[userReference]': 'stable-abc-123', 'filter[secondaryUserReference]': 'user-123', 'filter[phoneNumber]': 'SOME_STRING_VALUE' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v2/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v2/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v2/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v2/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v2/widgets/wallet?includeDto=SOME_BOOLEAN_VALUE&purchaseAmount=1000&filter%5BuserReference%5D=stable-abc-123&filter%5BsecondaryUserReference%5D=user-123&filter%5BphoneNumber%5D=SOME_STRING_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v2/widgets/wallet'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'includeDto' => 'SOME_BOOLEAN_VALUE', 'purchaseAmount' => '1000', 'filter[userReference]' => 'stable-abc-123', 'filter[secondaryUserReference]' => 'user-123', 'filter[phoneNumber]' => 'SOME_STRING_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/widgets/session: post: operationId: createWidgetSession tags: - Widgets summary: Create Widget Session description: >- Creates a new widget session that can be used to authenticate and interact with Accrue widgets. The session token returned should be passed to the widget for authentication. parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateWidgetSessionRequest' responses: '200': description: Widget session created successfully content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateWidgetSessionResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/WidgetSessionValidationErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/widgets/session \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/widgets/session', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/widgets/session", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/widgets/session") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/widgets/session") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/widgets/session\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/widgets/session"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/widgets/session'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/sweepstakes/{sweepstakesId}/results: post: operationId: addSweepstakesResults tags: - Sweepstakes summary: Add Sweepstakes Results parameters: - schema: type: string description: Sweepstakes ID required: true name: sweepstakesId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/SweepstakesResults' required: - data responses: '201': description: 201 Created '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/AddSweepstakesResultsErrorResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedSweepstakesErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/sweepstakes/%7BsweepstakesId%7D/results \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/sweepstakes/%7BsweepstakesId%7D/results', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/sweepstakes/%7BsweepstakesId%7D/results", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/sweepstakes/%7BsweepstakesId%7D/results") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/sweepstakes/%7BsweepstakesId%7D/results") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/sweepstakes/%7BsweepstakesId%7D/results\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/sweepstakes/%7BsweepstakesId%7D/results"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/sweepstakes/%7BsweepstakesId%7D/results'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/rewards: post: operationId: issueReward tags: - Rewards summary: Issue Reward description: >- Issue a reward to a recipient identified by phone number. If the recipient has exactly one active wallet, the reward is credited immediately (`kind: immediate`, `status: Credited`). Otherwise, if no blocking wallet exists, a pre-issued reward is created (`kind: preIssued`, `status: Created`). All responses use the unified `Reward` resource type. Requires an `idempotencyKey`. Retries are safe when the full request body is unchanged — the API fingerprints the body server-side and replays the prior result for matching key + fingerprint pairs. parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/IssueRewardRequest' required: - data responses: '200': description: >- Reward issued successfully. Response is always `type: Reward`; use `kind`, `status`, and capability flags to interpret the outcome. content: application/vnd.api+json: schema: $ref: '#/components/schemas/IssueRewardResponse' '400': description: Validation error or unresolvable recipient content: application/vnd.api+json: schema: $ref: '#/components/schemas/IssueRewardErrorResponse' '409': description: >- Conflict — wallet not issuable, pre-issued exists, or idempotency mismatch content: application/vnd.api+json: schema: $ref: '#/components/schemas/IssueRewardConflictResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/IssueRewardUnexpectedErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/rewards \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/rewards', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/rewards", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/rewards") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/rewards") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/rewards\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/rewards"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/rewards'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } get: operationId: listIssuedRewards tags: - Rewards summary: List Issued Rewards description: >- List rewards issued to a recipient. Returns a paginated list of unified `Reward` resources that may include both immediate credits and pre-issued rewards. `filter[phoneNumber]` is required. When `filter[status]` is provided, only pre-issued rewards matching that status are returned. parameters: - schema: type: string description: Recipient phone number to look up (required). example: '+15551234567' required: false name: filter[phoneNumber] in: query - schema: type: string description: >- When set, filters to pre-issued rewards with this status only (`Created`, `Claimed`, `Expired`, or `Cancelled`). example: Created required: false name: filter[status] in: query - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListIssuedRewardsResponse' '400': description: Validation error content: application/vnd.api+json: schema: $ref: '#/components/schemas/InvalidRewardRequestResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/RewardLookupUnexpectedErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/rewards?filter%5BphoneNumber%5D=%2B15551234567&filter%5Bstatus%5D=Created&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/rewards', qs: { 'filter[phoneNumber]': '+15551234567', 'filter[status]': 'Created', 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/rewards?filter%5BphoneNumber%5D=%2B15551234567&filter%5Bstatus%5D=Created&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/rewards?filter%5BphoneNumber%5D=%2B15551234567&filter%5Bstatus%5D=Created&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/rewards?filter%5BphoneNumber%5D=%2B15551234567&filter%5Bstatus%5D=Created&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/rewards?filter%5BphoneNumber%5D=%2B15551234567&filter%5Bstatus%5D=Created&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/rewards?filter%5BphoneNumber%5D=%2B15551234567&filter%5Bstatus%5D=Created&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/rewards'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'filter[phoneNumber]' => '+15551234567', 'filter[status]' => 'Created', 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/rewards/{id}: get: operationId: getIssuedRewardById tags: - Rewards summary: Get Issued Reward by ID description: >- Look up a single issued reward by ID. Returns a unified `Reward` resource when found, or `{ data: null }` when not found. parameters: - schema: type: string format: uuid description: Reward ID (immediate credit or pre-issued reward). example: 123e4567-e89b-12d3-a456-426614174000 required: true name: id in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK — reward found or `data` is null content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetIssuedRewardByIdResponse' '400': description: Validation error content: application/vnd.api+json: schema: $ref: '#/components/schemas/InvalidRewardRequestResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/RewardLookupUnexpectedErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000 \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } patch: operationId: updateReward tags: - Rewards summary: Update Reward description: >- Update a reward when `canUpdate` is `true` (pre-issued rewards in `Created` status). At least one attribute must be provided. Returns the updated unified `Reward` resource. parameters: - schema: type: string format: uuid description: Reward ID. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: id in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/UpdateRewardRequest' required: - data responses: '200': description: Reward updated successfully content: application/vnd.api+json: schema: $ref: '#/components/schemas/UpdateRewardResponse' '400': description: Validation error content: application/vnd.api+json: schema: $ref: '#/components/schemas/InvalidRewardRequestResponse' '404': description: Reward not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/RewardNotFoundResponse' '409': description: Reward cannot be modified in its current state content: application/vnd.api+json: schema: $ref: '#/components/schemas/InvalidRewardStateResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/RewardManagementUnexpectedErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request PATCH \ --url https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000 \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'PATCH', url: 'https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("PATCH", "/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Patch.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000") .patch(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000\"\n\n\treq, _ := http.NewRequest(\"PATCH\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000"); var request = new RestRequest(Method.PATCH); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000'); $request->setMethod(HttpRequest::HTTP_METH_PATCH); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } delete: operationId: cancelReward tags: - Rewards summary: Cancel Reward description: >- Cancel a reward when `canCancel` is `true` (pre-issued rewards in `Created` status). Returns `204 No Content` on success. parameters: - schema: type: string format: uuid description: Reward ID. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: id in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '204': description: Reward cancelled successfully '404': description: Reward not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/RewardNotFoundResponse' '409': description: Reward cannot be modified in its current state content: application/vnd.api+json: schema: $ref: '#/components/schemas/InvalidRewardStateResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/RewardManagementUnexpectedErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request DELETE \ --url https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000 \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'DELETE', url: 'https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("DELETE", "/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Delete.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000") .delete(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000"); var request = new RestRequest(Method.DELETE); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/rewards/123e4567-e89b-12d3-a456-426614174000'); $request->setMethod(HTTP_METH_DELETE); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/gifts/{lookUpId}: get: operationId: getGiftByLookUpId tags: - Gifts summary: Get Gift by lookUpId description: |2- Fetch remaining gift balance by scanned `lookUpId`. The identifier is scoped to the merchant derived from the request. Amounts are integer cents. `data.id` is the gift public reference. Point-of-sale spend must POST `/api/v1/payment-intents` with the **path** `lookUpId` — never send `data.id` as `walletId`. parameters: - schema: type: string description: >- Scanned lookup identifier for the gift. Use this same string as payment-intent lookUpId to spend. example: SCAN-LOOKUP-ID required: true name: lookUpId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetGiftByLookUpIdResponse' '400': description: LookUpId expired or invalid content: application/vnd.api+json: schema: $ref: '#/components/schemas/GiftLookUpIdExpiredOrInvalidResponse' '404': description: Gift for lookUpId not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/GiftNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/gifts/SCAN-LOOKUP-ID \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/gifts/SCAN-LOOKUP-ID', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/gifts/SCAN-LOOKUP-ID", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/gifts/SCAN-LOOKUP-ID") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/gifts/SCAN-LOOKUP-ID") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/gifts/SCAN-LOOKUP-ID\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/gifts/SCAN-LOOKUP-ID"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/gifts/SCAN-LOOKUP-ID'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userId/kyc/application: post: operationId: createKycApplication tags: - Banking summary: Create KYC Application description: >- Creates a new KYC (Know Your Customer) application for a user with their personal information. This initiates the identity verification process required for banking features. The application will be processed through automated checks and may require additional document verification depending on the verification outcome. parameters: - schema: type: string format: uuid description: The unique identifier for the user example: 550e8400-e29b-41d4-a716-446655440000 required: true name: userId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - Kyc attributes: type: object properties: ipAddress: type: string description: >- The IP address of the user submitting the KYC application. Used for fraud detection and compliance purposes. example: 192.168.1.1 firstName: type: string minLength: 1 description: >- The user's legal first name as it appears on their government-issued ID example: John lastName: type: string minLength: 1 description: >- The user's legal last name as it appears on their government-issued ID example: Doe phone: type: string minLength: 10 description: >- The user's phone number (10+ digits, no formatting required) example: '5551234567' dateOfBirth: type: string pattern: ^\d{4}-\d{2}-\d{2}$ description: The user's date of birth in YYYY-MM-DD format example: '1990-01-15' email: type: string format: email description: >- @lowrisk.com - approved(Webhook Event- KycApproved) @highrisk.com - you go into Manual review((Webhook Event- KycManualReview) @veryhighrisk.com - denied(Webhook Event- KycDenied) Here in KYCManualReview, we either move them in sardine to Awaiting documents((Webhook Event- KycAwaitingDocuments) or Approved/Denied based on Manual Review of KYC Application (User can upload docs when they are in either KycManualReview/KycAwaitingDocuments, when the user has uploaded docs and waiting for us to verify the KYC is in pending state and you would get KycPending webhook event) example: john.doe@example.com street: type: string minLength: 3 description: The street address (minimum 3 characters) example: 123 Main Street street2: type: string description: >- Additional address information (apartment, suite, etc.) example: Apt 4B city: type: string minLength: 2 description: The city name (minimum 2 characters) example: New York state: type: string minLength: 2 description: The two-letter state code example: NY postalCode: type: string pattern: ^\d{5}(-\d{4})?$ description: The ZIP code in 5-digit or 5+4 format example: '10001' required: - firstName - lastName - phone - dateOfBirth - email - street - city - state - postalCode required: - type - attributes required: - data responses: '200': description: >- KYC application created successfully. The response includes the initial verification status, which may be Pending, Approved, Denied, or AwaitingDocuments depending on automated checks. content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateKycApplicationResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateKycApplicationErrorResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForBankingResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/application \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/application', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/users/:userId/kyc/application", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/application") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/application") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/application\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/application"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/application'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userId/kyc/status: get: operationId: getKycStatus tags: - Banking summary: Get KYC Status description: >- Retrieves the current KYC verification status for a user. Returns null if no KYC application has been submitted for the user. Use this endpoint to check the progress of a user's identity verification. parameters: - schema: type: string format: uuid description: The unique identifier for the user example: 550e8400-e29b-41d4-a716-446655440000 required: true name: userId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: >- KYC status retrieved successfully. Returns the current verification status or null if no application exists. content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetKycStatusResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetKycStatusErrorResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForBankingResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/status \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/status', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/users/:userId/kyc/status", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/status") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/status") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/status\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/status"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/status'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userId/kyc/document-verification-link: post: operationId: getDocumentVerificationLink tags: - Banking summary: Get Document Verification Link description: >- Generates a secure, time-limited link to document verification portal. Use this when a user's KYC status is 'AwaitingDocuments' and they need to upload identity documents (such as a driver's license or passport). The user should be redirected to the returned URL to complete the verification process. parameters: - schema: type: string format: uuid description: The unique identifier for the user example: 550e8400-e29b-41d4-a716-446655440000 required: true name: userId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - DocumentVerificationLink attributes: type: object properties: redirectUrl: type: string format: uri description: >- The URL to redirect the user to after they complete document verification example: https://example.com/kyc/callback required: - redirectUrl required: - type - attributes required: - data responses: '200': description: >- Document verification link generated successfully. Redirect the user to the returned URL to complete identity document upload. content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetDocumentVerificationLinkResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetDocumentVerificationLinkErrorResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForBankingResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification-link \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification-link', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/users/:userId/kyc/document-verification-link", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification-link") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification-link") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification-link\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification-link"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification-link'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userId/kyc/document-verification/complete: post: operationId: completeDocumentVerification tags: - Banking summary: Complete Document Verification description: >- Marks the document verification process as complete and retrieves the updated KYC status. Call this endpoint after the user has finished uploading documents through the portal. The response will contain the updated verification status, which may be Approved, ManualReview, or Denied based on the document review. parameters: - schema: type: string format: uuid description: The unique identifier for the user example: 550e8400-e29b-41d4-a716-446655440000 required: true name: userId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: >- Document verification marked as complete. The response includes the updated KYC status based on the document review. content: application/vnd.api+json: schema: $ref: '#/components/schemas/CompleteDocumentVerificationResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CompleteDocumentVerificationErrorResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedErrorForBankingResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification/complete \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification/complete', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/users/:userId/kyc/document-verification/complete", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification/complete") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification/complete") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification/complete\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification/complete"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/document-verification/complete'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/counterparties: post: operationId: createCounterparty tags: - Counterparties summary: Create Counterparty description: >- Create a new counterparty. Counterparties define bank accounts where funds will be settled. parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - CreateCounterparty attributes: type: object properties: label: type: string description: Optional label for the counterparty. example: Primary Business Account accountNumber: type: string description: The bank account number for settlements. example: '1234567890' routingNumber: type: string pattern: ^[0-9]{9}$ description: >- The nine-digit ABA routing number of the bank account for settlements. Validated on create: it must be nine digits, begin with a routing symbol issued to a US bank, and satisfy the ABA checksum. A value that fails any of these is rejected with `400 InvalidRoutingNumber`. example: '021000021' accountType: type: string enum: - Checking - Savings description: The type of bank account. example: Checking required: - accountNumber - routingNumber - accountType required: - type - attributes required: - data responses: '201': description: Counterparty created successfully content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateCounterpartyResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyValidationErrorResponse' '409': description: Conflict content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyAlreadyExistsResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/counterparties \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/counterparties', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/counterparties", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/counterparties") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/counterparties/: get: operationId: listCounterparties tags: - Counterparties summary: List Counterparties description: List all counterparties. parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListCounterpartiesResponse' '401': description: Unauthorized content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnauthorizedForCounterpartiesResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/counterparties/ \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/counterparties/", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/counterparties/") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/counterparties/:counterpartyId: get: operationId: getCounterparty tags: - Counterparties summary: Get Counterparty description: Get a specific counterparty by ID. parameters: - schema: type: string format: uuid description: ID of the counterparty to fetch. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetCounterpartyResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/counterparties/:counterpartyId", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } patch: operationId: updateCounterparty tags: - Counterparties summary: Update Counterparty description: >- Update a counterparty. Use this endpoint to update editable fields. Some fields, like account number and routing number, can't be edited. parameters: - schema: type: string format: uuid description: ID of the counterparty to update. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - UpdateCounterparty attributes: type: object properties: label: type: string description: Optional label for the counterparty. example: Updated Business Account required: - type - attributes required: - data responses: '200': description: Counterparty updated successfully content: application/vnd.api+json: schema: $ref: '#/components/schemas/UpdateCounterpartyResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyValidationErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request PATCH \ --url https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'PATCH', url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("PATCH", "/api/v1/counterparties/:counterpartyId", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Patch.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId") .patch(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId\"\n\n\treq, _ := http.NewRequest(\"PATCH\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId"); var request = new RestRequest(Method.PATCH); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId'); $request->setMethod(HttpRequest::HTTP_METH_PATCH); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } delete: operationId: deleteCounterparty tags: - Counterparties summary: Delete Counterparty description: >- Soft-delete a counterparty. The counterparty will be marked as deleted but not permanently removed from the system. Deleting moves no money, so a counterparty that still holds a balance cannot be deleted — pay the remaining balance out first. parameters: - schema: type: string format: uuid description: ID of the counterparty to delete. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '204': description: Counterparty deleted successfully (no content) '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundResponse' '409': description: Conflict. The counterparty still holds a balance. content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyHasBalanceResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request DELETE \ --url https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'DELETE', url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("DELETE", "/api/v1/counterparties/:counterpartyId", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Delete.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId") .delete(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId"); var request = new RestRequest(Method.DELETE); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId'); $request->setMethod(HTTP_METH_DELETE); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/counterparties/:counterpartyId/payouts: post: operationId: createCounterpartyPayout tags: - Counterparties summary: Create Counterparty Payout description: >- Initiate a payout from the counterparty's available balance to their bank account. parameters: - schema: type: string format: uuid description: ID of the counterparty from which to payout. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - CreateCounterpartyPayout attributes: type: object properties: amount: type: integer minimum: 1 maximum: 2147483647 description: >- Amount to payout in cents. Capped at 2147483647 ($21,474,836.47) per payout; a larger available balance must be paid out across multiple payouts. format: int32 example: 5000 idempotencyKey: type: string minLength: 1 maxLength: 255 description: Idempotency key to prevent duplicate payouts example: payout_12345 required: - amount - idempotencyKey required: - type - attributes required: - data responses: '201': description: Payout initiated successfully content: application/vnd.api+json: schema: $ref: '#/components/schemas/PayoutFromCounterpartyResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateCounterpartyPayoutErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/counterparties/:counterpartyId/payouts", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } get: operationId: listCounterpartyPayouts tags: - Counterparties summary: List Counterparty Payouts description: >- List the payouts of a specific counterparty, newest first. `meta.total` counts the payouts matching the filters, so page through the list with `page[offset]` until you have read `meta.total` records. Both bounds of every filter range are inclusive. parameters: - schema: type: string format: uuid description: ID of the counterparty to fetch payouts for. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string enum: - Approved - Cancelled - Completed - Denied - Failed - NeedsApproval - Pending - Processing - Returned - Reversed - Sent description: Filter payouts by status. example: Sent required: false name: filter[status] in: query - schema: type: integer minimum: 0 description: Only payouts of at least this amount, in cents. example: 1000 required: false name: filter[minAmount] in: query - schema: type: integer minimum: 0 description: Only payouts of at most this amount, in cents. example: 500000 required: false name: filter[maxAmount] in: query - schema: type: string format: date-time description: Only payouts created at or after this ISO 8601 datetime. example: '2024-01-01T00:00:00.000Z' required: false name: filter[createdAfter] in: query - schema: type: string format: date-time description: Only payouts created at or before this ISO 8601 datetime. example: '2024-12-31T23:59:59.999Z' required: false name: filter[createdBefore] in: query - schema: type: string format: date description: >- Only payouts with an effective date on or after this date (YYYY-MM-DD). example: '2024-01-01' required: false name: filter[effectiveDateFrom] in: query - schema: type: string format: date description: >- Only payouts with an effective date on or before this date (YYYY-MM-DD). example: '2024-12-31' required: false name: filter[effectiveDateTo] in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListCounterpartyPayoutsResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts', qs: { 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE', 'filter[status]': 'Sent', 'filter[minAmount]': '1000', 'filter[maxAmount]': '500000', 'filter[createdAfter]': '2024-01-01T00:00:00.000Z', 'filter[createdBefore]': '2024-12-31T23:59:59.999Z', 'filter[effectiveDateFrom]': '2024-01-01', 'filter[effectiveDateTo]': '2024-12-31' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE', 'filter[status]' => 'Sent', 'filter[minAmount]' => '1000', 'filter[maxAmount]' => '500000', 'filter[createdAfter]' => '2024-01-01T00:00:00.000Z', 'filter[createdBefore]' => '2024-12-31T23:59:59.999Z', 'filter[effectiveDateFrom]' => '2024-01-01', 'filter[effectiveDateTo]' => '2024-12-31' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/counterparty-transfers: post: operationId: createCounterpartyTransfer tags: - CounterpartyTransfers summary: Create Counterparty Transfer description: >- Initiate a transfer of funds between two counterparties owned by the authenticated partner. parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - CounterpartyTransfer attributes: type: object properties: fromCounterpartyId: type: string format: uuid description: ID of the source counterparty. example: 123e4567-e89b-12d3-a456-426614174000 toCounterpartyId: type: string format: uuid description: ID of the destination counterparty. example: 123e4567-e89b-12d3-a456-426614174000 amount: type: integer minimum: 1 description: Amount in cents format: int32 example: 1500 idempotencyKey: type: string minLength: 1 maxLength: 255 description: Idempotency key to prevent duplicate transfers. example: transfer_12345 metadata: type: object additionalProperties: type: string description: >- Optional string-keyed metadata associated with the transfer. Values must be strings; serialize numbers, booleans, or structured data as strings before sending (e.g. JSON.stringify). example: orderId: order_123 required: - fromCounterpartyId - toCounterpartyId - amount - idempotencyKey required: - type - attributes required: - data responses: '201': description: Counterparty transfer created successfully content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateCounterpartyTransferResponse' '400': description: Validation error content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyTransferValidationResponse' '403': description: Forbidden — counterparty belongs to a different partner content: application/vnd.api+json: schema: $ref: '#/components/schemas/CrossTenantCounterpartyTransferResponse' '404': description: >- Source or destination counterparty does not exist in the authenticated partner scope. content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundOnCreateResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/counterparty-transfers \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/counterparty-transfers', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/counterparty-transfers", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparty-transfers") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/counterparty-transfers") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparty-transfers\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparty-transfers"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/counterparty-transfers'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/counterparty-transfers/: get: operationId: listCounterpartyTransfers tags: - CounterpartyTransfers summary: List Counterparty Transfers description: List all counterparty transfers for the authenticated partner. parameters: - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string format: uuid description: Filter transfers by source counterparty ID. example: 123e4567-e89b-12d3-a456-426614174000 required: false name: filter[fromCounterpartyId] in: query - schema: type: string format: uuid description: Filter transfers by destination counterparty ID. example: 123e4567-e89b-12d3-a456-426614174000 required: false name: filter[toCounterpartyId] in: query - schema: type: string enum: - Pending - Completed - Failed description: Filter transfers by status. example: Completed required: false name: filter[status] in: query - schema: type: string format: date-time description: Filter transfers created after this ISO 8601 datetime. example: '2024-01-01T00:00:00.000Z' required: false name: filter[createdAfter] in: query - schema: type: string format: date-time description: Filter transfers created before this ISO 8601 datetime. example: '2024-12-31T23:59:59.999Z' required: false name: filter[createdBefore] in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListCounterpartyTransfersResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: >- #/components/schemas/CounterpartyTransferQueryValidationErrorResponse x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5BfromCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5BtoCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5Bstatus%5D=Completed&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/', qs: { 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE', 'filter[fromCounterpartyId]': '123e4567-e89b-12d3-a456-426614174000', 'filter[toCounterpartyId]': '123e4567-e89b-12d3-a456-426614174000', 'filter[status]': 'Completed', 'filter[createdAfter]': '2024-01-01T00:00:00.000Z', 'filter[createdBefore]': '2024-12-31T23:59:59.999Z' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/counterparty-transfers/?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5BfromCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5BtoCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5Bstatus%5D=Completed&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5BfromCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5BtoCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5Bstatus%5D=Completed&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5BfromCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5BtoCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5Bstatus%5D=Completed&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5BfromCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5BtoCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5Bstatus%5D=Completed&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5BfromCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5BtoCounterpartyId%5D=123e4567-e89b-12d3-a456-426614174000&filter%5Bstatus%5D=Completed&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE', 'filter[fromCounterpartyId]' => '123e4567-e89b-12d3-a456-426614174000', 'filter[toCounterpartyId]' => '123e4567-e89b-12d3-a456-426614174000', 'filter[status]' => 'Completed', 'filter[createdAfter]' => '2024-01-01T00:00:00.000Z', 'filter[createdBefore]' => '2024-12-31T23:59:59.999Z' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/counterparty-transfers/:counterpartyTransferId: get: operationId: getCounterpartyTransfer tags: - CounterpartyTransfers summary: Get Counterparty Transfer description: Get a specific counterparty transfer by ID. parameters: - schema: type: string format: uuid description: ID of the counterparty transfer to fetch. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyTransferId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetCounterpartyTransferResponse' '404': description: >- Not Found — no counterparty transfer with this id exists in the authenticated partner scope. content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyTransferNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/:counterpartyTransferId \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/:counterpartyTransferId', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/counterparty-transfers/:counterpartyTransferId", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/:counterpartyTransferId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/:counterpartyTransferId") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/:counterpartyTransferId\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/:counterpartyTransferId"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/counterparty-transfers/:counterpartyTransferId'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userId/linked-accounts: get: operationId: getLinkedAccounts tags: - LinkedAccounts summary: Get Linked Accounts for User description: >- Retrieves all linked bank accounts for a specific user. These accounts can be used for funding payments by providing the linkedAccountId when creating a payment. parameters: - schema: type: string format: uuid description: The ID of the user whose linked accounts to retrieve. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: userId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetLinkedAccountsResponse' '400': description: Bad Request. The user has no wallet with your account. content: application/vnd.api+json: schema: $ref: '#/components/schemas/LinkedAccountInvalidUserResponse' '404': description: Not Found. The user does not exist. content: application/vnd.api+json: schema: $ref: '#/components/schemas/LinkedAccountUserNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedLinkedAccountErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/users/:userId/linked-accounts", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/users/:userId/linked-accounts/:linkedAccountId: delete: operationId: deleteLinkedAccount tags: - LinkedAccounts summary: Remove a Linked Account description: >- Removes a linked bank account for one of your users. This has the same effect as the user removing it themselves: any scheduled funding or round-ups using the account are stopped, and the account is deactivated with the bank linking provider. This cannot be undone — the user must link and verify the account again. The request is idempotent: removing an account that is already gone also returns 204, so it is safe to retry after a timeout. parameters: - schema: type: string format: uuid description: The ID of the user who owns the linked account. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: userId in: path - schema: type: string format: uuid description: The ID of the linked account to remove. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: linkedAccountId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '204': description: >- No Content. Also returned when the linked account was already removed. '400': description: Bad Request. The user has no wallet with your account. content: application/vnd.api+json: schema: $ref: '#/components/schemas/LinkedAccountInvalidUserResponse' '403': description: The linked account does not belong to the specified user. '404': description: Not Found. The user does not exist. content: application/vnd.api+json: schema: $ref: '#/components/schemas/LinkedAccountUserNotFoundResponse' '409': description: >- The account cannot be removed right now: either a payment funded by it is still in flight, or the account may also be in use outside your integration. Complete or cancel the payment, or ask the user to remove the account from their Accrue account. x-codeSamples: - lang: Shell source: |- curl --request DELETE \ --url https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts/:linkedAccountId \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'DELETE', url: 'https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts/:linkedAccountId', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("DELETE", "/api/v1/users/:userId/linked-accounts/:linkedAccountId", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts/:linkedAccountId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Delete.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts/:linkedAccountId") .delete(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts/:linkedAccountId\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts/:linkedAccountId"); var request = new RestRequest(Method.DELETE); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/users/:userId/linked-accounts/:linkedAccountId'); $request->setMethod(HTTP_METH_DELETE); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/external-transactions: post: operationId: addExternalTransactions tags: - ExternalTransactions summary: Add External Transactions parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/CreateExternalTransaction' required: - data responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/AddExternalTransactionResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: >- #/components/schemas/ExternalTransactionValidationErrorResponse '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: >- #/components/schemas/UnexpectedExternalTransactionErrorResponse x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/external-transactions \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/external-transactions', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/external-transactions", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/external-transactions") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/external-transactions") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/external-transactions\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/external-transactions"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/external-transactions'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } get: operationId: listExternalTransactions tags: - ExternalTransactions summary: List External Transactions parameters: - schema: type: string description: Filter the list of objects by the value of the phoneNumber field. required: false name: filter[phoneNumber] in: query - schema: type: string description: Filter the list of objects by the value of the userId field. required: false name: filter[userId] in: query - schema: type: string description: Filter the list of objects by the value of the sourceId field. required: false name: filter[sourceId] in: query - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListExternalTransactionsResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: >- #/components/schemas/ExternalTransactionValidationErrorResponse '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: >- #/components/schemas/UnexpectedExternalTransactionErrorResponse x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/external-transactions?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5BuserId%5D=SOME_STRING_VALUE&filter%5BsourceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/external-transactions', qs: { 'filter[phoneNumber]': 'SOME_STRING_VALUE', 'filter[userId]': 'SOME_STRING_VALUE', 'filter[sourceId]': 'SOME_STRING_VALUE', 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/external-transactions?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5BuserId%5D=SOME_STRING_VALUE&filter%5BsourceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/external-transactions?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5BuserId%5D=SOME_STRING_VALUE&filter%5BsourceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/external-transactions?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5BuserId%5D=SOME_STRING_VALUE&filter%5BsourceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/external-transactions?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5BuserId%5D=SOME_STRING_VALUE&filter%5BsourceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/external-transactions?filter%5BphoneNumber%5D=SOME_STRING_VALUE&filter%5BuserId%5D=SOME_STRING_VALUE&filter%5BsourceId%5D=SOME_STRING_VALUE&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/external-transactions'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'filter[phoneNumber]' => 'SOME_STRING_VALUE', 'filter[userId]' => 'SOME_STRING_VALUE', 'filter[sourceId]' => 'SOME_STRING_VALUE', 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/external-transactions/{externalTransactionId}: get: operationId: getExternalTransaction tags: - ExternalTransactions summary: Get an External Transaction parameters: - schema: type: string format: uuid description: External Transaction ID required: true name: externalTransactionId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetExternalTransaction' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/ExternalTransactionNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: >- #/components/schemas/UnexpectedExternalTransactionErrorResponse x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/external-transactions/%7BexternalTransactionId%7D \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/external-transactions/%7BexternalTransactionId%7D', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/external-transactions/%7BexternalTransactionId%7D", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/external-transactions/%7BexternalTransactionId%7D") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/external-transactions/%7BexternalTransactionId%7D") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/external-transactions/%7BexternalTransactionId%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/external-transactions/%7BexternalTransactionId%7D"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/external-transactions/%7BexternalTransactionId%7D'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/webhooks: post: operationId: createWebhook tags: - Webhooks summary: Create a webhook parameters: - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: $ref: '#/components/schemas/CreateWebhook' required: - data responses: '201': description: 201 Created content: application/vnd.api+json: schema: $ref: '#/components/schemas/WebhookResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/WebhookErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request POST \ --url https://merchant-api.accruesavings.com/api/v1/webhooks \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'POST', url: 'https://merchant-api.accruesavings.com/api/v1/webhooks', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: |- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("POST", "/api/v1/webhooks", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/webhooks") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/webhooks") .post(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/webhooks\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/webhooks"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/webhooks'); $request->setMethod(HTTP_METH_POST); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } get: operationId: getWebhooks tags: - Webhooks summary: Get webhooks parameters: - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: 200 OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/WebhooksResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/WebhookValidationErrorResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/webhooks?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/webhooks', qs: {'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE'}, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/webhooks?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/webhooks?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/webhooks?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/webhooks?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/webhooks?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/webhooks'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/webhooks/{webhookId}: get: operationId: getWebhook tags: - Webhooks summary: Get a webhook parameters: - schema: type: string format: uuid description: Webhook id example: 123e4567-e89b-12d3-a456-426614174000 required: true name: webhookId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWebhookResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/WebhookNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/webhooks/123e4567-e89b-12d3-a456-426614174000 \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/webhooks/123e4567-e89b-12d3-a456-426614174000', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/webhooks/123e4567-e89b-12d3-a456-426614174000", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/webhooks/123e4567-e89b-12d3-a456-426614174000") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/webhooks/123e4567-e89b-12d3-a456-426614174000") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/webhooks/123e4567-e89b-12d3-a456-426614174000\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/webhooks/123e4567-e89b-12d3-a456-426614174000"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/webhooks/123e4567-e89b-12d3-a456-426614174000'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } patch: operationId: updateWebhook tags: - Webhooks summary: Update a webhook parameters: - schema: type: string format: uuid description: Webhook id required: true name: webhookId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: allOf: - $ref: '#/components/schemas/UpdateWebhook' - type: object properties: id: type: string format: uuid description: Webhook id required: - id description: Update webhook request x-tags: - Model required: - data responses: '200': description: 200 OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/WebhookResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/WebhookErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/WebhookNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request PATCH \ --url https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'PATCH', url: 'https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("PATCH", "/api/v1/webhooks/%7BwebhookId%7D", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Patch.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D") .patch(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D\"\n\n\treq, _ := http.NewRequest(\"PATCH\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D"); var request = new RestRequest(Method.PATCH); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D'); $request->setMethod(HttpRequest::HTTP_METH_PATCH); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } delete: operationId: deleteWebhook tags: - Webhooks summary: Delete a webhook parameters: - schema: type: string format: uuid description: Webhook id required: true name: webhookId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '204': description: 204 No Content '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/WebhookNotFoundResponse' x-codeSamples: - lang: Shell source: |- curl --request DELETE \ --url https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'DELETE', url: 'https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("DELETE", "/api/v1/webhooks/%7BwebhookId%7D", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Delete.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D") .delete(null) .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D"); var request = new RestRequest(Method.DELETE); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/webhooks/%7BwebhookId%7D'); $request->setMethod(HTTP_METH_DELETE); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/webhook-events: get: operationId: listWebhookEvents tags: - WebhookEvents summary: List Webhook Events parameters: - schema: type: string description: Filter webhook events at or after the provided date example: '2021-01-01T00:00:00Z' required: false name: filter[since] in: query - schema: type: string description: Filter webhook events at or before the provided date example: '2021-01-01T00:00:00Z' required: false name: filter[until] in: query - schema: type: number minimum: 1 maximum: 50 default: 10 description: >- Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: >- Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListWebhookEventsResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/WebhookEventQueryValidationErrorResponse' '500': description: Internal Server Error x-codeSamples: - lang: Shell source: |- curl --request GET \ --url 'https://merchant-api.accruesavings.com/api/v1/webhook-events?filter%5Bsince%5D=2021-01-01T00%3A00%3A00Z&filter%5Buntil%5D=2021-01-01T00%3A00%3A00Z&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE' \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/webhook-events', qs: { 'filter[since]': '2021-01-01T00:00:00Z', 'filter[until]': '2021-01-01T00:00:00Z', 'page[limit]': 'SOME_NUMBER_VALUE', 'page[offset]': 'SOME_NUMBER_VALUE' }, headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/webhook-events?filter%5Bsince%5D=2021-01-01T00%3A00%3A00Z&filter%5Buntil%5D=2021-01-01T00%3A00%3A00Z&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/webhook-events?filter%5Bsince%5D=2021-01-01T00%3A00%3A00Z&filter%5Buntil%5D=2021-01-01T00%3A00%3A00Z&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/webhook-events?filter%5Bsince%5D=2021-01-01T00%3A00%3A00Z&filter%5Buntil%5D=2021-01-01T00%3A00%3A00Z&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/webhook-events?filter%5Bsince%5D=2021-01-01T00%3A00%3A00Z&filter%5Buntil%5D=2021-01-01T00%3A00%3A00Z&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/webhook-events?filter%5Bsince%5D=2021-01-01T00%3A00%3A00Z&filter%5Buntil%5D=2021-01-01T00%3A00%3A00Z&page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/webhook-events'); $request->setMethod(HTTP_METH_GET); $request->setQueryData([ 'filter[since]' => '2021-01-01T00:00:00Z', 'filter[until]' => '2021-01-01T00:00:00Z', 'page[limit]' => 'SOME_NUMBER_VALUE', 'page[offset]' => 'SOME_NUMBER_VALUE' ]); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } /api/v1/webhook-events/{webhookEventId}: get: operationId: getWebhookEvent tags: - WebhookEvents summary: Get a webhook event parameters: - schema: type: string format: uuid description: WebhookEvent id example: 123e4567-e89b-12d3-a456-426614174000 required: true name: webhookEventId in: path - schema: type: string format: uuid description: >- The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: >- Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetWebhookEventResponse' '404': description: Not Found '500': description: Internal Server Error x-codeSamples: - lang: Shell source: |- curl --request GET \ --url https://merchant-api.accruesavings.com/api/v1/webhook-events/123e4567-e89b-12d3-a456-426614174000 \ --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \ --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000' - lang: Node source: | const request = require('request'); const options = { method: 'GET', url: 'https://merchant-api.accruesavings.com/api/v1/webhook-events/123e4567-e89b-12d3-a456-426614174000', headers: { 'Client-ID': '123e4567-e89b-12d3-a456-426614174000', Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); - lang: Python source: >- import http.client conn = http.client.HTTPSConnection("merchant-api.accruesavings.com") headers = { 'Client-ID': "123e4567-e89b-12d3-a456-426614174000", 'Authorization': "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef" } conn.request("GET", "/api/v1/webhook-events/123e4567-e89b-12d3-a456-426614174000", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) - lang: Ruby source: >- require 'uri' require 'net/http' require 'openssl' url = URI("https://merchant-api.accruesavings.com/api/v1/webhook-events/123e4567-e89b-12d3-a456-426614174000") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = '123e4567-e89b-12d3-a456-426614174000' request["Authorization"] = 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' response = http.request(request) puts response.read_body - lang: Java source: |- OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://merchant-api.accruesavings.com/api/v1/webhook-events/123e4567-e89b-12d3-a456-426614174000") .get() .addHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000") .addHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef") .build(); Response response = client.newCall(request).execute(); - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/webhook-events/123e4567-e89b-12d3-a456-426614174000\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: >- var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/webhook-events/123e4567-e89b-12d3-a456-426614174000"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request); - lang: Php source: >- setUrl('https://merchant-api.accruesavings.com/api/v1/webhook-events/123e4567-e89b-12d3-a456-426614174000'); $request->setMethod(HTTP_METH_GET); $request->setHeaders([ 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000', 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' ]); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; } webhooks: paymentIntentCreated: post: operationId: paymentIntentCreated tags: - Webhook Topics summary: PaymentIntentCreated requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - PaymentIntent attributes: type: object properties: balance: allOf: - $ref: >- #/components/schemas/PaymentIntentBalanceInformation - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: >- Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: >- Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully paymentIntentUpdated: post: operationId: paymentIntentUpdated tags: - Webhook Topics summary: PaymentIntentUpdated requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - PaymentIntent attributes: type: object properties: balance: allOf: - $ref: >- #/components/schemas/PaymentIntentBalanceInformation - description: Optional wallet balance information billingAddress: type: - object - 'null' properties: street: type: - string - 'null' street2: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' postalCode: type: - string - 'null' country: type: - string - 'null' required: - street - street2 - city - state - postalCode - country email: type: - string - 'null' format: email error: type: - string - 'null' enum: - LinkedAccountUnverified - LinkedAccountDisconnected - LinkedAccountMissing - InsufficientBalance - MissingFullName - WrongEmail - InvalidKycStatus description: >- Specific error associated with the current invalid status. expiresAt: type: - string - 'null' format: date-time description: >- The datetime at which the payment intent is set to expire. After this time, the intent cannot be promoted to a payment and is considered expired. readOnly: true fullName: type: - string - 'null' phoneNumber: type: - string - 'null' amount: type: integer description: Total purchase amount in cents. format: int32 example: 3600 reference: type: - string - 'null' description: >- Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN status: type: string enum: - Promotable - PromotedToPayment - Invalid - Expired - Canceled description: >- The current status of the payment intent. Each status represents a different stage in the payment intent lifecycle, from creation to completion or cancellation. userId: type: - string - 'null' walletId: type: - string - 'null' description: >- The ID of the wallet for which the payment intent is created. example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully paymentCreated: post: operationId: paymentCreated tags: - Webhook Topics summary: PaymentCreated requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Payment attributes: type: object properties: id: type: string format: uuid example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 status: type: string enum: - Canceled - Created - Failed - Processing - Returned - Sent description: >- The current status of the payment. Each status indicates a specific phase in the payment process, such as waiting for authorization, being processed, or having been successfully completed or canceled. example: Sent amount: type: integer description: >- The total amount of the payment processed, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. This amount may differ from the initially intended amount due to adjustments, fees, or additional charges. format: int32 example: 9999 channel: type: - string - 'null' description: >- External system identifier used to identify the payment channel. E.g. App Name, Activity ID, Checkout Interface, etc. example: ORG-1 reference: type: - string - 'null' description: >- Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 fee: type: integer description: >- The fee assigned to this particular disbursement based on the whole payment fee, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 deprecated: true example: 10 remit: type: boolean description: >- Deprecated. Always returns `true`. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount - fee - remit description: >- Array of disbursements associated with this payment, including counterparty IDs, amounts, and fees. example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 800 fee: 10 remit: true - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 200 fee: 5 remit: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier example: pay_by_wallet required: - amount - type description: Processing fee details rewards: type: integer minimum: 0 description: >- Rewards amount spent from wallet balance, in cents format: int32 example: 1000 description: Charges applied to this payment. deductions: type: object properties: rewards: type: integer minimum: 0 description: >- Rewards amount spent from wallet balance, in cents format: int32 example: 1000 fees: type: integer minimum: 0 description: Processing fees charged, in cents format: int32 example: 150 required: - rewards - fees description: >- Legacy charges breakdown. Use `charges` instead. deprecated: true expiresAt: type: string format: date-time description: >- The field indicates the date and time until which the payment is valid. After this date, the payment will either be automatically cancelled or completed. readOnly: true updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt links: type: object properties: virtualDebitCard: type: string example: >- https://secure-api.accruesavings.com/api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/card required: - virtualDebitCard required: - id - type - attributes - links required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully paymentUpdated: post: operationId: paymentUpdated tags: - Webhook Topics summary: PaymentUpdated requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Payment attributes: type: object properties: id: type: string format: uuid example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 status: type: string enum: - Canceled - Created - Failed - Processing - Returned - Sent description: >- The current status of the payment. Each status indicates a specific phase in the payment process, such as waiting for authorization, being processed, or having been successfully completed or canceled. example: Sent amount: type: integer description: >- The total amount of the payment processed, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. This amount may differ from the initially intended amount due to adjustments, fees, or additional charges. format: int32 example: 9999 channel: type: - string - 'null' description: >- External system identifier used to identify the payment channel. E.g. App Name, Activity ID, Checkout Interface, etc. example: ORG-1 reference: type: - string - 'null' description: >- Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN disbursement: type: array items: type: object properties: counterpartyId: type: string format: uuid description: >- The ID of the counterparty to whom the funds are being disbursed. example: 497f6eca-6276-4993-bfeb-53cbbbba6f08 amount: type: integer description: >- The total amount charged with a particular payment method, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 1337 fee: type: integer description: >- The fee assigned to this particular disbursement based on the whole payment fee, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 deprecated: true example: 10 remit: type: boolean description: >- Deprecated. Always returns `true`. All disbursements are remitted directly. Will be removed in a future version. example: true deprecated: true required: - counterpartyId - amount - fee - remit description: >- Array of disbursements associated with this payment, including counterparty IDs, amounts, and fees. example: - counterpartyId: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 amount: 800 fee: 10 remit: true - counterpartyId: 4cf95060-dd01-42ac-9020-8ca42004920d amount: 200 fee: 5 remit: true charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 150 type: type: string description: Fee type identifier example: pay_by_wallet required: - amount - type description: Processing fee details rewards: type: integer minimum: 0 description: >- Rewards amount spent from wallet balance, in cents format: int32 example: 1000 description: Charges applied to this payment. deductions: type: object properties: rewards: type: integer minimum: 0 description: >- Rewards amount spent from wallet balance, in cents format: int32 example: 1000 fees: type: integer minimum: 0 description: Processing fees charged, in cents format: int32 example: 150 required: - rewards - fees description: >- Legacy charges breakdown. Use `charges` instead. deprecated: true expiresAt: type: string format: date-time description: >- The field indicates the date and time until which the payment is valid. After this date, the payment will either be automatically cancelled or completed. readOnly: true updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt links: type: object properties: virtualDebitCard: type: string example: >- https://secure-api.accruesavings.com/api/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/card required: - virtualDebitCard required: - id - type - attributes - links required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully paymentCaptured: post: operationId: paymentCaptured tags: - Webhook Topics summary: PaymentCaptured requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Capture attributes: type: object properties: id: type: string format: uuid description: Capture ID example: 123e4567-e89b-12d3-a456-426614174000 amount: type: integer description: >- The total amount of the payment captured, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 9999 success: type: boolean description: Indicates whether the capture was successful. example: true method: type: string enum: - BankRails - VirtualDebitCard description: >- The payment method used to capture the payment. example: VirtualDebitCard reference: type: - string - 'null' description: >- Reference to the data inside an external system. example: MERCHANT-GENERATED-TOKEN updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - id - amount - success - method - updatedAt - createdAt required: - id - type - attributes required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully refundCreated: post: operationId: refundCreated tags: - Webhook Topics summary: RefundCreated requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Refund attributes: type: object properties: status: type: string enum: - Failed - Pending - Sent - Waiting description: The current status of the refund. amount: type: integer description: >- The amount refunded, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 9999 message: type: string description: >- A human-readable message describing the refund status or outcome. example: 'Refund processed. Fee: 59 cents' reference: type: - string - 'null' description: >- Reference inherited from the parent Payment. This is not a direct field on the Refund entity. example: MERCHANT-GENERATED-TOKEN charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 59 type: type: string description: >- Fee type identifier. For refunds, this is `pay_by_wallet_refund`. example: pay_by_wallet_refund required: - amount - type description: Processing fee details for this refund rewards: type: integer minimum: 0 description: >- Rewards amount. Always 0 for refunds (rewards are not applicable to refunds). format: int32 example: 0 description: Charges applied to this refund. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount. Always 0 for refunds. format: int32 example: 0 fees: type: integer minimum: 0 description: >- Processing fees charged for this refund, in cents. Same value as `charges.fee.amount`. format: int32 example: 59 required: - rewards - fees description: >- Legacy charges breakdown. Use `charges` instead. deprecated: true id: type: string format: uuid example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully refundUpdated: post: operationId: refundUpdated tags: - Webhook Topics summary: RefundUpdated requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Refund attributes: type: object properties: status: type: string enum: - Failed - Pending - Sent - Waiting description: The current status of the refund. amount: type: integer description: >- The amount refunded, represented in the smallest currency unit (e.g., cents for USD). To obtain the value in dollars, divide by 100. format: int32 example: 9999 message: type: string description: >- A human-readable message describing the refund status or outcome. example: 'Refund processed. Fee: 59 cents' reference: type: - string - 'null' description: >- Reference inherited from the parent Payment. This is not a direct field on the Refund entity. example: MERCHANT-GENERATED-TOKEN charges: type: object properties: fee: type: object properties: amount: type: integer minimum: 0 description: Fee amount in cents format: int32 example: 59 type: type: string description: >- Fee type identifier. For refunds, this is `pay_by_wallet_refund`. example: pay_by_wallet_refund required: - amount - type description: Processing fee details for this refund rewards: type: integer minimum: 0 description: >- Rewards amount. Always 0 for refunds (rewards are not applicable to refunds). format: int32 example: 0 description: Charges applied to this refund. deductions: type: object properties: rewards: type: integer minimum: 0 description: Rewards amount. Always 0 for refunds. format: int32 example: 0 fees: type: integer minimum: 0 description: >- Processing fees charged for this refund, in cents. Same value as `charges.fee.amount`. format: int32 example: 59 required: - rewards - fees description: >- Legacy charges breakdown. Use `charges` instead. deprecated: true id: type: string format: uuid example: 9f755746-13cb-4d0b-81f2-3b4f1b44f6d8 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - updatedAt - createdAt required: - id - type - attributes required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully kycCreated: post: operationId: kycCreated tags: - Webhook Topics summary: KycCreated description: >- Fired when a KYC application is created for a user. This event is triggered when a user initiates the identity verification process. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: allOf: - $ref: '#/components/schemas/Kyc' - properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Kyc attributes: type: object properties: status: type: string enum: - Approved - AwaitingDocuments - Denied - ManualReview - NotStarted - Pending - Unknown description: The current KYC verification status example: Approved required: - status required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully kycApproved: post: operationId: kycApproved tags: - Webhook Topics summary: KycApproved description: >- Fired when a KYC application is approved. This event indicates that the user has successfully passed identity verification and can access banking features. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: allOf: - $ref: '#/components/schemas/Kyc' - properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Kyc attributes: type: object properties: status: type: string enum: - Approved - AwaitingDocuments - Denied - ManualReview - NotStarted - Pending - Unknown description: The current KYC verification status example: Approved required: - status required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully kycDeclined: post: operationId: kycDeclined tags: - Webhook Topics summary: KycDeclined description: >- Fired when a KYC application is declined. This event indicates that the user did not pass identity verification and cannot access banking features. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: allOf: - $ref: '#/components/schemas/Kyc' - properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Kyc attributes: type: object properties: status: type: string enum: - Approved - AwaitingDocuments - Denied - ManualReview - NotStarted - Pending - Unknown description: The current KYC verification status example: Approved required: - status required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully kycAwaitingDocuments: post: operationId: kycAwaitingDocuments tags: - Webhook Topics summary: KycAwaitingDocuments description: >- Fired when a KYC application requires additional document verification. This event indicates that the user needs to upload identity documents (such as a driver's license or passport) to complete verification. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: allOf: - $ref: '#/components/schemas/Kyc' - properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Kyc attributes: type: object properties: status: type: string enum: - Approved - AwaitingDocuments - Denied - ManualReview - NotStarted - Pending - Unknown description: The current KYC verification status example: Approved required: - status required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully kycPending: post: operationId: kycPending tags: - Webhook Topics summary: KycPending description: >- Fired when a KYC application is pending review. This event indicates that the application is being processed through automated verification checks. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: allOf: - $ref: '#/components/schemas/Kyc' - properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Kyc attributes: type: object properties: status: type: string enum: - Approved - AwaitingDocuments - Denied - ManualReview - NotStarted - Pending - Unknown description: The current KYC verification status example: Approved required: - status required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully kycManualReview: post: operationId: kycManualReview tags: - Webhook Topics summary: KycManualReview description: >- Fired when a KYC application requires manual review. This event indicates that automated verification could not make a determination and the application needs human review. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: allOf: - $ref: '#/components/schemas/Kyc' - properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Kyc attributes: type: object properties: status: type: string enum: - Approved - AwaitingDocuments - Denied - ManualReview - NotStarted - Pending - Unknown description: The current KYC verification status example: Approved required: - status required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully transactionCleared: post: operationId: transactionCleared tags: - Webhook Topics summary: Transaction Cleared description: >- Fired when a transaction is cleared. This event indicates that the transaction has been successfully processed and funds are available. The included payload contains event data with a **fee** object (fee type and amount in cents). requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: $ref: '#/components/schemas/WebhookTransactionCleared' required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully transactionFailed: post: operationId: transactionFailed tags: - Webhook Topics summary: Transaction Failed description: >- Fired when a transaction fails. This event indicates that the transaction could not be processed successfully. The included payload contains event data with a **fee** object (fee type and amount in cents) and **failureReason** (TransactionFailureReason: e.g. Canceled, HardDecline, SoftDecline, Expired, InsufficientFunds, Reversed, Unknown). requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: $ref: '#/components/schemas/WebhookTransactionFailed' required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully counterpartyIncomingPayment: post: operationId: counterpartyIncomingPayment tags: - Webhook Topics summary: CounterpartyIncomingPayment description: >- Fired when a payment arrives on a counterparty's bank account and has been recorded on the counterparty's balance. Use this to reconcile funding you receive from a counterparty over bank rails without polling the counterparty balance. The included payload carries **counterpartyId**, **amount** (in cents), **currency**, **direction** (`credit` for funds received, `debit` for funds withdrawn), **method** (the bank rail, for example `ach` or `wire`), **asOfDate** (the bank settlement date), and **externalIncomingPaymentId** for reconciliation against your bank records. This event is only sent after the payment has been recorded, so the counterparty balance already reflects it when you receive the webhook. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: $ref: >- #/components/schemas/WebhookCounterpartyIncomingPayment required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully counterpartyPayoutCreated: post: operationId: counterpartyPayoutCreated tags: - Webhook Topics summary: CounterpartyPayoutCreated description: >- Fired when a payout is created for a counterparty and submitted for processing. `status` is the payout's initial state, which may be `Approved`, `NeedsApproval`, or `Processing` depending on your approval configuration. A duplicate create — the same idempotency key replayed — returns the existing payout and does **not** fire a second event. The included payload mirrors the payout resource — **payoutId**, **counterpartyId**, **amount** (in cents), **currency**, **status**, **description**, and **effectiveDate** — so you can act on the event without re-reading the payouts API. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: $ref: '#/components/schemas/WebhookCounterpartyPayout' required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully counterpartyPayoutSent: post: operationId: counterpartyPayoutSent tags: - Webhook Topics summary: CounterpartyPayoutSent description: >- Fired when the payout has been sent to the bank. The funds have left, but the payment is not yet reconciled — a payout can sit in this state for a few days depending on the rail, and can still be returned afterwards. Wait for `CounterpartyPayoutCompleted` before treating the money as delivered. The included payload mirrors the payout resource — **payoutId**, **counterpartyId**, **amount** (in cents), **currency**, **status**, **description**, and **effectiveDate** — so you can act on the event without re-reading the payouts API. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: $ref: '#/components/schemas/WebhookCounterpartyPayout' required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully counterpartyPayoutCompleted: post: operationId: counterpartyPayoutCompleted tags: - Webhook Topics summary: CounterpartyPayoutCompleted description: >- Fired when the payout has been reconciled to a posted bank transaction. This is the terminal success state: the funds have settled at the receiving bank. The included payload mirrors the payout resource — **payoutId**, **counterpartyId**, **amount** (in cents), **currency**, **status**, **description**, and **effectiveDate** — so you can act on the event without re-reading the payouts API. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: $ref: '#/components/schemas/WebhookCounterpartyPayout' required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully counterpartyPayoutReturned: post: operationId: counterpartyPayoutReturned tags: - Webhook Topics summary: CounterpartyPayoutReturned description: >- Fired when a payout ends without delivering funds. This covers every terminal failure — returned, reversed, cancelled, denied, and failed — so read **status** to see which occurred rather than relying on the topic name. **returnCode** and **returnReason** are populated when the receiving bank returned the payment (for example `R01`, insufficient funds) and are null for the other failures. The payout amount is available on the counterparty balance again. The included payload mirrors the payout resource — **payoutId**, **counterpartyId**, **amount** (in cents), **currency**, **status**, **description**, and **effectiveDate** — so you can act on the event without re-reading the payouts API. requestBody: required: true content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/WebhookEvent' - type: object properties: included: type: array items: $ref: '#/components/schemas/WebhookCounterpartyPayoutReturned' required: - included description: '' x-tags: Model responses: '200': description: >- Return a 200 status to indicate that the data was received successfully