Skip to content

Commit 350ac36

Browse files
authored
Add state ID guide for Rhode Island (#619)
1 parent a9e78fa commit 350ac36

5 files changed

Lines changed: 129 additions & 32 deletions

File tree

src/content/guides/ri/state-id.mdx

Lines changed: 111 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,115 @@ title: State ID
33
description: Here's how to update your Rhode Island state ID or driver's license.
44
state: ri
55
category: state-id
6-
stub: true
76
---
7+
8+
import Costs from '../../../components/Costs.astro'
9+
10+
## Get prepared
11+
12+
Before you can update your state ID or driver's license with the [DMV](http://www.dmv.ri.gov/), you need to have completed these steps:
13+
14+
1. Update your name with the court and receive a certified [court order](/guides/ri/court-order) showing your name change;
15+
2. Update your name with [Social Security](/guides/social-security);
16+
3. Wait at least 24 hours for changes at Social Security to become effective.
17+
18+
<details>
19+
<summary>Do I need to receive my new Social Security card before updating my license?</summary>
20+
21+
No. Wait at least 24 hours after updating your name with Social Security and your changes will be reflected in the DMV's internal system.
22+
</details>
23+
24+
When you submit your application, you'll get a new photo taken. If you've been wanting to cut or dye your hair, now is a great time.
25+
26+
The gender marker on your ID can be changed to **M**, **F**, or **X**. No medical documentation is required.
27+
28+
## Fill out forms
29+
30+
You will need to download and complete:
31+
32+
1. [License/ID/Permit application (LI-1)](https://dmv.ri.gov/media/391/download?language=en).
33+
2. [Gender Designation for License / ID Card](https://dmv.ri.gov/media/41/download?language=en), if changing gender markers.
34+
35+
[View all DMV license forms.](https://dmv.ri.gov/forms/license-forms)
36+
37+
## Go to the DMV
38+
39+
Find your [nearest Rhode Island DMV office](https://dmv.ri.gov/locations-hours).
40+
41+
Gather and bring with you:
42+
43+
1. Your compelted LI-1 form.
44+
2. Your completed gender designation form, if changing gender markers.
45+
3. A certified copy of your name change court order.
46+
4. Your current driver's license or ID card.
47+
5. One proof of identity document showing your name and date of birth. Commonly, this is a U.S. passport or certified birth certificate.
48+
6. Two proof of residency documents. Commonly, this is a state ID, utility bill, bank statement, or lease agreement with proof of your current address.
49+
7. Cash, credit card, check, or money order for payment:
50+
51+
<Costs
52+
costs={[{
53+
title: "Update fee",
54+
amount: 28.50,
55+
required: "required"
56+
}]}
57+
/>
58+
59+
Some costs may vary depending on your age and license type. [View the full list of license fees.](https://dmv.ri.gov/licenses-permits-ids/drivers-licenses/license-fees)
60+
61+
<details>
62+
<summary>What other proof of identity documents are accepted?</summary>
63+
64+
You can bring an original document (no photocopies) of any of the following:
65+
66+
- A valid, unexpired **U.S. passport**
67+
- A **certified copy of a birth certificate** filed with a State Office of Vital Statistics or equivalent agency in the individual's State of birth;
68+
- A **Consular Report of Birth Abroad** (CRBA) issued by the U.S. Department of State, Form FS-240, DS-1350 or FS-545;
69+
- A valid, unexpired **Permanent Resident Card** (Form I-551) issued by DHS or INS;
70+
- An unexpired **Employment Authorization Document** (EAD) issued by DHS, Form I-766 or Form I-688B;
71+
- An **unexpired foreign passport** with a valid, unexpired U.S. visa affixed accompanied by the approved I-94 form documenting the applicant's most recent admittance into the U.S.;
72+
- A **Certificate of Naturalization** issued by DHS, Form N-550 or Form N-570; or
73+
- A **Certificate of Citizenship**, Form N-560 or Form N-561, issued by DHS.
74+
</details>
75+
76+
<details>
77+
<summary>What other proof of residency documents are accepted?</summary>
78+
79+
- A **utility bill** (gas, electric, telephone, cable, oil, water, sewer, satellite, heat, cell phone) with the address of residence clearly stated in the applicant’s name or in the name of a member of the applicant’s immediate family dated within the past sixty (60) days;
80+
- A **personal check or bank statement** with the applicant’s name and address of residence dated within the past sixty (60) days;
81+
- A **payroll check** with the applicant’s name and address of residence dated within the past sixty (60) days;
82+
- A **lease agreement** currently in effect. The lease agreement must contain the applicant's name and address of residence and the landlord’s name, and address. Handwritten lease agreements will not be accepted;
83+
- A **letter issued by a Rhode Island state agency or a federal agency** with the applicant's name and address of residence dated within the past sixty (60) days;
84+
- A **homeowner’s or renter’s insurance policy** for the applicant’s home or apartment with the applicant’s name and address of residence that is currently in effect;
85+
- An **automobile insurance policy** for the applicant’s motor vehicle with the applicant’s name and address of residence that is currently in effect;
86+
- A **property tax bill** for the applicant’s residence from the immediately preceding year;
87+
- A **letter from a Rhode Island shelter or halfway house** indicating that the applicant resides at the facility. Such a letter must be on letterhead, must be dated within the past thirty (30) days and must include the name and contact information of an administrator of the shelter or halfway house; or
88+
- A **jury duty summons** dated within the past sixty (60) days;
89+
- A **W-2 form** with the applicant’s name and address of residence from the immediately preceding year;
90+
- An **installment loan contract** (automobile, student loan) with the applicant’s name and address of residence that is currently in effect;
91+
- A current **Social Security Administration statement** with the applicant’s name and address of residence;
92+
- A current **pension or retirement account statement** with the applicant’s name and address of residence;
93+
- A **Rhode Island-issued firearms permit** with the applicant’s name and address if residence that is currently in effect; or
94+
- A valid **Rhode Island driver’s license or identification card**;
95+
96+
If the applicant is a minor, in addition to any of the proof of residency documents listed above, the following are accepted:
97+
98+
- A **school record from the current school year** (report card, diploma, transcript, or ID card) stating the student’s
99+
address of residence (past year if during summer vacation)
100+
- The Rhode Island driver’s license or identification card of the individual signing the minor's application.
101+
</details>
102+
103+
### What to expect
104+
105+
- At the DMV, a staff member will look over all of your documents.
106+
- You'll be asked to surrender your current ID.
107+
- You'll have a new photograph taken.
108+
109+
Employees at the DMV should not ask you for additional information beyond what’s required on the Gender Designation on a License or Identification Card form. They are not allowed to ask you about your private medical history records. No medical documentation is required to change the gender marker on your license or ID.
110+
111+
If you have problems, ask for a supervisor.
112+
113+
## Receive your new ID
114+
115+
Once your application is approved, you will receive a temporary paper ID. Most people receive their permanent ID in the mail within about two weeks. The DMV states that it may take up to 60 days, but this is uncommon.
116+
117+
Congrats! You've made it, and your ID is yours. Share a celebration in the Namesake [Discord](/chat).

src/utils/__tests__/formatCurrency.test.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,20 @@ describe("formatCurrency", () => {
1414
expect(formatCurrency(1000000)).toBe("$1,000,000");
1515
});
1616

17-
it("should round decimal values to the nearest dollar", () => {
18-
expect(formatCurrency(99.99)).toBe("$100");
19-
expect(formatCurrency(99.49)).toBe("$99");
20-
expect(formatCurrency(50.5)).toBe("$51");
21-
expect(formatCurrency(50.4)).toBe("$50");
22-
});
23-
2417
it("should handle zero", () => {
2518
expect(formatCurrency(0)).toBe("$0");
2619
});
20+
21+
it("should handle cents", () => {
22+
expect(formatCurrency(1.25)).toBe("$1.25");
23+
expect(formatCurrency(9.99)).toBe("$9.99");
24+
25+
// always include two digits when cents are present
26+
expect(formatCurrency(1.5)).toBe("$1.50");
27+
expect(formatCurrency(1.5)).not.toBe("$1.5");
28+
29+
// exclude cents when zero
30+
expect(formatCurrency(1.0)).toBe("$1");
31+
expect(formatCurrency(1.0)).not.toBe("$1.00");
32+
});
2733
});

src/utils/__tests__/formatTotalCosts.test.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,20 +46,4 @@ describe("formatTotalCosts", () => {
4646
];
4747
expect(formatTotalCosts(costs)).toBe("$1,000–$3,000");
4848
});
49-
50-
it("should format currency without decimal places", () => {
51-
const costs: FormCost[] = [
52-
{
53-
amount: 1000.99,
54-
title: "Required item with decimals",
55-
required: "required",
56-
},
57-
{
58-
amount: 2000.5,
59-
title: "Optional item with decimals",
60-
required: "notRequired",
61-
},
62-
];
63-
expect(formatTotalCosts(costs)).toBe("$1,001–$3,001");
64-
});
6549
});

src/utils/formatCurrency.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
export const formatCurrency = (cost?: number | null) => {
2+
const fractionDigits = Number.isInteger(cost) ? 0 : 2;
3+
24
return Intl.NumberFormat("en-US", {
35
style: "currency",
46
currency: "USD",
5-
maximumFractionDigits: 0,
7+
minimumFractionDigits: fractionDigits,
8+
maximumFractionDigits: fractionDigits,
69
}).format(cost ?? 0);
710
};

src/utils/formatTotalCosts.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
11
import type { FormCost } from "../constants/forms";
2+
import { formatCurrency } from "./formatCurrency";
23

34
export type { FormCost as Cost };
45

56
export const formatTotalCosts = (costs?: readonly FormCost[] | null) => {
67
if (!costs || costs.length === 0) return "Free";
78

8-
const formatCurrency = (amount: number) =>
9-
amount.toLocaleString("en-US", {
10-
style: "currency",
11-
currency: "USD",
12-
maximumFractionDigits: 0,
13-
});
14-
159
const requiredTotal = costs
1610
.filter((cost) => cost.required !== "notRequired")
1711
.reduce((acc, cost) => acc + (cost.amount ?? 0), 0);

0 commit comments

Comments
 (0)