# Validate addresses for money management products Learn how to submit address information that meets Stripe validation standards. All current and future Issuing, Financial Accounts for platforms, Opal and Corporate Card accounts must meet enhanced validation for business and account representative addresses. These controls detect and prevent addresses associated with the use of registered agents, physical mailbox services, and virtual address services. > Corporate Card is integrated with Opal. Opal is Stripe’s private preview money management account that enables businesses to store money with Stripe, send or receive money using ACH and wire in the US, save recipients to pay bills, and make payments toward an Opal balance. ## Types of addresses subject to validation - **Registered agent addresses:** Designated locations where a third party receives legal documents and government notices on behalf of a business. Many companies use registered agent services, especially when operating in states where they don’t have a physical presence. - **Commercial Mail Receiving Agency addresses:** Private businesses that provide mailbox rental and mail forwarding services, such as UPS Stores, FedEx Office locations, or virtual mail services. ## Physical address requirements To comply with financial partner requirements, Stripe verifies that all accounts have a physical presence in the United States. This means Stripe can no longer allow addresses for registered agents, mailbox services, or virtual address services. These requirements apply to both: - The business entity’s address, regardless of the business type. - The address of the account representative. ## Address validation Stripe enforces several types of address validation for Issuing, Financial Accounts for platforms, Opal and Corporate Card. ### Existing validations Stripe already validates and enforces that addresses are: - Valid and deliverable US addresses. - Not PO Boxes, Highway Contract Boxes, or private mailboxes. ### New validations Stripe enforces two additional address validation requirements: - Not a Commercial Mail Receiving Agency (CMRA) address - Not a registered agent address These new validations focus on addresses that might be technically valid but don’t represent a genuine physical business presence. ## Address validation process New businesses onboarding to Issuing, Financial Accounts for platforms, Opal or Corporate Card must provide a compliant physical address that meets all validation criteria. Stripe blocks onboarding until you provide a valid physical address. ### Existing businesses Existing businesses using Issuing, Financial Accounts for platforms, Opal or Corporate Card with addresses that Stripe has identified as registered agent or CMRA are: - Notified about the address validation issue. - Given a 30-day grace period to meet the requirement. If you don’t update the address within this period, Stripe disables account capabilities until you provide a valid address. ## Integrate address validation #### Connect platform If the address validation fails, Stripe notifies you in the following ways: - Stripe lists the incomplete requirements on the Dashboard [Connect Accounts](https://dashboard.stripe.com/connect/accounts/view/v/restricted?status%5B0%5D=restricted) page for all your connected accounts that failed the address validation. - If you have a webhook integration, you receive [account.updated](https://docs.stripe.com/api/events/types.md?api-version=2025-05-28.basil&rds=1#event_types-account.updated) and [capability.updated](https://docs.stripe.com/api/events/types.md?api-version=2025-05-28.basil&rds=1#event_types-capability.updated) webhook events with details in the `requirements` object. ### Digest new error codes on requirements You can use the following error codes to confirm if your address is flagged for this control: - `invalid_address_cmra_address` - `invalid_address_registered_agent_address` To digest these new error codes in the Stripe API, you need to add `registered_agent_cmra_preview=v1` in the `Stripe-Version` [header](https://docs.stripe.com/api/versioning.md?api-version=2025-05-28.preview&rds=1&lang=curl). For example, if you use the `2025-05-28.basil` API version, you need to set the `Stripe-Version` to `2025-05-28.basil; registered_agent_cmra_preview=v1;` to access the error codes. If you don’t set the header, you get the `invalid_address` error code instead for backward compatibility. To digest these new error codes in your webhook endpoints, you need to create a new webhook config following the [Handle webhook versioning](https://docs.stripe.com/webhooks/versioning.md) guide and the [API reference](https://docs.stripe.com/api/webhook_endpoints/create.md?lang=curl#create_webhook_endpoint-api_version). Below are examples of the [requirements](https://docs.stripe.com/api/accounts/object.md?api-version=2025-04-30.basil&rds=1#account_object-requirements) section in the Accounts API or relevant webhook events when your address is flagged. ### CMRA addresses For a business address: ```json { "requirements": { "current_deadline": null, "currently_due": [ "company.address.line1", "company.address.city", "company.address.postal_code", "company.address.state" ], "errors": [ { "code": "invalid_address_cmra_address", "reason": "The address you provided appears to be associated with a mailbox or virtual address service, which we can't accept. Please update your address to proceed.", "requirement": "company.address.line1" }, { "code": "invalid_address_cmra_address", "reason": "The address you provided appears to be associated with a mailbox or virtual address service, which we can't accept. Please update your address to proceed.", "requirement": "company.address.city" }, { "code": "invalid_address_cmra_address", "reason": "The address you provided appears to be associated with a mailbox or virtual address service, which we can't accept. Please update your address to proceed.", "requirement": "company.address.state" }, { "code": "invalid_address_cmra_address", "reason": "The address you provided appears to be associated with a mailbox or virtual address service, which we can't accept. Please update your address to proceed.", "requirement": "company.address.postal_code" } ], "eventually_due": [ "company.address.line1", "company.address.city", "company.address.postal_code", "company.address.state" ], "past_due": [ "company.address.line1", "company.address.city", "company.address.postal_code", "company.address.state" ], "pending_verification": [] } } ``` For a representative’s address: ```json { "requirements": { "current_deadline": null, "currently_due": [ "person_123.address.line1", "person_123.address.city", "person_123.address.postal_code", "person_123.address.state" ], "errors": [ { "code": "invalid_address_cmra_address", "reason": "The address you provided appears to be associated with a mailbox or virtual address service, which we can't accept. Please update your address to proceed.", "requirement": "person_123.address.line1" }, { "code": "invalid_address_cmra_address", "reason": "The address you provided appears to be associated with a mailbox or virtual address service, which we can't accept. Please update your address to proceed.", "requirement": "person_123.address.city" }, { "code": "invalid_address_cmra_address", "reason": "The address you provided appears to be associated with a mailbox or virtual address service, which we can't accept. Please update your address to proceed.", "requirement": "person_123.address.state" }, { "code": "invalid_address_cmra_address", "reason": "The address you provided appears to be associated with a mailbox or virtual address service, which we can't accept. Please update your address to proceed.", "requirement": "person_123.address.postal_code" } ], "eventually_due": [ "person_123.address.line1", "person_123.address.city", "person_123.address.postal_code", "person_123.address.state" ], "past_due": [ "person_123.address.line1", "person_123.address.city", "person_123.address.postal_code", "person_123.address.state" ], "pending_verification": [] } } ``` To fix this, update your address to a physical location where you operate. If the address you previously provided accurately reflects your current physical location, you can submit a proof of address document as part of your appeal. In some cases, such as with professional service firms like law firms, a registered agent address might legitimately reflect the business’s location. ### Registered agent addresses For a business address: ```json { "requirements": { "alternatives": [ { "original_fields_due": [ "company.address.line1", "company.address.city", "company.address.postal_code", "company.address.state" ], "alternative_fields_due": [ "documents.proof_of_address.files" ] } ], "current_deadline": null, "currently_due": [ "company.address.line1", "company.address.city", "company.address.postal_code", "company.address.state" ], "errors": [ { "code": "invalid_address_registered_agent_address", "reason": "The address you provided appears to be associated with a registered agent, which we can't accept. Please update your address to proceed. If you believe this is an error, you can submit a proof of address document for review.", "requirement": "company.address.line1" }, { "code": "invalid_address_registered_agent_address", "reason": "The address you provided appears to be associated with a registered agent, which we can't accept. Please update your address to proceed. If you believe this is an error, you can submit a proof of address document for review.", "requirement": "company.address.city" }, { "code": "invalid_address_registered_agent_address", "reason": "The address you provided appears to be associated with a registered agent, which we can't accept. Please update your address to proceed. If you believe this is an error, you can submit a proof of address document for review.", "requirement": "company.address.state" }, { "code": "invalid_address_registered_agent_address", "reason": "The address you provided appears to be associated with a registered agent, which we can't accept. Please update your address to proceed. If you believe this is an error, you can submit a proof of address document for review.", "requirement": "company.address.postal_code" } ], "eventually_due": [ "company.address.line1", "company.address.city", "company.address.postal_code", "company.address.state" ], "past_due": [ "company.address.line1", "company.address.city", "company.address.postal_code", "company.address.state" ], "pending_verification": [] } } ``` For a representative’s address: ```json { "requirements": { "alternatives": [ { "original_fields_due": [ "person_123.address.line1", "person_123.address.city", "person_123.address.postal_code", "person_123.address.state" ], "alternative_fields_due": [ "person_123.verification.additional_document" ] } ], "current_deadline": null, "currently_due": [ "person_123.address.line1", "person_123.address.city", "person_123.address.postal_code", "person_123.address.state" ], "errors": [ { "code": "invalid_address_registered_agent_address", "reason": "The address you provided appears to be associated with a registered agent, which we can't accept. Please update your address to proceed. If you believe this is an error, you can submit a proof of address document for review.", "requirement": "person_123.address.line1" }, { "code": "invalid_address_registered_agent_address", "reason": "The address you provided appears to be associated with a registered agent, which we can't accept. Please update your address to proceed. If you believe this is an error, you can submit a proof of address document for review.", "requirement": "person_123.address.city" }, { "code": "invalid_address_registered_agent_address", "reason": "The address you provided appears to be associated with a registered agent, which we can't accept. Please update your address to proceed. If you believe this is an error, you can submit a proof of address document for review.", "requirement": "person_123.address.state" }, { "code": "invalid_address_registered_agent_address", "reason": "The address you provided appears to be associated with a registered agent, which we can't accept. Please update your address to proceed. If you believe this is an error, you can submit a proof of address document for review.", "requirement": "person_123.address.postal_code" } ], "eventually_due": [ "person_123.address.line1", "person_123.address.city", "person_123.address.postal_code", "person_123.address.state" ], "past_due": [ "person_123.address.line1", "person_123.address.city", "person_123.address.postal_code", "person_123.address.state" ], "pending_verification": [] } } ``` To remediate, update your address to a physical location where you operate. If the address you previously provided accurately reflects your current physical location, you can submit a proof of address document as part of your appeal. In some cases—such as with professional service firms like law firms — a registered agent address might legitimately reflect the business’s location. ### Submit an appeal You can appeal an address that Stripe incorrectly flagged as belonging to a registered agent by providing documentation that proves your business operates at that address. To submit a proof of address document, you can use the API. If Stripe flagged your address, submit one of the following documents. The documentation provided must clearly display either the name of the company or that of the company representative, along with the principal business address. - **Lease or rental agreements**: A copy of a lease or rental agreement that identifies the user as a tenant at that location. - **Mortgage statements**: Mortgage statement from the last 6 months. - **Insurance policies**: Business liability, property, or workers’ compensation insurance policies. - **Tax documents**: Tax filings from the last 24 months that include the address of operations (for example, state business tax forms). These must be filed documents. - **Financial account statements**: Bank account, credit card, or other financial statement from the last 6 months. Statements can’t be through Stripe. - **Utility bill**: Utility bill from the last 6 months that includes address of operations. - **Valid government ID**: A valid government ID such as a driver’s license or resident card. Only required for individuals, a sole proprietor, or an individual legal entity. - **Company formation documents**: Articles of Organization or Articles of Incorporation that provide the principal address of your business. ### Sample appeal integration flow #### Business address 1. Upload a document using the [File API](https://docs.stripe.com/file-upload.md). Stripe returns a file ID: ```bash curl https://api.stripe.com/v1/files \ -u sk_test_your_key: \ -F purpose=account_requirement \ -F file=@/path/to/a/proof_of_address.pdf ``` 1. Attach the document to your account by passing the file ID to the Account Update API: ```bash curl https://api.stripe.com/v1/accounts/acct_123 \ -u sk_test_your_key: \ -d documents[proof_of_address][files][0]=file_123 ``` 1. Wait for document verification to complete. You receive an `account.updated` webhook when Stripe completes the review. #### Representative's address 1. Upload a document using the [File API](https://docs.stripe.com/file-upload.md). Stripe returns a file ID: ```bash curl https://api.stripe.com/v1/files \ -u sk_test_your_key: \ -F purpose=identity_document \ -F file=@/path/to/a/proof_of_address_front.pdf curl https://api.stripe.com/v1/files \ -u sk_test_your_key: \ -F purpose=identity_document \ -F file=@/path/to/a/proof_of_address_back.pdf ``` 1. Attach the document to the representative by passing the file ID to the Person Update API: ```bash curl https://api.stripe.com/v1/accounts/acct_123/persons/person_123 \ -u sk_test_your_key: \ -d verification[additional_document][front]=file_id_front \ -d verification[additional_document][back]=file_id_back ``` 1. Wait for document verification to complete. You receive an `account.updated` webhook when Stripe completes the review. #### Direct, Opal or Corporate Card If the address validation fails, Stripe notifies you in the following ways: 1. You receive an email from Stripe outlining the incomplete requirements. 1. A user task and banner appear in your dashboard with instructions to update the address. ### Test the integration Use the following value in address `line1` field of the Accounts API or Person API to trigger different scenarios in testmode. | Description | line1 | | ----------------------------------------------- | --------------------------------------- | | CMRA address. This address fails validation. | `Address CMRA` | | RA address. This address fails validation. | `Address RA` | | Normal address. This address passes validation. | Any non PO Box, HC Box, or PMB address. | ## See also - [Physical presence requirement FAQ](https://support.stripe.com/questions/physical-presence-requirement-faq)