# Circle Programmable Wallets Writeup

By [Untitled](https://paragraph.com/@0x1ce2cd6b2b62fac9614c0d38114893de30785d05) · 2024-04-19

---

**Circle Programmable Wallets: A Comprehensive Guide**
======================================================

**Introduction to Circle Web3 Services & Programmable Wallets**
---------------------------------------------------------------

Circle is a global financial technology firm that enables businesses of all sizes to harness the power of stablecoins and public blockchains for payments, commerce, and financial applications worldwide. Circle's suite of Web3 services includes **Circle API**, **Circle SDK**, and **Circle Platform**.

One of the key offerings from Circle is **Programmable Wallets**, which are non-custodial wallets that allow developers to build, deploy, and manage wallets for their users. These wallets are programmable, meaning they can be customized to meet specific business needs, such as implementing compliance rules, managing user permissions, and automating transactions.

**The Benefits of Circle’s Programmable Wallets**
-------------------------------------------------

Circle's Programmable Wallets offer several benefits over traditional wallets:

1.  **Customizability**: Programmable Wallets can be customized to meet specific business needs, allowing for a more tailored user experience.
    
2.  **Compliance**: Programmable Wallets can be configured to comply with various regulations, making it easier for businesses to operate in different jurisdictions.
    
3.  **Security**: Programmable Wallets are non-custodial, meaning users have full control over their funds. Circle also provides robust security features to protect user assets.
    
4.  **Scalability**: Programmable Wallets can handle a large number of transactions, making them ideal for businesses that need to scale quickly.
    

**How USDC and Programmable Wallets can help scale real world solutions**
-------------------------------------------------------------------------

USDC (USD Coin) is a stablecoin that is pegged to the US dollar. It is issued by Circle and is fully reserved, meaning each USDC is backed by one US dollar held in reserve. USDC is built on the Ethereum blockchain and is fully compliant with ERC-20 standards.

The combination of USDC and Programmable Wallets can help scale real-world solutions in several ways:

1.  **Fast and Cheap Transactions**: USDC transactions are fast and cheap, making it ideal for businesses that need to send and receive payments quickly and efficiently.
    
2.  **Stability**: USDC is pegged to the US dollar, making it a stable store of value. This stability can help businesses manage their cash flows more effectively.
    
3.  **Compliance**: USDC is fully compliant with various regulations, making it easier for businesses to operate in different jurisdictions.
    

**Step-by-Step Guide to Getting Started with Circle’s Programmable Wallets**
----------------------------------------------------------------------------

### **Create a New User**

To create a new user, you need to send a POST request to the `/users` endpoint. Here's an example using the Circle API:

curl -X POST

[https://api-sandbox.circle.com/v1/users](https://api-sandbox.circle.com/v1/users)

\-H 'Authorization: Bearer ' -H 'Content-Type: application/json' -d '{ "firstName": "John", "lastName": "Doe", "email": "[john.doe@example.com](mailto:john.doe@example.com)","phoneNumber": "+12345678901" }' **Acquire Session Token** To generate a session token, you need to send a POST request to the `/sessions` endpoint. Here's an example: curl -X POST [https://api-sandbox.circle.com/v1/sessions](https://api-sandbox.circle.com/v1/sessions) -H 'Authorization: Bearer ' -H 'Content-Type: application/json' -d '{ "user": "", "password": "" }' **Initialize the User** To initialize the user, you need to send a POST request to the `/users/{user_id}/wallets` endpoint. Here's an example: curl -X POST [https://api-sandbox.circle.com/v1/users/](https://api-sandbox.circle.com/v1/users/) /wallets -H 'Authorization: Bearer ' -H 'Content-Type: application/json' -d '{ "currency": "USDC" }' **Initiate a Transfer** To initiate a transfer, you need to send a POST request to the `/payment-initiations` endpoint. Here's an example: curl -X POST [https://api-sandbox.circle.com/v1/payment-initiations](https://api-sandbox.circle.com/v1/payment-initiations) -H 'Authorization: Bearer ' -H 'Content-Type: application/json' -d '{ "amount": "amount": 100, "currency": "USDC" }, "sender": { "type": "WALLET", "id": "" }, "receiver": { "type": "WALLET", "id":

---

*Originally published on [Untitled](https://paragraph.com/@0x1ce2cd6b2b62fac9614c0d38114893de30785d05/circle-programmable-wallets-writeup)*
