How to Refund a Customer Deposit using NetSuite SuiteTalk

When refunding a NetSuite CustomerRefund or CashSale you’ll add it to apply_list:

refund.apply_list = { apply: [ { doc: 123, # internalId of the CustomerRefund apply: true } ] }

Refunding a CustomerDeposit works a bit differently. If you inspect the SuiteTalk XML response for a CustomerRefund created for a CustomerDeposit it will appear under the apply_list XML tag. If you use that XML tag when creating the CustomerRefund you’ll get the following error:

Unable to find a matching line for sublist apply with key

Instead, you need to use the deposit_list tag:

refund.deposit_list = { customer_refund_deposit: [ { doc: 123, # internalId of CustomerDeposit apply: true } ] }

Continue Reading

7 Categories to Help Guide Your 2016 Goals

Results follow clarity, and clarity comes from clear definition. Writing is the best way to clearly define your thoughts (one of the reasons you should start a blog!).

Here are my goal categories, in order of long-term priority. Explicitly defining these categories has helped me during my goal planning process to identify which categories needs the most attention this upcoming year, and ensure that my goals align against these categories:

Spiritual Marriage Health Intellectual Financial Work Relationships

This ordering doesn’t mean that work won’t come before my intellectual life (i.e. reading, conferences, learning, etc). It does mean, for me, over the long-term I need to ensure that my intellectual life is made a priority over work success.

Although simple, the exercise of defining and prioritizing the different categories of your life, is incredible important.

Continue Reading

2015 Goals Retrospective

I’ve been making intentional yearly goals using Michael Hyatt’s Best Year Ever program for the last couple years. The simple workbook that Michael provides is effective in reviewing the past year, and defining goals for the upcoming year.

A “retrospective” is a process common in Agile Software Development, but I’ve started applying it my personal life planning lately. I made a lot of progress on key goals this past year, but still made a lot of mistakes; below is a retrospective on my 2015 goals.

Here’s what worked:

Getting clear on my goals, and the reasons (or motivation) behind those goals. Adjusting my actions and strategies to align against my goals.

Here’s what didn’t work:

I didn’t track my progress against my goals in a consistent and disciplined way. Although my goals were trackable (a key element of a successful goal!) I didn’t track against the metrics embedded in the goal. I didn’t adjust my actions and strategy, even though it was clear that my original strategy wasn’t bringing me towards my goals fast enough–and in some cases–was just the plain wrong strategy. I didn’t have a process in place to remove goals that weren’t right anymore. A goal that makes sense at the beginning of the year may not make sense mid-way through the year, and that’s ok.

My plan is to fix what went wrong with two simple tweaks:

I’m setting up a monthly recurring task in my task management application (todoist) to review progress on goals in a simple google spreadsheet. I’ve blocked off a day each quarter for a “quarterly checkin” to ensure that 1) all my goals are still the right goal and 2) the strategy and actions aligned against each goals are correct.

I’m thrilled to jump into 2016 with all I’ve got. I’m excited about these changes to my goal planning process; I’ll report back next year to see if it worked!

Continue Reading

What a Freezing Cold Pond Taught Me

A couple weeks ago, I was on a hike in a state park with some old friends. Part of the hike included a small pond with a great dock. All of us walked out on the dock, and continued talking while enjoying the view. It was mid-November and was a really cold day.

One of the guys stripped down and jumped into the pond.

A couple minutes later a couple of the guys followed.

After getting out of the pond and shivering for the next couple minutes, they all felt great; invigorated by the experience.

It’s easy to get comfortable, and resist making a hard decision or a large change. This experience reminded me that it’s possible to do something incredibly uncomfortable or challenging and come out of it just fine, and in most cases much better.

The fears that often keep me from making a hard decision or doing something risky can be easily eliminated by remembering how resilient, creative, and innovative one can be when under pressure.

Continue Reading

Determine Deposited Status of CustomerRefunds in NetSuite

Most payment and refund records in NetSuite have a straightforward way to determine if they’ve been deposited or not. The CustomerRefund is one exception: there is no way to determine from the GUI, or from the SuiteTalk API response for a CustomerRefund, if a given CustomRefund has been linked to a deposit record.

However, you can search for CustomerRefunds which are deposited or undeposited using a couple poorly documented search filters:

NetSuite::Records::CustomerRefund.search( criteria: { basic: [ { field: 'type', operator: 'anyOf', value: [ '_customerRefund' ] }, { field: 'applyingLinkType', operator: 'noneOf', value: [ '_depositRefundCheck' ] }, { field: 'mainLine', value: true }, { field: 'account', operator: 'anyOf', # undep funds account reference value: [ NetSuite::Records::RecordRef.new(internal_id: 6) ] } ] }, preferences: { page_size: 250 } )

Continue Reading

Are You Being Deliberate About Long-term Goals?

Recently, I met with a mentor about some of my past and future goals. After listening and understanding my goals, he started to dive into the motivation behind my goals.

Why did I want to build that product? Why was I interested in that type of business? What did I want my life outside of work to look like? What type of people do I enjoy working with? Am I working with those people? What type of work did I enjoy? What type of work am I excellent at? What type of lifestyle do I want to live?

I had good answers to the first round of questions, but as he kept digging I realized my answers were becoming more and more thin, and I had a lot of thinking to do.

I’m a planner by nature. I’m a checklist-driven high achiever who loves to build, create, and get things done. What the questions by this trusted mentor made me realize is my thinking and planning had been very short-term and short sighted.

My goals and ideas were aimed at the next 1-3 years and not the next 5, 10, or 15 years.

He challenged me to get intentional. To be deliberate about defining what I want to achieve. To get clarity on what I want all aspects of my life to look like: professional, family, spiritual, financial, social, etc. I was challenged to define in detail what I’m excellent at, what there is a market for, and what I’m passionate about; and to develop and find opportunities at the intersections of those three things.

It’s our duty to strive towards greatness in our lives, and through my time with this mentor I realized that I was falling short. Are you being deliberate and intentional about defining and striving towards greatness in your life?

Continue Reading

Get a Dedicated, Free, High Quality Conference Line

Premium services often end up being cheaper.

This doesn’t meant that all premium services are expensive. Systems are being disrupted at such a rapid pace you can often find incredible services – like a free virtual fax machine – completely free.

One of these services is UberConference. Even if you run a one man shop (like I do!) you should signup for UberConference and use it exclusively for calls.

Here’s why:

Hangouts is not reliable for phone calls. They have a great dial out feature, but I’ve been on a couple calls where the call connection kept dropping out. It was embarrassing and made me lool sloppy. Calling someone’s cell, or having them call you, often creates a coordination problem. What if you or they are a couple minutes late? You then have to call again, text them, email, etc to adjust coordination. Using a conference line eliminates this problem completely.

I’ve also found that a call is often more effective than trying to use a video conference, especially if it’s a one-off conversation or if it’s more of a prospecting call. Phone calls are low friction and globally compatible: everyone has a phone and can use it from anywhere. Video conferencing software still frequently fails and can make the start of a conversation awkward and jerky while you both try to get your conference software working.

Continue Reading

Why the Right Premium Services are Always Cheaper

By nature, I’m frugal. I love getting a great deal, and getting the most of out of my purchases. When I was fifteen I got a new MacBook Pro for free by working those “get a free MacBook pro” ponzi schemes online: my obsession with a great deal started early.

I’ve learned that it’s often worth paying for premium services when your time is at stake. Not only your current time, but time that a premium service could possibly save in the future.

Opportunity cost is a real thing: it’s important to consider what you can’t do or time that could be possibly spent on fixing a future problem with the service or product.

Here are a couple of failures from recent memory:

Low Cost HSAs. I have a high deductible health insurance plan coupled with a health savings account. I picked one from a big name bank, with average ratings, and the best fee structure. Wrong choice: the time spent on phone, faxes (no ability to communicate over email??), etc have incurred most cost in terms of time than I ever saved in fees. Local Banks. My local bank has a great fee structure and a convenient location nearby. However, they are lagging behind in keeping up with tech advancements. Because of their remote deposit limitations, I’ve lost lots of time driving to and from the bank. I should have signed up with Simple or BoA. Budget Home Router. Anytime I spend fiddling with router settings is time lost on better, more interesting problems. I used to attempt to save money on routers: I now buy the most expensive router I can get. Price Shopping. Amazon has great shipping, customer service, review system, etc. It isn’t always the cheapest. However, it’s not worth my time to shop around for a better price. Amazon is nearly always within 10-20% of the best price – and most of the time it is the best price out there. It’s not worth my time to price shop. Low Cost Phone Service. One dropped business call and the $10 you saved that month on your cell phone bill most likely isn’t worth the perceived sloppiness on your end.

Continue Reading

Three Financial Automation Techniques

I’m a huge fan of outsourcing and automating everything, even rarely used tools like faxing. Time is my most valuable resource: and although I’m far from perfect at this, I try to eliminate, automate, or delegate everything that isn’t essential for me to do.

Here is a snapshot of the toolkit I use to automate personal finance.

Automate All Bill Payments

Do you spend any time manually paying bills each month? YES! You can automate this and, if you are near a beach, you can write “relax” in the sand just like the above photo with all of your extra time.

All credit card payments can be automated. Login to your credit cards online portal and setup auto-pay; pay the full balance off every month. Do you need to write a check for rent or other expenses? This can be automated as well. Most banks allow you to schedule a monthly recurring checks to residential or business addresses. If your bank does not allow for this, find another that does (Bank of America or PNC is great in this regard). Does the monthly cost of the service fluctuate? Ask the provider if you can negotiate a flat monthly fee and settle up any balance differences on a quarterly, bi-yearly, or (best of all) a yearly basis. Is the provider not keen with a flat fee? Ask if you can pay a flat fee above the monthly average and then deduct any overpayment from the last payment in each quarter/year. If he’s not willing to work with you here – find another provider. It’s not worth your time to have to remember to pay that one extra bill. Your goal is complete financial automation! Need to pay friends or family for a meal or other event? Use Cash.me to sent payment when it’s needed, rather than having to remember later. No fees, easy to setup, and money is transferred directly into the recipients bank account. Some services (ex: car insurance) allow for quarterly payments, often with a discount. Leverage financial discipline to pre-pay for these expenses, saving on the total cost of the service and eliminating the need to remember to pay every month. Tracking Spending Across All Accounts

I aggregate transactions across all accounts (checking, savings, credit cards, investments, etc) into a single system. This means I never have to login to individual accounts. I only login to a single account.

There are a bunch of systems out there for this, I use Mint. Here’s how to use Mint to implement a budget:

Create a detailed budget in a google sheet. Recreate the budget in your google sheet in Mint. You will need to consolidate certain budget categories into a larger budget item to reduce the transaction categorization time in mint. For instance, you might have a “health insurance” and “gym” budget in your google sheet. I would recommend managing that as a single budget item in Mint “Health”. I find it’s easier to have fewer categories, Mint does better at auto-categorizing transactions with fewer categories. Check how you are doing against your budget on a weekly, bi-weekly, or even monthly basis. As you start to move closer to your ideal budget, you can check your Mint account less – further freeing up more time and clearing your mind of the mental clutter of worrying about making sure finances are taken care of.

A side benefit here is it makes it possibly to easily scale the number of accounts you have without it becoming more time consuming or complicated to manage. This is very useful if you are looking to churn cards to make thousands per year.

Automated Savings & Investing

Constraints create results.

Remember when you were under a hard deadline? You completed the project.

If there is one concept from Rich Dad, Poor Dad that is worth remembering, it’s pay yourself first: contribute to retirement and savings, and figure out how to make the rest of your monthly expenses fit into what is left over.

Automating your savings and investment contributions at the beginning of your pay period eliminates the possibility that you’ll spend money earmarked for investment and savings. Here’s how to set it up:

Open a Betterment account. It will withdraw your investment contribution on a weekly basis. A weekly contribution will enable you to view your retirement contribution in the weekly financial email report that Mint sends. Betterment is a great service – software based automated investing. Set your risk tolerance, and Betterment will automatically rebalance your portfolio and harvest any tax benefits from selling losses. It’s not a “perfect” portfolio, but it’s automated, a bit better than a standard Vanguard account, and gets you 80% of the results with very little effort. Open a high yield savings account. Although rates are still very low, they yield 5-10x the standard savings account and as interest rates rise the delta between a online-only high-interest savings account will only increase. Plus, online-only savings accounts have more advanced automatic contribution functionality compared to traditional banks.

Obviously, I am not offering professional advice. Don’t trust anything that is written here. This just is a summary of what I’ve learned and what has worked for me last couple years.

Continue Reading

How to Find the NetSuite Web Services Account Number

Finding the account number for NetSuite’s SuiteTalk WebService API isn’t very straightforward. This number is required for any applications with connect to NetSuite via their SuiteTalk API.

Navigate to the SuiteTalk preferences via “Setup > Integration > Web Services Preferences”, by searching for “page: Web Services Preferences” in the global search bar, or by visiting this URL (may not work depending on your NetSuite data center). You’ll see the following screen containing the Account Number (also called the Account ID):

Some things to keep in mind:

The account number is not always a number. It can be a string of letters. A sandbox and production account number is identical The “Disable Service SuiteScript and Workflow Triggers” checkbox can have massive effects on your SuiteTalk integration. SuiteScripts and Workflows can trigger fatal errors in your SuiteTalk calls which are impossible to debug without diving into the SuiteScripts embedded within a NetSuite instance.

Continue Reading