# Forage Documentation > Discover Forage’s API Documentation Hub, featuring detailed guides and references to integrate EBT and SNAP payment solutions seamlessly. Build better with Forage today! ## Guides: HOW FORAGE WORKS - [EBT Payments 101](https://docs.joinforage.app/docs/ebt-payments.md): The key industry players and payment methods in the EBT ecosystem. - [How Forage Works](https://docs.joinforage.app/docs/how-forage-works.md): The six-phase Forage partnership process, from FNS authorization to launch and growth. - [Integration Options](https://docs.joinforage.app/docs/integration-options.md): A decision guide for choosing between Fully Hosted Checkout, Custom Checkout, online-only SDKs, and the POS Terminal SDK. - [EBT Standards and Integration Reference](https://docs.joinforage.app/docs/ebt-integration-reference.md): Merchant prerequisites, item eligibility tagging, FNS-compliant terminology, SDK versions, and a feature comparison. - [Developer Resources](https://docs.joinforage.app/docs/developer-resources.md): Connect your AI coding assistant to Forage docs before you build. - [Forage MCP Server Tool Reference](https://docs.joinforage.app/docs/mcp-tools-reference.md): What each tool in the Forage docs MCP server returns, and where its coverage stops. - [Set up a Forage integration](https://docs.joinforage.app/docs/setup.md): Everything you need to create an account, register an app, and authenticate with the Forage API. - [Understanding Forage Authentication](https://docs.joinforage.app/docs/authentication-concepts.md): Learn how Forage bearer tokens work and when to use each type. - [Sign up for Forage](https://docs.joinforage.app/docs/sign-up-for-forage.md): Create an account and update Forage Checkout settings. - [Register an App](https://docs.joinforage.app/docs/register-an-app.md): Learn how to register an app with Forage and access API credentials. - [Authenticate with Forage](https://docs.joinforage.app/docs/authentication.md): Generate authentication and session tokens for Forage API requests. - [Authentication Token Reference](https://docs.joinforage.app/docs/authentication-reference.md): Endpoints and SDK methods that require Forage bearer tokens. - [Webhooks Overview](https://docs.joinforage.app/docs/configure-webhooks.md): Configure real-time updates about orders, payments, and refunds with Forage webhooks. - [How Forage Webhooks Work](https://docs.joinforage.app/docs/webhooks-concepts.md): Understand what webhooks are, when events fire, and how Forage delivers them - [How to Configure Webhooks](https://docs.joinforage.app/docs/webhooks-configure.md): Set up a webhook endpoint, register it in the Forage dashboard, and verify signatures - [Reference: Webhook Events](https://docs.joinforage.app/docs/webhooks-event-reference.md): Complete specifications for all Forage webhook events, payload schemas, and IP addresses ## Guides: Fully Hosted Checkout - [Introduction](https://docs.joinforage.app/docs/fully-hosted.md) - [Quickstart](https://docs.joinforage.app/docs/fully-hosted-quickstart.md) - [Reuse Payment Methods](https://docs.joinforage.app/docs/fully-hosted-reuse-payment-methods.md): Allow your customers to reuse their saved payment methods in Fully Hosted Checkout. - [Errors](https://docs.joinforage.app/docs/fully-hosted-errors.md): Error documentation for Fully Hosted integrations ## Guides: Hosted Checkout - [Introduction](https://docs.joinforage.app/docs/hosted.md) - [Quickstart](https://docs.joinforage.app/docs/hosted-quickstart.md): Use the prebuilt Forage Hosted UI to collect a customer's EBT Card PIN and process EBT payments in your website and app. - [Reuse Payment Methods](https://docs.joinforage.app/docs/hosted-reuse-payment-methods.md): Allow your customers to reuse their saved payment methods in Hosted Checkout. - [Errors](https://docs.joinforage.app/docs/hosted-errors.md): Error documentation for Hosted integrations ## Guides: Custom Checkout - [Introduction](https://docs.joinforage.app/docs/custom.md) - [Quickstart](https://docs.joinforage.app/docs/custom-quickstart.md): Use the prebuilt Forage Custom UI to collect a customer's EBT Card PIN and process EBT payments in your website and app. - [Reuse Payment Methods](https://docs.joinforage.app/docs/custom-reuse-payment-methods.md): Allow your customers to reuse their saved payment methods in Custom Checkout. - [Errors](https://docs.joinforage.app/docs/custom-errors.md): Error documentation for Custom integrations ## Guides: Online SDKs - JavaScript - [Introduction](https://docs.joinforage.app/docs/forage-js.md): Add EBT payments to your web application - [Quickstart](https://docs.joinforage.app/docs/forage-js-quickstart.md): Learn about the Forage JS methods and Payments API endpoints that you need to interact with to accept EBT SNAP online. - iOS - [Introduction](https://docs.joinforage.app/docs/ios.md): Add EBT payments to your iOS app - [Quickstart](https://docs.joinforage.app/docs/ios-quickstart.md): Use the Forage iOS SDK to accept EBT SNAP payments in your iOS app. - [Style iOS Elements](https://docs.joinforage.app/docs/forage-ios-styling-guide.md): Learn how to style Forage Elements when building with the iOS SDK - Android - [Introduction](https://docs.joinforage.app/docs/android.md): Accept EBT payments in your Android mobile app - [Quickstart](https://docs.joinforage.app/docs/forage-android-quickstart.md): Use the Forage Android SDK to accept online-only EBT SNAP payments in your mobile app. - [Style Android Elements](https://docs.joinforage.app/docs/forage-android-styling-guide.md): Learn how to style Forage Elements when building with the Android SDK - [Errors](https://docs.joinforage.app/docs/sdk-errors.md): Error documentation for SDK integration-related endpoints ## Guides: POS Terminal SDK - [Introduction](https://docs.joinforage.app/docs/pos-terminal-sdk.md): Accept in-store EBT SNAP payments - [Quickstart](https://docs.joinforage.app/docs/forage-terminal-android.md): Use the Forage Terminal SDK to accept EBT SNAP and other payment methods via a POS system. ## Guides: HSA-FSA - [Enable HSA/FSA Payments](https://docs.joinforage.app/docs/enable-hsa-fsa-payments.md): Learn how to enable HSA/FSA payments effortlessly using your existing Forage EBT integration. - [iOS HSA/FSA Quickstart](https://docs.joinforage.app/docs/ios-hsa-fsa-quickstart.md): Use the Forage iOS SDK to accept HSA/FSA payments in your iOS app. - [JS HSA/FSA Quickstart](https://docs.joinforage.app/docs/js-hsa-fsa-quickstart.md): Use the Forage JavaScript SDK to accept HSA/FSA payments online. ## Guides: IMPLEMENTATION GUIDES - [Classify Your Product Catalog](https://docs.joinforage.app/docs/catalog-assistant.md): Automatically identify HSA/FSA-eligible products using Forage's Catalog Assistant - [Defer EBT Payment Capture and Refund Completion to the Server](https://docs.joinforage.app/docs/capture-ebt-payments-server-side.md): Learn how to use the Forage Payments API and SDKs to defer EBT payment capture and refund completion to the server. - [Process EBT SNAP refunds](https://docs.joinforage.app/docs/ebt-refunds.md): Learn how to process partial refunds for online SNAP and EBT payments, including FNS requirements and developer implementation options. - [Platform Settlement](https://docs.joinforage.app/docs/platform-settlement.md) - [Receipts and Confirmation Screens](https://docs.joinforage.app/docs/receipts.md): Learn about FNS requirements for transaction records and how to extract the data - [Restrict Forms of Tender](https://docs.joinforage.app/docs/supported-benefits.md) - [Taxes](https://docs.joinforage.app/docs/about-taxes.md) - [Test Cards](https://docs.joinforage.app/docs/test-cards.md): Simulate EBT and HSA/FSA transactions in your Forage integration with this complete list of test card numbers for sandbox validation and error handling. - [Navigating the EBT Chip Card Transition with Forage](https://docs.joinforage.app/docs/ebt-chip-card-transition.md): What POS platforms need to know about the EBT chip card transition to stay ready ## Guides: Reporting - [Reporting Guide](https://docs.joinforage.app/docs/reporting.md): Forage delivers daily CSV reports that let merchants and platforms reconcile transactions against payouts. - [Understanding Forage Reporting](https://docs.joinforage.app/docs/reporting-explained.md): Forage provides automated reports in CSV format that help merchants and platforms track transactions and payouts. - [How to Set Up SFTP Reports](https://docs.joinforage.app/docs/reporting-sftp-setup.md): This guide walks you through setting up automated SFTP delivery of Forage CSV reports. - [Reporting CSV Conventions](https://docs.joinforage.app/docs/reporting-csv-conventions.md) - [Merchant (Charging to Merchant) CSV Report](https://docs.joinforage.app/docs/reporting-csv-merchant-fees.md): This report applies to merchants directly responsible for Forage's fees instead of the platform covering them. - [Merchant (Charging to Platform) CSV Report](https://docs.joinforage.app/docs/reporting-csv-platform-fees.md): This report is provided to merchants operating on a platform that absorbs Forage's fees. - [Platform CSV Report](https://docs.joinforage.app/docs/reporting-csv-platform.md): This report is designed exclusively for platforms, not individual merchants. - [Transaction Type and Payment Method Values](https://docs.joinforage.app/docs/reporting-transaction-types.md): Forage has two distinct fields that separate the type of transaction from the payment method used. ## Guides: Support Guides - [EBT Refund Failures on Frozen Cards](https://docs.joinforage.app/docs/ebt-refund-failure.md): Learn how support teams can identify and fix EBT refund failures caused by frozen cards, including resolving the ebt_error_62 error code. ## Reference: Forage Payments API - [Introduction](https://docs.joinforage.app/reference/introduction.md): Get started with the Forage Payments API for accepting EBT SNAP online - [Idempotency](https://docs.joinforage.app/reference/idempotency.md): An idempotency key is a unique string identifier, provided by your app, that Forage can use to recognize retries of the same request. - [Request Limits](https://docs.joinforage.app/reference/request-limits.md): Learn about how Forage rate limits the Payments API - [Errors](https://docs.joinforage.app/reference/errors.md): Reference documentation for Forage Payments API errors - [Versioning](https://docs.joinforage.app/reference/version-history.md): Reference documentation for the Forage Payments API for accepting EBT SNAP online. Read about the different API versions and their features for processing EBT SNAP online. - [Changelog](https://docs.joinforage.app/reference/changelog.md): This page lists all the changes for each supported version of the Forage API. Versions are named by their release date in the YYYY-MM-DD format. ## Reference: Common Endpoints - [Bearer Tokens](https://docs.joinforage.app/reference/bearer-tokens.md): A bearer token is an authentication credential that validates your requests to the Forage API - [Create an authentication token](https://docs.joinforage.app/reference/create-authentication-token.md): > ⚠️ Use Session Tokens In Production > > To keep your app secure, long-lived authentication tokens in production are only for server-side requests. Client-side requests in production must use… - [Revoke an authentication token](https://docs.joinforage.app/reference/revoke-authentication-token.md): > 📘 Authentication Guide > > For comprehensive details about authenticating with the Forage API, refer to the [authentication guide](doc:authentication). A `POST` request to `/o/revoke_token/`… - [Bulk revoke authentication tokens](https://docs.joinforage.app/reference/bulk-revoke-auth-tokens.md): > 📘 Authentication Guide > > For comprehensive details about authenticating with the Forage API, refer to the [authentication guide](doc:authentication). A `POST` request to `/o/bulk_revoke/`… - [Create a session token](https://docs.joinforage.app/reference/create-session-token.md): > 📘 Authentication Guide > > For comprehensive details about authenticating with the Forage API, refer to the [authentication guide](doc:authentication). > 📘 Session Token Length > > Session tokens… - [Payment Methods](https://docs.joinforage.app/reference/payment-methods.md): The Forage `PaymentMethod` object represents a customer's payment instrument. - [Create a PaymentMethod](https://docs.joinforage.app/reference/create-payment-method.md): A `POST` request to `/payment_methods/` creates a new representation of a customer's payment instrument in Forage's database. > 📘 **Tokenization vs. Network Validation** > > **Tokenization (this… - [Retrieve a PaymentMethod](https://docs.joinforage.app/reference/get-payment-method.md): A `GET` request to `/payment_methods/{payment_method_ref}/` retrieves the specified [`PaymentMethod` object](ref:payment-methods#paymentmethod-object). You can use this endpoint to, for example: -… - [Update a PaymentMethod](https://docs.joinforage.app/reference/update-payment-method.md): A `PATCH` request to `/payment_methods/{payment_method_ref}/` modifies information about an existing `PaymentMethod`. You can add a `customer_id` if it was not set when the `PaymentMethod` was… - [Delete a PaymentMethod](https://docs.joinforage.app/reference/delete-payment-method.md): A `DELETE` request to `/payment_methods/{payment_method_ref}/` deletes a representation of a customer's payment instrument in Forage's database. Returns an empty object if the operation was… - Card Details - [Retrieve state card details](https://docs.joinforage.app/reference/retrieve-state-card-details.md): This endpoint returns a predefined list of U.S. states, associated card BINs, and acceptable PAN (Primary Account Number) lengths. The data is static and designed for consumption by SDKs and partner… - [Reports](https://docs.joinforage.app/reference/reports.md): You can use the Forage API to retrieve data about your EBT SNAP business - [Retrieve an Order Report](https://docs.joinforage.app/reference/get-order-report.md): > 📘 Fully Hosted And Custom Integrations Only > > Order Reports are only relevant to Fully Hosted and Custom integrations. Only Fully Hosted and Custom integrations generate Forage `Orders`. Use any… - [Retrieve a Payout Report](https://docs.joinforage.app/reference/get-payout-report.md): A `GET` request to `/reporting/payouts/` retrieves a [Payout Report](ref:reports#payout-summary-reports). A payout is a scheduled funds disbursement from Forage to a merchant. A payout accounts for… - [Retrieve a Payout Transaction Report](https://docs.joinforage.app/reference/get-payout-transaction-report.md): A `GET` request to `/reporting/payouts/{payout_id}/transactions/` retrieves a [Payout Transaction Report](ref:reports#payout-transaction-reports). A Payout Transaction Report includes a list of all… - [Retrieve a Transaction Report](https://docs.joinforage.app/reference/get-transaction-report.md): A `GET` request to `/reporting/transactions/` retrieves a [Transaction Log](ref:reports#transaction-reports). On success, the API returns a list of transactions created between the provided… ## Reference: Fully Hosted & Custom Endpoints - Forage Sessions - Custom - [Create a Custom Balance Check Session](https://docs.joinforage.app/reference/create-custom-balance-check-session.md): > ⚠️ FNS Requirements > > FNS prohibits balance inquiries on sites and apps that offer guest checkout. Do not use this endpoint if your customers can opt for guest checkout. > > If guest checkout is… - [Retrieve a Custom Balance Check Session](https://docs.joinforage.app/reference/view-balance-session.md): > ⚠️ Check EBT Card Balance > > This endpoint does not return a customer's EBT Card balance. If you're looking for a customer's EBT Card balance, then send a `GET` to… - [Create a Custom Payment Capture Session](https://docs.joinforage.app/reference/create-capture-session.md): A `POST` request to `/capture_sessions/` initiates a `Session` of the Forage Custom Payment Capture UI. The response payload represents the [Custom Payment Capture… - [Hosted](https://docs.joinforage.app/reference/hosted-sessions.md) - Fully Hosted - [Create a Fully Hosted Session](https://docs.joinforage.app/reference/create-session.md): A `POST` request to `/sessions/` initiates a `Session` of the Fully Hosted Forage Checkout UI. On success, the API creates a Forage [`Order`](ref:orders). The response payload represents the [Fully… - Orders - [Retrieve an Order](https://docs.joinforage.app/reference/get-order.md): A `GET` request to `/orders/{order_ref}/` retrieves the specified [`Order` object](ref:orders#order-object). The `order_ref` is the `ref` value that Forage returns in response to the request that… - [Update an Order](https://docs.joinforage.app/reference/update-order.md): A `PATCH` request to `/orders/{order_ref}/` modifies the indicated [`Order` object](ref:orders#order-object). The `order_ref` is the `ref` value that Forage returns in response to the request that… - [Cancel an Order](https://docs.joinforage.app/reference/cancel-order.md): A `POST` request to `/orders/{order_ref}/cancel/` cancels an existing `Order`. An `Order` can only be canceled if its `status` is `draft`. Cancel an `Order` to prevent it from being submitted for… - Order Payments - [Retrieve all OrderPayments for an Order](https://docs.joinforage.app/reference/get-all-payments.md): A `GET` request to `/orders/{order_ref}/payments/` retrieves all `OrderPayments` associated with the provided `order_ref`. On success, the API responds with an array of `OrderPayments`. - [Retrieve an OrderPayment](https://docs.joinforage.app/reference/get-an-order-payment.md): A `GET` request to `/orders/{order_ref}/payments/{payment_ref}/` retrieves the specified [`OrderPayment`](ref:order-payments). - [Update an OrderPayment](https://docs.joinforage.app/reference/patch-update-an-order-payment.md): > ⚠️ Update `OrderPayment` Server-Side Only > > To keep your app secure, requests to update an `OrderPayment` should only be generated on the server-side. A `PATCH` request to… - [Cancel an OrderPayment](https://docs.joinforage.app/reference/cancel-an-order-payment.md): > ⚠️ `OrderPayment`` Updates Must Be Server-Side > > To keep your app secure, requests to cancel an OrderPayment should only be generated on the server-side. A `POST` request to… - Order Refunds - [Create a refund for an entire Order](https://docs.joinforage.app/reference/refund-entire-order.md): > ⚠️ Refunding Entire Orders Must Be Server-Side > > To keep your app secure, requests to refund an entire Order should only be generated on the server-side. A `POST` request to… - [Create refunds for specific products in an Order](https://docs.joinforage.app/reference/create-refunds-by-product.md): > ⚠️ Product Refunds Must Be Server-Side > > To keep your app secure, requests to refund specific products should only be generated on the server-side. A `POST` request to… - [Create a refund for part of an Order](https://docs.joinforage.app/reference/refund-partial-order.md): > ⚠️ Partial Refunds Must Be Server-Side > > To keep your app secure, requests to refund part of an Order should only be generated on the server-side. > ⚠️ API Version Requirements > > You must use… - [Retrieve all OrderRefunds for an Order](https://docs.joinforage.app/reference/get-all-order-refunds.md): A `GET` request to `/orders/{order_ref}/refunds/` retrieves all `OrderRefunds` associated with the provided `order_ref`. On success, the API responds with an array of… - [Retrieve an OrderRefund](https://docs.joinforage.app/reference/get-an-order-refund.md): A `GET` request to `/orders/{order_ref}/refunds/{refund_ref}/` retrieves the specified refund for a given order. On success, the API responds with the… ## Reference: SDK Endpoints - [Payments](https://docs.joinforage.app/reference/payments.md) - [Create a Payment](https://docs.joinforage.app/reference/create-a-payment.md): > ⚠️ Payment Creation Must Be Server-Side > > To keep your app secure, requests to create a Payment should only be generated on the server-side. A `POST` request to `/payments/` tells Forage's… - [Retrieve all Payments for a merchant order ID](https://docs.joinforage.app/reference/retrieve-all-payments-for-merchant-order-id.md): A `GET` request to `/payments/` that includes the `external_order_id` query param retrieves a list of all of the `Payment`s related to the order. The `external_order_id` corresponds to a merchant or… - [Retrieve a Payment](https://docs.joinforage.app/reference/get-payment-details.md): A `GET` request to `/payments/{payment_ref}/` retrieves the specified [`Payment` object](ref:payments#payment-object). Use this endpoint to confirm the `status` of a `Payment`, and/or to retrieve… - Deferred Capture - [Capture an EBT or HSA/FSA Payment](https://docs.joinforage.app/reference/capture-a-payment.md): > 📘 Forage SDK Integrations And HSA/FSA Only > > This endpoint is only relevant to Forage SDK integrations and HSA/FSA payments. > > Instead of calling a front-end SDK method to capture a payment,… - [Update a Payment](https://docs.joinforage.app/reference/update-a-payment.md): > ⚠️ Update Payment Requests Server-Side > > To keep your app secure, requests to update a `Payment` should only be generated on the server-side. A `PATCH` request to `/payments/{payment_ref}/`… - Testing - [Capture a Payment during sandbox testing](https://docs.joinforage.app/reference/capture-a-payment-during-sandbox-testing.md): A `POST` request to `/payments/{payment_ref}/capture-sync/` programmatically captures an existing [`Payment` object](ref:payments#payment-object). Use this endpoint to automate sandbox testing. - [Submit a test PIN during sandbox development](https://docs.joinforage.app/reference/submit-pin-during-sandbox-testing.md): > ⚠️ Use For Sandbox Only > > Only use this endpoint during sandbox testing. It cannot be used in production. A `POST` request to `/payments/{payment_ref}/collect_pin_backend/` programmatically… - [Cancel or Void a Payment](https://docs.joinforage.app/reference/cancel-a-payment.md): A `POST` request to `/payments/{payment_ref}/cancel/` stops an existing [`Payment` object](ref:payments#payment-object) from being submitted for capture in future API calls. For EBT Payments, a… - [Authorize a Payment](https://docs.joinforage.app/reference/authorize-a-payment.md): > ⚠️ HSA/FSA Payments Only > > This endpoint can only be used for HSA/FSA payments. A `POST` request to `/payments/{payment_ref}/authorize/` performs an Authorization on an existing [`Payment`… - [Void a Payment](https://docs.joinforage.app/reference/void-a-payment-custom-checkout.md): > ⚠️ POS Terminal and HSA/FSA Payments Only > > This endpoint is only relevant to Forage EBT POS Terminal integrations and HSA/FSA payments. > 📘 For EBT Prefer Refunds Over Voids > > In most cases,… - [Payment Refunds](https://docs.joinforage.app/reference/payment-refunds.md): A `PaymentRefund` represents a refund of an existing `Payment` object. - [Create a PaymentRefund](https://docs.joinforage.app/reference/create-payment-refund.md): > ⚠️ Refund Requests Must Be Server-Side > > To keep your app secure, requests to create a PaymentRefund should only be generated on the server-side. > ⚠️ API Version Requirements > > You must use… - [Retrieve all PaymentRefunds for a Payment](https://docs.joinforage.app/reference/get-all-payment-refunds.md): A `GET` request to `/payments/{payment_ref}/refunds/` retrieves a list of all `PaymentRefunds` associated with a `Payment`. To inspect a particular `PaymentRefund`, use… - [Retrieve a PaymentRefund for a Payment](https://docs.joinforage.app/reference/get-a-payment-refund.md): A `GET` request to `/payments/{payment_ref}/refunds/{refund_ref}/` retrieves a `PaymentRefund` associated with a `Payment`. Use this endpoint to retrieve updated `receipt` and `balance` information… - [Void a PaymentRefund](https://docs.joinforage.app/reference/void-a-refund.md): > ⚠️ POS Terminal Integrations Only > > This endpoint is only relevant to Forage POS Terminal integrations. A `POST` request to `/payments//refunds//void/` reverses a… ## Reference: SDK Reference - Forage JS - [Introduction](https://docs.joinforage.app/reference/js-sdk-reference.md) - [Set up](https://docs.joinforage.app/reference/set-up.md) - [Initialize Forage JS](https://docs.joinforage.app/reference/initialize-forage-js.md): `Forage(ForageConfig)` - [Forage Elements](https://docs.joinforage.app/reference/ebt-elements.md) - [Tokenize an EBT Card](https://docs.joinforage.app/reference/store-an-ebt-card.md) - [Check the balance of an EBT card](https://docs.joinforage.app/reference/check-the-balance-of-an-ebt-card.md) - [Capture an EBT payment](https://docs.joinforage.app/reference/capture-ebt-payment.md) - [Collect an EBT Card PIN for server-side payment capture](https://docs.joinforage.app/reference/collect-an-ebt-card-pin-for-server-side-payment-capture.md) - [Tokenize a Payment Sheet](https://docs.joinforage.app/reference/tokenize-a-payment-sheet.md) - [Methods](https://docs.joinforage.app/reference/methods.md) - [clear()](https://docs.joinforage.app/reference/clear.md): `element.clear()` - [destroy()](https://docs.joinforage.app/reference/destroy.md): `element.destroy()` - [mount()](https://docs.joinforage.app/reference/mount.md): `element.mount(htmlElementId)` - [on()](https://docs.joinforage.app/reference/on.md): `element.on(elementEvent, handler)` - [Events](https://docs.joinforage.app/reference/events.md) - [change](https://docs.joinforage.app/reference/change.md) - [ready](https://docs.joinforage.app/reference/ready.md) - [Forage JS Errors](https://docs.joinforage.app/reference/forage-js-errors.md) - [Input Validation](https://docs.joinforage.app/reference/input-validation.md) ## Changelog - [Welcome to Forage](https://docs.joinforage.app/changelog/welcome-to-forage.md)